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.