Carl-Christian Sautter | 19.05.2018 |   Linux Debian Ubuntu

Große Datenmengen per SSH übertragen

Hin und wieder steht man vor der Aufgabe sehr große Verzeichnisse von einem Linux Server auf einen Zweiten zu übertragen. (z.B. Backups, Umzüge)

Eine Möglichkeit ist es ein tar Archiv von den zu übertragenden Verzeichnissen zu erstellen. Anschließend kann man das Archiv mit scp kopieren. Jetzt muss das Archiv auf dem Zielserver noch entpackt werden. Bei sehr großen Übertragungen mit mehreren 100 GB bringt dieses Vorgehen aber einen erheblichen zeitlichen Aufwand mit sich.

Möchte man stattdessen direkt ein großes Verzeichnis mit allen Berechtigungen und Timestamps kopieren, empfiehlt sich die Verwendung von rsync im Archive Modus. (Schalter: -a)

Damit der rsync Prozess im Hintergrund weiter läuft, detachen wir den Prozess mit nohup und einem abschließendem & von der aktiven Shell.

Alternativ ist auch die Verwendung von screen möglich. Screen bietet den Vorteil, dass man sich sehr einfach erneut mit der Hintergrundshell verbinden kann.

# nohup
nohup rsync --timeout=500 -av --delete -e "ssh -i /root/.ssh/keyfile" /path_to_local_dir/ root@remote.server.de:/path_to_remote_dir/ &

# neuen screen erstellen
screen -S copy
# Rsync starten
rsync --timeout=500 -av --delete -e "ssh -i /root/.ssh/keyfile" /path_to_local_dir/ root@remote.server.de:/path_to_remote_dir/
# Alternativ: Die partielle Datenübertragung kann bei großen Dateien sehr nützlich sein
rsync --partial --append-verify --progress --timeout=500 -av big-file.gz root@remote.server.de:/folder/big-file.gz

# Tastenkombination (STRG+A+D) zusammen gedrückt halten
# Die Shell ist nun detached und läuft im Hintergrund weiter

# Erneutes Verbinden zur Shell
screen -r copy

Comments are disabled for this post.

0 comments