Папки сжатия, более старые, чем x дни

В /opt/abc У меня есть путь, где новая папка ежедневно создается. В той папке создается серия файлов.

Я хотел бы запустить скрипт каждое воскресенье в 2:00 и сжать каждую папку, которая является более старой, чем 2 дня. Я не хотел бы иметь все сжатое до одной папки, но каждой папки, которая будет сжата индивидуально. Если сжатие успешно, то исходная папка может быть удалена.

Я попытался создать сценарий, но все, что он делает, должно сжать их до единственного файла. также это не удаляет исходные папки.

Как я должен продолжить двигаться?

0
задан 3 July 2015 в 16:06

3 ответа

Можно использовать xargs-n 1, чтобы только передать единственный аргумент файла по каналу в сжатие команда.

Быть осторожным относительно пробелов.

0
ответ дан 31 July 2019 в 09:07

Эта единственная команда должна сделать задание, таким образом, это может просто быть введено в Ваш crontab:

find /opt/abc/* -maxdepth 0 -mtime +2 ! -name '*.tar.gz' -exec tar czf {}.tar.gz {} \; -exec rm -rf {} \;

я не протестировал его, что полностью, но я уверен, что это случайно не удалит материал.

Это, однако, удалит архивы, если у них будет то же имя как рассматриваемый каталог перед эти .tar.gz, как tar GNU перезапишет, если переключатель создания, c, будет дан. Будет более безопасно, если Вы заархивируете в другой каталог:

find /opt/abc/* -maxdepth 0 -mtime +2 ! -name '*.tar.gz' -exec tar czf /opt/abcompressed/{}.tar.gz {} \; -exec rm -rf {} \;

кроме того, архивы будут содержать структуру каталогов /opt/abc/<dirname>/<files>, который я не смог работать вокруг все же.

0
ответ дан 31 July 2019 в 09:07
find /path/to/directory -mtime +2 -exec ls "{}" \;

полезный отрывок для списка файлов более чем 2 дня, хотя он только считает целые дни, и существует элемент округления, которое происходит там, так использование минут с -mmin, опция может работать лучше. Я также видел, что люди заменяют -exec print0 и передают вывод по каналу к xargs, необычные имена файлов дескрипторов лучше, чем echo были бы. Можно определить, что тип файла find ищет также, чтобы заставить его только найти каталоги, я думаю, что это -type опция

, которую можно заменить ls в команде с другими командами, я часто использую ls, чтобы удостовериться, что я доволен выводом, затем заменяю его mv /path/to/target, когда я удаляю файлы старше определенного возраста. Я предполагаю, что Вы могли использовать tar команда вместо ls для достижения сжатия, которое Вы хотите.

Вы могли написать сценарий этого и назвать сценарий как cron, задание, cron является планировщиком сценария на Ubuntu (и другие системы Linux).

, Который должен начать Вас!

0
ответ дан 31 July 2019 в 09:07

Другие вопросы по тегам:

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