Автоматическое перемещение новых файлов по истечении заданного периода времени

Автоматическое перемещение новых файлов по истечении заданного периода времени

Я получаю файлы через службу с нерегулярными интервалами и мне нужно, чтобы они были доступны в одной папке в течение 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 часа или больше

Связанный контент