Задание 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