rsync: Der bessere cp Befehl

      0
Dieser Artikel ist zuerst bei Aalto Blogs erschienen. Mir hat der Artikel gut gefallen, weshalb ich ihn übersetzt und ggf. um eigene Erfahrungen und Tipps erweitert habe. Hier gehts zum Original Artikel
the one copy command to rule them all

rsync ist ein Kommandozeilen Programm, erhältlich für UNIX und OSX, das Dateien kopiert. Und das macht es ziemlich gut. So gut, dass man glatt auf die Idee kommen könnte, es als Alias für den normalen cp Befehl in der eigenen ~/.bashrc zu konfigurieren.

In diesem Artikel findet ihr ein paar nützliche Anwendungs-Beispiele. Wer selber noch gute Fälle oder Aliase kennt, kann sie gerne in die Kommentare tippen.

Generelle Verwendung

Generell verhält sich rsync fast wie cp. Allerdings hüpft es mit einer Menge Parameter in eure Kommandozeile (lies dir doch mal man rsync durch), die dir die alltägliche Arbeit erleichtern. Los geht’s mit dem ersten Beispiel:

rsync --progress -h

Mit diesen Parametern wird ein Fortschrittsbalken während des Vorgangs angezeigt (-h steht für „human readable“, also gut lesbar für den Benutzer). Damit kannst du also abschätzen, wie lange die Übertragung einer großen Datei dauern wird.

rsync -e ssh

Mit diesem Befehl wird rsync SSH nutzen, um Dateien auf verschiedene Rechner zu kopieren! Ein Beispiel:

rsync -e ssh files_to_copy user@remote.host.com:where/you/want/it/

oder, vorausgesetzt du hast dein SSH entsprechend konfiguriert, kürzer:

rsync -e ssh files_to_copy remote:where/you/want/it/

Natürlich funktioniert das auch anders herum. So werden Dateien von einem entfernten Rechner heruntergeladen:

rsync -e ssh remote:files_to_copy ./where/you/want/it/

Ein tolles Feature von rsync ist, dass es zwei identische Dateien erkennen kann. Es wird sie somit nicht erneut kopieren. Du kannst also ganz faul komplette Verzeichnisse kopieren und rsync pickt sich dann heraus, was noch kopiert werden muss.

Ein weiterer praktischer Parameter:

rsync --append huge_file.dat some/other/place/huge_file.dat

Mit dem --append Parameter erkennt rsync ob Teile einer großen Datei bereits vorher kopiert wurden und macht dort weiter, wo zuletzt aufgehört wurde. Das ist vor allem bei instabilen WLAN Verbindungen recht nützlich. Einfach den Download von unterwegs starten, Laptop zuklappen und Zuhause weiter laden.

Und zum Schluss noch ein ganz wichtiger Fall:

rsync -a -e ssh files_to_copy remote:where/you/want/it

Mit dem -a Parameter versucht rsync den korrekten Besitzer und die korrekte Gruppe für die entfernte Datei zu setzen. Gleiches gilt für die allgemeinen Dateiberechtigungen. Von diesem Parameter solltest du wohl in fast jedem Fall Gebrauch machen.

rsync als Alias

Nun wird sich vermutlich niemand die genannten Beispiele merken und ausschreiben (wollen). Also setz dir doch einfach einen Alias für die Fälle, die bei dir am häufigsten auftreten. Dazu musst du nur folgende Zeilen in deine ~/.bashrc eintragen:

alias cp='rsync -ae ssh'
alias cpv='rsync -vhae ssh --progress'
alias cpa='rsync -vhae ssh --progress --append'

alias rsync-copy='rsync -avzh --progress'
alias rsync-move='rsync -avzh --progress --remove-source-files'

Danach kannst du rsync als bessere cp Alternative verwenden:

$ cpa remote:/data/big_recording.fif .
receiving incremental file list
big_recording.fif
  1,138,341,699 100%   81.11MB/s    0:00:13 (xfr#1, to-chk=0/1)
sent 30 bytes  received 1,138,480,768 bytes  84,331,910.96 bytes/sec
total size is 1,138,341,699  speedup is 1.00

rsync zum Zusammenklicken

Wer sich seinen rsync Befehl lieber zusammen klicken möchte, dem gefällt vielleicht mein kleines rsync Tool. Dieses hatte ich ursprünglich entwickelt, weil ich mir die ganzen Befehls-Parameter einfach nicht merken konnte.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert