Я пытаюсь tar
набор файлов в каталоге, названном 'my_directory' и, удаляет оригиналы при помощи команды:
tar -cvf files.tar my_directory --remove-files
Однако это только удаляет отдельные файлы в каталоге а не самом каталоге (который является тем, что я указал в команде). Что я пропускаю здесь?
Править:
Да, я предполагаю, что опция 'удалять-файлов' является довольно литеральной. Хотя я также нашел страницу справочника неясной на той точке. (В Linux я склонен не действительно различать очень каталоги и файлы так очень, и забывать иногда, что они не то же самое). Похоже, что согласие состоит в том, что это не удаляет каталоги.
Однако мой основной запрос указывает для выяснения у этого вопроса на основы от обработки tar полных путей. Поскольку необходимо указать относительный путь к file/s, который будет сжат, поэтому необходимо измениться на родительский каталог, чтобы смолить его правильно. Поскольку я вижу, что это использовать любой вид последующей команды 'комнаты' потенциально опасно в той ситуации. Таким образом я надеялся упростить вещи, заставляя сам tar сделать удаление.
Например, вообразите резервный сценарий, где каталог для резервного копирования (т.е. tar) включен как переменная оболочки. Если то значение переменной оболочки плохо вводилось, возможно, что результатом могли быть удаленные файлы из любого каталога, в котором Вы, оказалось, были в последний раз.
Вы пропускаете часть, которая говорит --remove-files
опция удаляет файлы после добавления их в архив.
Вы могли следовать за архивом и операцией удаления файла с командой как,
найдите/path/to/be/archived/-глубину - тип d - пустым - должностное лицо rmdir {} \;
Обновление: можно интересоваться чтением этого короткого обсуждения Debian,
Ошибка 424692: - удалять-файлы жалуются, что каталоги, "измененные, поскольку, мы читаем его".
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