Kann ich einen Ordner scp, der Unterordner hat?

31

Ich habe einen Ordner mit Dateien für eine statische Website wie:

/site/index.html
/site/css/css.css
/site/js/js.js
/site/images/...

Wenn ich etwas auf meinem Laptop aktualisiere, möchte ich mit einem einzigen Befehl die Dateien an meinen Ubuntu-Server senden. Ich möchte kein FTP darauf einrichten, wenn ich es nicht auch habe. Ich frage mich, ob scp damit umgehen kann.

Blankman
quelle
Ich bevorzuge tarvia ssh: unix.stackexchange.com/a/10028/79839
chicks

Antworten:

56

Der Befehl scp -r source user@target:destdurchsucht alle Unterverzeichnisse der Quelle und kopiert sie.

Verhält scpsich jedoch wie cpund kopiert Dateien immer, auch wenn sie auf Quelle und Ziel gleich sind. [ Hier finden Sie eine Problemumgehung.]

Da es sich um eine statische Website handelt, werden Sie höchstwahrscheinlich nur Aktualisierungen vornehmen und nicht das Ganze neu erstellen. Sie werden also wahrscheinlich feststellen, dass sich die Dinge schneller entwickeln, wenn Sie rsyncstatt ssh ssh verwenden scp. Wahrscheinlich so etwas wie

rsync -av -e ssh source user@target:dest

... um loszulegen. Wenn Sie dies über ein LAN tun, würde ich die Optionen -avWstattdessen persönlich für verwenden rsync.

Mit Rsync können Sie auch Löschungen in Ihrer Quelle duplizieren. Wenn Sie also eine Datei aus Ihrem Baum entfernen, können Sie rsyncwie oben beschrieben vorgehen und das Flag --deleteeinfügen. Dadurch wird dieselbe Datei von der Zielseite entfernt.

David Mackintosh
quelle
9

scp hat ein rekursives Flag, das tut, was Sie wollen. scp -r /base/directory user@server:/to/location

von man scp

-r      Recursively copy entire directories.  Note that scp follows symbolic
          links encountered in the tree traversal.
Zypher
quelle
2

scp -r und rsync -r sind die zuverlässigsten Methoden, um das zu bekommen, was Sie wollen, wie andere angemerkt haben.

Sie können sshfs auch verwenden, um es als lokales Laufwerk bereitzustellen: sshfs user@host:/site /mnt/mountpoint

(Allerdings ist es wahrscheinlich besser, vor Ort zu arbeiten und mit rsync zu implementieren. Nur ein weiteres Tool, das Sie beachten sollten.)

Luke Schlather
quelle