Wie kann ich den Befehl scp zum Überschreiben des Zielordners ausführen?

41

Ich benutze den scp-Befehl, um einige Dateien auf einen Remote-PC zu kopieren, wie Sie es mit scp tun :)

Ich stelle fest, dass das Standardverhalten einer scp-Kopie für Dateien darin besteht, alle vorhandenen Dateien zu überschreiben. Jetzt möchte ich einen Ordner kopieren, damit ich im Grunde dasselbe mache:

scp -r <source_path> user@myOtherPc:<dest_path>

Wo die Teile in <> sind meine Ordnerpfade. Wenn ich dies jedoch ausführe, erhalte ich die Meldung "Datei existiert". Gibt es einen Weg, dies zu umgehen? eine Art von Kraft überschreiben?

Danke, Futter

code_fodder
quelle
2
Könnten Sie einige Beispiele für den Weg geben? Ich kann dies nicht auf meinem System reproduzieren. Haben Sie auch die Dateiberechtigungen überprüft?
Levans
Gibt es nützliche Informationen, wenn Sie den ausführlichen Modus verwenden? -v. Verwenden Sie auf der Zielseite auch den absoluten oder relativen Pfad? Ich denke, wenn der Zielordner bereits vorhanden ist, wird der testdir/testdir
Quellpfad im Zielordner erstellt
2
Es ist seltsam, dass Sie das bekommen. Angeblich hat scp keinen noclobber ...
beroe
1
@ Levans Ich habe die Berechtigungen nicht überprüft, ich habe nur einen Blick darauf geworfen und ich denke, Sie haben vielleicht Recht. Ich habe alles im Zielbereich gelöscht und erneut begonnen, indem ich nur den Befehl "scp" und den Benutzer "root" verwendet habe. Außerdem konnte ich die Dateien / Ordner mehrmals kopieren hatte, aber jetzt habe ich einen "Griff" zu dem Thema, ich kann es wahrscheinlich herausfinden, danke
code_fodder
1
@beroe Ja, das habe ich auch gedacht ... es hat mich verwirrt, aber ich glaube, ich habe hier einen Benutzerfehler mit den Berechtigungen gemacht. Ich bin noch kein Linux-Experte :( Aber ich werde die Ausführlichkeit testen Das nächste Mal habe ich ein solches Problem, um weitere Informationen zu erhalten, danke. Ich habe auch bemerkt, dass manchmal der "Ordner im Ordner" passiert ... aber das ist ein anderes Problem: o
code_fodder

Antworten:

27

Wie bereits erwähnt, überschreibt scp fröhlich alle Dateien, die bereits vorhanden sind.

Das Problem "Datei vorhanden" kann nur auftreten, wenn Sie einen anderen Prozess (z. B. einen gleichzeitigen scp-Prozess oder etwas anderes) haben, der Ordner und Dateien an dasselbe Ziel schreibt. Erwägen Sie stattdessen die Verwendung von rsync.

nicolasochem
quelle
1
Ich würde nur hinzufügen: ... solange Sie Schreibzugriff auf diese Datei haben ...
SDsolar
aber für Ordner, wird der Ordner zusammengeführt oder ersetzt?
Dr_Hope
5

Wie Levans konnte ich dies nicht replizieren, aber haben Sie darüber nachgedacht, stattdessen rsync über ssh zu verwenden? Wenn Sie eine große Anzahl von Dateien kopieren, ist rsync möglicherweise eine bessere Option als scp. Es gibt eine Reihe guter Online-Anleitungen, wie zum Beispiel die folgenden:

http://troy.jdmz.net/rsync/index.html https://calomel.org/rsync_tips.html

Dieser erste Link befasst sich mit automatisierten Sicherungen über cron, sodass einige der Anweisungen (wie das Erstellen eines SSH-Schlüssels ohne Passphrase) für Sie möglicherweise nicht relevant sind.

Ben
quelle
Interessant, ich wusste nicht, dass Sie rsync auf diese Weise verwenden können. Schauen Sie sich einfach die Manpage an und sehen Sie, wie Sie es auf sehr ähnliche Weise wie scp mit <source_path> und <user @ host verwenden können: Zielpfad> Parameter. Ich bin mir nicht 100% sicher, ob ich das
wirklich
Ja, es könnte sich lohnen, ein Stück zu spielen, da es die Datei überschreiben sollte, wenn sie geändert wurde (oder den Teil der Datei, der geändert wurde, muss ich noch einmal überprüfen, und ich bin ein bisschen zu müde, richtig jetzt).
Ben
haha .... mach dir keine Sorgen, ich kann das Zeug machen ... aber danke für die Info :)
code_fodder
Ah, cool, ich kann aufhören, Streichhölzer zu betrachten, um meine Augenlider zu öffnen. ;)
Ben
1
Dies kann funktionieren, ist aber ein bisschen wie die Verwendung eines Vorschlaghammers, um eine Fliege zu schlagen. ;-)
SDsolar
3

Sie erhalten diese Fehlermeldung, wenn das Zielverzeichnis bereits eine Datei mit demselben Namen wie das Quellverzeichnis enthält, das Sie übertragen möchten. Sie können keine Datei mit demselben Namen wie ein Verzeichnis im selben Verzeichnis haben.

EvR2f
quelle