Gibt es eine Möglichkeit, vorhandene Dateien bei Verwendung von pscp nicht zu überschreiben?

4385
jhast1

Ich versuche, Dateien aus einem Ordner auf einem Server mithilfe einer Batchdatei zu kopieren. Ich möchte jedoch nicht, dass die Dateien im Zielordner überschrieben werden. Das ist was ich habe:

set /p address=ip address: pause pscp -pw "password" "username"@%address%:/folder path/* c:\folderpath 

Dies funktioniert jedoch, wenn es ausgeführt wird, überschreibt es die Dateien im Zielordner. Gibt es eine Möglichkeit, die Dateien, die sich bereits im Zielordner befinden, überspringen zu lassen?

2
Siehe auch: http://superuser.com/questions/131801/can-i-make-scp-ask-vorfore-overwriting-an-existing-file, http://aplawrence.com/Basics/no_clobber_scp.html, http : //www.linuxquestions.org/questions/linux-software-2/scp-recurse-but-not-overwrite-56005/ - der allgemeine Vorschlag scheint "use rsync" zu sein. Ein anderer Vorschlag ist die Verwendung von scp zum Übertragen in ein temporäres Verzeichnis und ein serverseitiges Skript zum Kopieren von Dingen ohne Überschreiben. Ich stelle mir vor, dass es auch möglich wäre, ssh zu verwenden, um die Existenz von Dateien in einem clientseitigen Skript zu überprüfen, aber das klingt ein wenig langweilig. Bob vor 11 Jahren 1
Siehe auch: http://stackoverflow.com/questions/13410990/prevent-overwriting-of-files-when-using-scp - yea, ein weiterer rsync-Vorschlag. Bob vor 11 Jahren 0

2 Antworten auf die Frage

1
Kenster

Das SCP-Protokoll ist nicht sehr ausgefeilt. Die sendende Seite kann die Dateien und Verzeichnisse nur blind an den Empfänger senden. Es gibt keine Standardoption, um das Überschreiben von Dateien am Ziel zu vermeiden.

Sie sollten sich komplexere Übertragungsprotokolle wie SFTP oder Rsync wie in den Kommentaren anschauen.

0
Camille Goudeseune

TL; DR Antwort von diesen Kommentaren:

rsync -e ssh --ignore-existing server.xxx.com:/path/\* /destination/path

Besser noch, wenn der Server auch CIFS ("Netzwerkfreigaben") unterstützt, verwenden Sie das mit cp -u.