Использование wget и wput только для новых файлов - PullRequest
0 голосов
/ 16 октября 2019

Для фона, У меня есть файлы, которые мне нужно транспортировать между серверами, и для этого у меня была попытка написать скрипт bash, который использует wget для извлечения только самых новых файлов и wput длязагрузить их.

Проблема заключается в том, что я использую wget с флагом -N, и пока он загружает самый последний файл, это также означает, что когда я использую wput, я загружаювсе файлы и не только самые новые. Сложнее становится то, что мне приходится загружать в определенный каталог, а после загрузки они перемещаются в другой, поэтому я не могу использовать то, что я загружал в прошлом, в качестве руководства.

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

Любая помощь в том, как я мог бы добиться этого,с благодарностью, мой текущий код ниже:

#!/bin/bash

# Redirect stdout ( > ) into a named pipe ( >() ) running "tee"
exec > >(tee -i update_logfile.txt)
exec 2>&1

today="$(date +'%d%m%Y')"

printf "Record load started: %s\n" "$today"

echo "get records" 
wget -N ftp://[user1]:[pass1]@[ftp-server-1]/*.* -P /path/to/temp/

echo "put records" 
wput --basename=/path/to/temp/ -u  /path/to/temp/*.*  ftp://[user2]:[pass2]@[ftp-server-2]/update/

echo "upload finished" 

mail -s "Upload" my_email@domain.com < update_logfile.txt

1 Ответ

0 голосов
/ 16 октября 2019

Joesch. Простой подход - записать lastCheck с отметкой времени последней загрузки в файл и проверить отметку времени последней измененной версии загружаемых файлов. если файл новее, тогда отметка времени, загрузите его. Это должно быть довольно просто сделать, но не стесняйтесь, дайте мне знать, и я могу собрать фрагмент для вас.

...