
Я получаю файлы через службу с нерегулярными интервалами и мне нужно, чтобы они были доступны в одной папке в течение 72 часов, прежде чем будут заархивированы в другой папке. Я хотел бы автоматизировать этот процесс. В идеале это была бы служба, которая следит за папкой «in use» на предмет новых файлов, отмечает время их поступления, а затем перемещает их в архив через 3 дня.
В настоящее время я запускаю запись crontab, которая запускается каждые 72 часа, чтобы переместить все содержимое используемой папки в папку архива. Это вызывает проблему синхронизации между окном доступности для данного файла и его перемещением, когда он больше не нужен.
решение1
Что-то вроде этого будет работать:
find /source/location -maxdepth 1 -mtime +3 -type f -exec mv "{}" /destination/location/ \;
Как это работает:
find
будет искать предметы в/source/location
-maxdepth 1
ограничит поиск только указанным каталогом, игнорируя подкаталоги-mtime +3
ограничит результаты 3 днямиили старше-type f
ограничит результаты только файлами-exec
выполнит команду по этим результатам, в данном случае этоmv
"{}"
find
вот куда пойдет результат\;
сообщаетfind
, что переданная командаexec
завершена
Добавьте это в задание cron и пусть оно запускается каждый час, если хотите. Будут перемещены только файлы, которым 72 часа или больше