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

Linux - регулярное перемещение содержимого каталогов

Партнеры нашей компании по сотрудничеству загружают файлы (обычно размером несколько ГБ) в каталог на одном из наших внешних серверов.
Из этого каталога я перенесу их в нашу внутреннюю сеть, где они будут в конечном итоге использованы нашими аналитиками.

Пока что загрузка решается с помощью chroot jail и работает нормально, как и то, что происходит, когда файлы поступают в нашу внутреннюю сеть.

Однако передача в нашу внутреннюю сеть проблематична. Я просто синхронизирую их с помощью --remove-source-files и находю, чтобы удалить пустые каталоги.
Дело в том, что интервал опроса задания cron в каталоге должен быть низким (мы бы предпочли каждую минуту), в то время как время передачи довольно велико (наш офисный DSL медленный), и, очевидно, мы не хотим начинать загрузку один и тот же файл каждые 5 минут.
Есть ли хорошее решение этой проблемы? Я мог бы переместить содержимое во временный каталог, а затем оттуда rsync, но мне кажется, что существует более элегантное решение.

Lockrun был разработан специально для этого варианта использования:

$ crontab -l
* * * * * lockrun --lockfile=/tmp/.partner-sync -- rsync src/ dest/

Это срабатывает каждую минуту, но запускается только в том случае, если /tmp/.partner-sync еще не заблокирован.

В конце концов, я пошел с стадо просто потому, что lockrun (о котором упоминал Даррен Чемберлен) не имеет поддерживаемого пакета deb.