
Ich verwende Windows 10, der Server läuft unter Debian 10 und ich kopiere eineSchlankBuild-Verzeichnis von meinem Computer auf einen Remote-Server. Ich verwende den Befehl zum Kopieren der Dateien:
scp -r ./build [email protected]:~/directory
Es werden jedoch immer wieder einige Dateien (und ganze Verzeichnisse) ausgelassen, und ich muss sie letztendlich alles durchgehen und manuell kopieren.
Remote-Verzeichnis.
Lokales Verzeichnis; das gesamte (play)
Verzeichnis wird gelöscht.
Ich habe versucht, es mit dem ausführlichen Argument auszuführen, aber es hat mir nichts Besonderes gesagt (glaube ich). Warum passiert das und wie kann ich es verhindern?
Antwort1
Ich verwende SCP im Allgemeinen zum Übertragen einer Datei auf einmal. Oder nur Dateien, die einem Muster aus einem bestimmten Verzeichnis entsprechen. Niemals zum Kopieren einer vollständigen Verzeichnisstruktur
In solchen Fällen würde ich stattdessen Rsync verwenden. Hier ist beispielsweise Ihr Befehl, übersetzt in ein Rsync-Äquivalent:
rsync -avzh ./build [email protected]:~/directory
Probieren Sie es aus. Es sollte funktionieren.
Antwort2
Ich denke, dass SCP eine Verzeichnisstruktur benötigt, die auf dem Remote-Server vorhanden ist. Es werden keine Ordner erstellt.
Sie können das Flag mit rsync verwenden -e
, um die Übertragung mithilfe einer Remote-Shell durchzuführen.
rsync -r -e "ssh -p 222" /home/test/dev [email protected]:/home/remotetest/dev
Antwort3
Ich hatte gerade das gleiche Problem und es wurde höchstwahrscheinlich durch diesen Fehler verursacht:https://github.com/PowerShell/Win32-OpenSSH/issues/1897
SCP schlägt bei einer rekursiven Kopie mit einer Verzeichnisstruktur mit mehr als acht Ordnern fehl. Im Ziel werden Verzeichnisse bis zum 8. Verzeichnis erstellt, aber keine Verzeichnisse, die tiefer als das 8. Verzeichnis liegen. Es werden überhaupt keine Dateien kopiert.
In meinem Fall wurden tatsächlich die meisten Dateien kopiert, aber einige Dateien fehlten – nicht nur aus Verzeichnissen 8 Ebenen tiefer, sondern auch aus Verzeichnisebenen höher.
Die fehlerhafte scp-Version auf meinem Windows 10 (mit allen Updates) war Version 8.1.0.1. Ich habe openssh v9.5.0.0p1 von installiertScoopstattdessen und es funktioniert ohne Probleme.