В /opt/abc
У меня есть путь, где новая папка ежедневно создается. В той папке создается серия файлов.
Я хотел бы запустить скрипт каждое воскресенье в 2:00 и сжать каждую папку, которая является более старой, чем 2 дня. Я не хотел бы иметь все сжатое до одной папки, но каждой папки, которая будет сжата индивидуально. Если сжатие успешно, то исходная папка может быть удалена.
Я попытался создать сценарий, но все, что он делает, должно сжать их до единственного файла. также это не удаляет исходные папки.
Как я должен продолжить двигаться?
Можно использовать xargs-n 1, чтобы только передать единственный аргумент файла по каналу в сжатие команда.
Быть осторожным относительно пробелов.
Эта единственная команда должна сделать задание, таким образом, это может просто быть введено в Ваш 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>
, который я не смог работать вокруг все же.
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).
, Который должен начать Вас!