Назад | Перейти на главную страницу

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

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

Я использую сервер Ubuntu 12

Ваш друг возможно logrotate. Создать my_config_file config с такими директивами, как:

/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