it-swarm-eu.dev

Remote Linux Server zu Remote Linux Server Verzeichniskopie. Wie?

Wie kann ein Verzeichnis (mit Unterverzeichnissen und Dateien) am besten von einem entfernten Linux-Server auf einen anderen entfernten Linux-Server kopiert werden? Ich habe mich über einen SSH-Client (wie PuTTY) mit beiden verbunden. Ich habe root-Zugriff auf beide.

43
Arun Agrawal

Es gibt zwei Möglichkeiten, wie ich das normalerweise mache, beide verwenden ssh:

scp -r sourcedir/ [email protected]:/dest/dir/

oder die robustere und schnellere (in Bezug auf die Übertragungsgeschwindigkeit) Methode:

rsync -auv -e ssh --progress sourcedir/ [email protected]:/dest/dir/

Lesen Sie die Manpages zu den einzelnen Befehlen, wenn Sie weitere Informationen zur Funktionsweise benötigen.

62
Ycros

Ich würde eine zuvor vorgeschlagene Antwort ändern:

rsync -avlzp /path/to/sfolder [email protected]:/path/to/remote/dfolder

wie folgt:

-a (für Archiv) impliziert -rlptgoD, sodass die obigen l und p überflüssig sind. Ich möchte auch -H einfügen, das harte Links kopiert. Es ist nicht Teil von -a, da es teuer ist. Nun haben wir also folgendes:

rsync -aHvz /path/to/sfolder [email protected]:/path/to/remote/dfolder

Sie müssen auch vorsichtig sein, wenn Sie Schrägstriche nachziehen. Sie wollen wahrscheinlich

rsync -aHvz /path/to/sfolder/ [email protected]:/path/to/remote/dfolder

wenn gewünscht wird, dass der Inhalt des Quellordners im Zielordner erscheint. Ohne den abschließenden Schrägstrich würde ein Unterverzeichnis "sfolder" im Zielordner "dfolder" erstellt.

32
user19218

rsync -avlzp/pfad/zu/[email protected]:/pfad/zu/remote/ordner

9
Ana Betts
scp -r <directory> <username>@<targethost>:<targetdir>
6
Cody Brocious

Melden Sie sich bei einem Computer an

$ scp -r/pfad/nach/top/verzeichnis benutzer @ server:/pfad/nach/kopieren

5
Flame

Versuchen Sie unisono, wenn die Aufgabe wiederholt wird. http://www.cis.upenn.edu/~bcpierce/unison/

3
user11104

Check out scp oder rsync , man scpman rsync

scp file1 file2 dir3 [email protected]:path
2
John Douthat

Verwenden Sie rsync, damit Sie fortfahren können, wenn die Verbindung unterbrochen wird. Und wenn sich etwas ändert, können Sie diese auch viel schneller kopieren!

Rsync arbeitet mit SSH, sodass Ihr Kopiervorgang sicher ist.

2
Ady Romantika

Ich habe rdiffbackup http://www.nongnu.org/rdiff-backup/index.html verwendet, weil es alles tut, was Sie brauchen, ohne irgendwelche ausgefallenen Optionen. Es basiert auf dem rsync-Algorithmus. Wenn Sie nur einmal kopieren müssen, können Sie später das Verzeichnis rdiff-backup-data auf dem Zielhost entfernen.

rdiff-backup [email protected]::/source-dir [email protected]::/dest-dir

vom doc:

rdiff-backup bewahrt auch Unterverzeichnisse, feste Links, Entwicklungsdateien, Berechtigungen, UID/GID-Besitz, Änderungszeiten, erweiterte Attribute, ACLs und Ressourcengabeln.

dies ist ein Bonus für die scp -p-Vorschläge, da mit der Option -p nicht alle beibehalten werden (z. B. sind die Rechte für Verzeichnisse schlecht festgelegt).

auf Ubuntu installieren:

Sudo apt-get install rdiff-backup
2
Gunstick

