Задание cron для архивирования файлов старше xyz дней

Я хотел бы заархивировать все файлы старше Xdays. файлы находятся в /home/user1/, и я хотел бы переместить архив в /home/user1/folder_backup/

я работаю на Ubuntu Server 12

2 ответа

Ваш друг возможно logrotate, Создать my_config_file конфигурационный файл с такими директивами, как:

/home/user1/ {
  olddir /home/user1/folder_backup
}

Тогда позвони logrotate my_config_file в вашем crontab.

Вы, вероятно, должны взять кофе и сделать man logrotate, Это может иметь дело со сжатием, вращением и кухонной раковиной. Это действительно стандарт для такого рода задач.

Если вам действительно нужно точно контролировать количество дней, скажем, 10, вы можете пойти с наивным find /home/user1 -mtime +10 -exec mv {} /home/user1/folder_backup/ \; но это не решит все связанные с этим проблемы (всплывающие файлы, ротация и т. д.).

Если вы хотите написать свой собственный сценарий, обычной практикой является получение времени последнего изменения каждого файла (во времени unix), помещение этой информации в массив (modtime - имя файла) и начало перемещения тех, которые вы хотите заархивировать.

Например, если время сейчас 1372174701 и вы хотите архивировать файлы старше недели, вы переместите все файлы, для которых время их изменения удовлетворяет следующему условию:

время модификации < 1372174701 - 604800

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