Удалить каталоги после сжатия с помощью tar

Попробуйте вручную размонтировать и смонтировать раздел в командной строке. Кстати, проверьте, нет ли ошибок в dmesg. Можете ли вы предоставить вывод «ls -alh»?

0
04.09.2020, 00:03
1 ответ

Я предполагаю, что --remove-filesзаставляет tarудалить исходный каталог после создания архива. Утилита findне знает, что каталог исчез, и все равно попытается войти в него, чтобы найти другие вещи, соответствующие ее критериям поиска.

Чтобы не вводить каталоги, из которых вы создаете архивы, добавьте --pruneв конце команды find:

find rootDirectory/ -mindepth 2  -type d  ! -name '*.bz2' \
    -exec  tar --remove-files -cjf {}.tar.bz2 {}  \; --prune

Первичный --pruneприказывает findудалить этот путь поиска из путей для исследования, чтобы он не пытался войти в этот каталог (, которого больше не существует ).

Мне кажется, что в этом случае findвам, вероятно, не нужен, поскольку вы будете создавать tarархивы всех каталогов на два уровня ниже rootDirectory. Это было бы легко сделать с помощью цикла:

for dir in rootDirectory/*/*/; do
    tar --remove-files -cj -f "${dir%/}.tar.bz2" "$dir"
done

Единственная разница здесь в том, что вы пропустите каталоги со скрытыми именами.

2
18.03.2021, 23:07

Теги

Похожие вопросы