Как смолить каталог и затем удалить оригиналы включая каталог?

Я пытаюсь tar набор файлов в каталоге, названном 'my_directory' и, удаляет оригиналы при помощи команды:

tar -cvf files.tar my_directory --remove-files

Однако это только удаляет отдельные файлы в каталоге а не самом каталоге (который является тем, что я указал в команде). Что я пропускаю здесь?

Править:

Да, я предполагаю, что опция 'удалять-файлов' является довольно литеральной. Хотя я также нашел страницу справочника неясной на той точке. (В Linux я склонен не действительно различать очень каталоги и файлы так очень, и забывать иногда, что они не то же самое). Похоже, что согласие состоит в том, что это не удаляет каталоги.

Однако мой основной запрос указывает для выяснения у этого вопроса на основы от обработки tar полных путей. Поскольку необходимо указать относительный путь к file/s, который будет сжат, поэтому необходимо измениться на родительский каталог, чтобы смолить его правильно. Поскольку я вижу, что это использовать любой вид последующей команды 'комнаты' потенциально опасно в той ситуации. Таким образом я надеялся упростить вещи, заставляя сам tar сделать удаление.

Например, вообразите резервный сценарий, где каталог для резервного копирования (т.е. tar) включен как переменная оболочки. Если то значение переменной оболочки плохо вводилось, возможно, что результатом могли быть удаленные файлы из любого каталога, в котором Вы, оказалось, были в последний раз.

30
задан 31.10.2014, 17:57

3 ответа

Вы пропускаете часть, которая говорит --remove-files опция удаляет файлы после добавления их в архив.

Вы могли следовать за архивом и операцией удаления файла с командой как,

найдите/path/to/be/archived/-глубину - тип d - пустым - должностное лицо rmdir {} \;


Обновление: можно интересоваться чтением этого короткого обсуждения Debian,
Ошибка 424692: - удалять-файлы жалуются, что каталоги, "измененные, поскольку, мы читаем его".

12
ответ дан 07.12.2019, 09:17

Начиная с --remove-files опция только удаляет файлы, Вы могли попробовать

tar -cvf files.tar my_directory && rm -R my_directory

так, чтобы каталог был удален только если tar возвращает статус выхода 0

19
ответ дан 07.12.2019, 09:17
source={directory argument}

например.

source={FULL ABSOLUTE PATH}/my_directory

 

parent={parent directory of argument}

например.

parent={ABSOLUTE PATH of 'my_directory'/

 

logFile={path to a run log that captures status messages}

Затем Вы могли выполнить что-то вроде:

cd ${parent}

tar cvf Tar_File.`date%Y%M%D_%H%M%S` ${source}

if [ $? != 0 ]

then

 echo "Backup FAILED for ${source} at `date` >> ${logFile}

else

 echo "Backup SUCCESS for ${source} at `date` >> ${logFile}

 rm -rf ${source}

fi
1
ответ дан 07.12.2019, 09:17

Теги

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