it-swarm.com.de

Verhindern Sie das Überschreiben von Dateien bei Verwendung Scp

Ich habe einige Dateien mit scp kopiert und möchte die bereits vorhandenen Dateien nicht überschreiben.

Wenn ich den Befehl cp verwendet habe, denke ich, dass dies mit cp -n möglich ist.

Gibt es eine ähnliche Option für scp, habe ich die Dokumentation von SCP durchgesehen und es scheint keine solche Option zu geben.

Ist rsync oder sftp der Weg, um dieses Problem zu lösen?

Zusatzinfo: 

OS: Ubuntu 12.04

36
Desert Ice

rsync scheint die Lösung Ihres Problems zu sein. Hier ist ein Beispiel aus hier :

rsync -avz foo:src/bar /data/tmp

Die Option -a behält Berechtigungen, Verzeichnisstruktur, Besitz und Symlinks. Sie können jede dieser Optionen auch einzeln angeben.

-v und -z bedeuten verbose und komprimieren. Sie brauchen sie nicht wirklich, obwohl -z nett ist, wenn Sie große Dateien kopieren.

35
osulehria

Ich habe gerade einen einfachen Hack gefunden. Markieren Sie die vorhandenen Dateien als schreibgeschützt.

15
Bruno
rsync -avz --ignore-existing /source folder/* [email protected]:/dstfolder/

--ignore-existing überschreibt die Dateien auf dem Remote-Server oder Zielserver * nicht.

9
Asif Khan

Ich habe in der Vergangenheit rsync dafür verwendet, aber ich habe versucht, aus einer Windows-Box mit CopSSH und ohne rsync zu greifen :-( Das Folgende hat für mich gut funktioniert, indem Dateitests verwendet wurden, um die Dateien zu entfernen, die überschrieben werden würden, und Erzeugung von "Get" -Anforderungen an eine Sftp-Instanz.

(  echo  'cd work/ftp/' ; 
   ssh <user>@<machine> 'cd work/ftp/ && ls -1 ITEM_SALE_SUMMARY_V.*.dat.xz' |
   while read line; do [[ -f "$line" ]] || echo get "$line"; done 
) | sftp  <user>@<machine>

Für den Fall, dass andere eine Nicht-Rsync-Lösung benötigen!

0
dsz

rsync über ssh es muss sein.

0
vladr

Nur um die anderen Lösungen zu ergänzen:

Für eine ascii/bin-Datei können Sie Folgendes tun:

cat source_file | ssh Host "test ! -f target_file && cat > target_file"

0
SkyRaT