Ich habe Hunderte von Dateien auf einen anderen Computer kopiert, indem scp
ich den stalled
Fehler gemeldet habe . Jetzt kopiere ich die Dateien nochmal. Gibt es eine Möglichkeit, das Kopieren der bereits kopierten Dateien zu vermeiden?
Ich habe Hunderte von Dateien auf einen anderen Computer kopiert, indem scp
ich den stalled
Fehler gemeldet habe . Jetzt kopiere ich die Dateien nochmal. Gibt es eine Möglichkeit, das Kopieren der bereits kopierten Dateien zu vermeiden?
Antworten:
Sie können dafür verwenden rsync
. rsync
ist wirklich für diese Art von Betrieb ausgelegt.
Syntax:
rsync -avh /source/path/ host:/destination/path
oder
rsync -a --ignore-existing /local/directory/ host:/remote/directory/
Wenn Sie es zum ersten Mal ausführen, werden alle Inhalte kopiert, und es werden nur neue Dateien kopiert.
Wenn Sie den Datenverkehr über eine SSH-Verbindung tunneln müssen (z. B. aus Gründen der Vertraulichkeit), wie von Ihrer ursprünglichen Anfrage nach einer SCP-basierten Lösung angegeben, fügen Sie einfach -e ssh
die Parameter zu hinzu rsync
. Beispielsweise:
rsync -avh -e ssh /source/path/ host:/destination/path
rsync -t *.c foo:src/
-> "Dies würde alle Dateien, die mit dem Muster * .c übereinstimmen, aus dem aktuellen Verzeichnis in das Verzeichnis src auf dem Computer übertragen. Wenn eine der Dateien bereits auf dem fernen System vorhanden ist, dann führt der Befehl rsync remote- Update-Protokoll wird verwendet, um die Datei zu aktualisieren, indem nur die Unterschiede
rsync -avuzh /source/path/ host:/destination/path
. Das erledigt die ganze Arbeit in einem Befehl und überträgt bei nachfolgenden Aufrufen nur die Dateien, die es benötigen.
Wenn Sie aus irgendeinem Grund bei scp bleiben möchten, können Sie w Berechtigungen für Ihre lokalen Daten entfernen (wenn Sie das Recht dazu haben) und scp wird es nicht berühren. Präziser sein:
chmod a-w local/*.tar.gz
(in Ihrer Nähe)scp remote/*.tar.gz local
Dies ist nicht sehr effizient, kann aber hilfreich sein, wenn Sie eine schnelle vorübergehende Lösung benötigen, ohne zu etwas anderem als scp zu wechseln. (Kudos: scp ohne bestehende Dateien im Ziel zu ersetzen )
Es gab keine genaue Antwort darauf, wie dies mit SCP geschehen sollte, da dies die ursprüngliche Frage war.
sudo find /files/ -type f -exec chmod a-w {} \;
scp -r username@server.com:/file/location/* /files
Wenn das Kopieren der Dateien abgeschlossen ist, ändern Sie die Berechtigungen zurück:
sudo chmod a+w -R /files
--ignore-existing
wirklich nötig?