SCP überträgt nur geänderte Dateien

30

Ich benutze folgenden Befehl, um Dateien serverübergreifend zu übertragen

scp -rc blowfish /source/directory/* [email protected]:/destination/directory

Gibt es eine Möglichkeit, nur Dateien zu übertragen, für die Dateien geändert wurden, genau wie updatefür den Befehl cp?

Leidenschaftlicher Entwickler
quelle

Antworten:

52

rsync ist dein Freund.

rsync -ru /source/directory/* [email protected]:/destination/directory

Wenn Sie möchten, dass Dateien am Ziel gelöscht werden, die an der Quelle nicht mehr vorhanden sind, fügen Sie die --deleteOption hinzu.

Flup
quelle
4
Wenn Sie jedoch eine Synchronisierung mit einem Webserver durchführen und dieser Server HTML-Code zwischenspeichert, möchten Sie diesen möglicherweise nicht verwenden --delete, da Besucher auf einer veralteten Seite möglicherweise ein nicht mehr vorhandenes Asset anfordern.
Jackson
@Jackson ein sauberer Prozess enthält keine variablen Daten wie Caches oder Konfigurationen in den Quellen.
Chris Pillen
In einigen Fällen habe ich mit Servern außerhalb meiner Domain zu tun, die keine haben, rsyncaber haben scp. Gibt es eine vergleichbare Lösung, auch wenn ein paar Zeilen Skript benötigt werden?
iX3
Die Antwort ist hilfreich, aber die Frage war, ob dies mit scp selbst erreicht werden kann.
Mladen B.
1

Im Allgemeinen fragt man nach scp, weil es einen Grund gibt. Das heißt, rsyncd kann nicht auf dem Ziel installiert werden.

files=`find . -newermt "-3600 secs"`

for file in $files
do
       sshpass -p "" scp "$file" "root@$IP://usr/local/www/current/$file"
done
Angelo Dureghello
quelle