2013-06-25 3 views
0

У меня есть сервер на hostname.com/files. Всякий раз, когда файл загружен, я хочу его загрузить.Поддерживаемые файлы обновляются с удаленного сервера

Я думал о создании скрипта, который постоянно проверял каталог files. Он будет проверять временную метку файлов на сервере и загружать их на основе этого.

Можно ли проверить временную метку файлов с помощью сценария bash? Есть ли лучшие способы сделать это?

Я мог бы просто загрузить все файлы на сервере каждые 1 час. Было бы лучше использовать работу cron?

+3

Используйте 'rsync', он просто скопирует файлы, которые являются новыми или были изменены. – Barmar

ответ

0

Если у вас есть регулярный промежуток времени, когда вы хотите обновить свои файлы, да, задача cron - это, вероятно, ваш лучший выбор. Просто напишите сценарий, который проверяет и запускает это с почасовым интервалом.

Как отметил @Barmar выше, rsync может быть другим вариантом. Положите что-то подобное в crontab и вы должны быть установлены:

# min hour  day month day-of-week user command 
17 * * * * user rsync -av http://hostname.com/ >> rsync.log 

бы захватить файлы с сервера в этом месте и добавить детали rsync.log на 17-й минуте каждого часа. Однако сейчас я не могу получить rsync для получения файлов с веб-сервера.

Другой вариант использования wget является:

wget -Nrb -np -o wget.log http://hostname.com/ 

где -N повторно загружает только файлы новее метки времени на локальной версии, -b посылает процесс в фоновом режиме, -r рекурсивно в каталогах и -o задает журнальный файл. Это работает с произвольного веб-сервера. -np гарантирует, что он не входит в родительский каталог, эффективно распространяя содержимое всего сервера.

Подробнее, как обычно, будет на страницах руководства rsync или wget.