scp erledigt die Aufgabe, aber es gibt einen Fehler: Die Verbindung zum zweiten Remote-Ziel verwendet die Konfiguration des ersten Remote-Ziels. Wenn Sie also .ssh/config in der lokalen Umgebung verwenden und dies mit den Schlüsseln rsa und dsa erwarten Wenn Sie arbeiten, müssen Sie Ihren Agenten an den ersten Remote-Host weiterleiten.

1
Justin Dossey

Nun, eine schnelle Antwort wäre ein Blick auf die 'scp'-Manpage oder vielleicht auf rsync - je nachdem, was genau Sie kopieren müssen. Wenn Sie müssten, könnten Sie sogar tar-over-ssh machen:

tar cvf - | ssh server tar xf -
1
zigdon

Ich denke, Sie können mit versuchen:

rsync -azvu -e ssh [email protected]:/directory/ [email protected]:/directory2/

(und ich nehme an, Sie sind auf Host0 und möchten direkt von Host1 auf Host2 kopieren)

Wenn das oben genannte nicht funktioniert, können Sie versuchen:

ssh [email protected] "/usr/bin/rsync -azvu -e ssh /directory/ [email protected]:/directory2/"

in diesem Fall würde es funktionieren, wenn Sie bereits eine passwortlose SSH-Anmeldung von Host1 zu Host2 eingerichtet hätten

1
Ram Prasad

Als Nicht-Root-Benutzer im Idealfall:

scp -r src $ Host: $ Pfad

Wenn Sie bereits einige Inhalte auf $ Host haben, sollten Sie rsync mit ssh als Tunnel verwenden.

/ Allan

0
Allan Wind

Wenn Sie es ernst meinen, eine exakte Kopie zu wollen, möchten Sie wahrscheinlich auch den Schalter -p für scp verwenden, wenn Sie das verwenden. Ich habe festgestellt, dass scp liest von Geräten, und ich hatte Probleme mit cpio, so persönlich verwende ich immer tar , so was:

cd /Origin; find . -xdev -depth -not -path ./lost+found -print0 \
| tar --create --atime-preserve=system --null --files-from=- --format=posix \
--no-recursion --sparse | ssh targethost 'cd /target; tar --extract \
--overwrite --preserve-permissions --sparse'

Ich behalte diese Beschwörung in einer Datei mit verschiedenen anderen Möglichkeiten zum Kopieren von Dateien. Dieser ist zum Kopieren über SSH gedacht. Die anderen dienen zum Kopieren in ein komprimiertes Archiv, zum Kopieren auf demselben Computer und zum Kopieren über einen unverschlüsselten TCP Socket, wenn SSH zu langsam ist.

0
Teddy

scp wie oben erwähnt ist normalerweise der beste Weg, aber vergiss nicht, einen Doppelpunkt in der Remote-Verzeichnis-Spezifikation zu setzen, sonst bekommst du eine Kopie des Quellverzeichnisses auf dem lokalen Rechner.

0

Ich pfeife gern Teer durch ssh.

tar cf - [Verzeichnis] ​​| ssh [Benutzername] @ [Hostname] tar xf - -C [Ziel auf der Remote-Box]

Diese Methode bietet Ihnen viele Möglichkeiten. Da root ssh deaktiviert sein sollte, ist das Kopieren von Dateien für mehrere Benutzerkonten schwierig, da Sie sich als normaler Benutzer beim Remote-Server anmelden. Um dies zu umgehen, können Sie auf der Remote-Box eine TAR-Datei erstellen, die den Besitz beibehält.

tar cf - [Verzeichnis] ​​| ssh [Benutzername] @ [Hostname] "cat> output.tar"

Für langsame Verbindungen können Sie Komprimierung hinzufügen, z für gzip oder j für bzip2.

tar cjf - [Verzeichnis] ​​| ssh [Benutzername] @ [Hostname] "cat> output.tar.bz2"

tar czf - [verzeichnis] ​​| ssh [Benutzername] @ [Hostname] "cat> output.tar.gz"

tar czf - [verzeichnis] ​​| ssh [Benutzername] @ [Hostname] tar xzf - -C [Ziel auf der Remote-Box]

0
Chuck