Я хочу заархивировать все файлы старше 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