IT

Dateien kopieren mit Rsync

Unter Linux gibt es das Programm cp zum kopieren von Dateien und Verzeichnissen. Rsync großer Vorteil ist die Übertragung von Dateien über ssh von Rechner zu Rechner. Dabei nutzt es Mechanismen, die auch für das lokale Kopieren von Vorteil sind. Nachteile sind, dass rsync unter Umständen etwas lansamer als cp sein kann und das / Zeichen sehr genau nimmt, dazu später mehr.

Rsync

Was ist rsync

rsync genau wie cp ein Programm zum Kopieren von Dateien und Verzeichnissen. Da es jedoch entwickelt worden ist Dateien von Rechner zu Rechner zu übertragen, kann es nicht nur kopieren sondern auch die Übertragung wieder aufnehmen, mit einer Prüfsumme testen ob die zu übertragende Datei schon auf dem Ziel liegt und  hat eine nette Ausgabe.

Kopieren mit rsync

Rsync ist ein sehr flexibles Werkzeug, mit vielen Optionen. Ich empfehle auf jeden Fall einen Blick in die man page. Damit wir aber nicht mit Definitionen erschlagen werden, hier die einfachsten zum Starten.

Datei oder Ordner kopieren:

rsync quelle ziel

jedoch werden die meisten noch die Rekursion wie bei cp aktivieren wollen

rsync -r quelle ziel

Ich nutze auch gern  -a:


rsync -a quelle ziel

-a   a steht für archive und ist eine Zusammenfassung von verschiedenen Optionen. Die Einstellungen sind, dass die Daten rekursive übertragen werden, kein folgen von Symlinks, die Rechte, Besitzer und Gruppe der Datei werden beibehalten, sowie die letzte Modifikationszeit der Datei wird nicht verändert. Unter cp bespreibt -a Rekursion und kein Folgen von Symlinks.

Auszug Manpage:

--archive, -a            archive mode is -rlptgoD (no -A,-X,-U,-N,-H)
--recursive, -r          recurse into directories
--links, -l              copy symlinks as symlinks
--perms, -p              preserve permissions
--times, -t              preserve modification times
--owner, -o              preserve owner (super-user only)
--group, -g              preserve group

Ausgabemöglickeiten

Darüber hinaus bietet rsync verschiedene Anzeigemöglichkeiten.

-v für verbose, also eine generelle Ausgabe

rsync -av ~/Screenshots ~/Sicherung/Screenshots/
sending incremental file list
Screenshots/
Screenshots/Screenshot_20200624_133133.png
Screenshots/Screenshot_20200630_154922.png
Screenshots/Screenshot_20200701_114914.png
Screenshots/Screenshot_20200703_125932.png
Screenshots/Screenshot_20200710_144249.png
Screenshots/Screenshot_20200711_173217.png
Screenshots/Screenshot_20200713_084126.png
Screenshots/Screenshot_20200720_122822.png
Screenshots/Screenshot_20200731_121236.png
Screenshots/Screenshot_20200731_121521.png


sent 1.468.549 bytes  received 210 bytes  2.937.518,00 bytes/sec
total size is 1.467.420  speedup is 1,00

–progress    wer eine aktuelle Prozentangabe von der Übertragung einer Datei haben will

rsync -a ~/screencapture.mp4 ~/Sicherung/Screenshots/ --progress
sending incremental file list
screencapture.mp4
1.430.553.299 100%  112,24MB/s    0:00:12 (xfr#1, to-chk=0/1)

( würde mehr Sinn machen, wenn ich das als Gif einfügen würde 🙂 )

–itemize-changes, -i    eine Zusammenfassung pro Item

rsync -ai ~/Screenshots ~/Sicherung/Screenshots/
cd+++++++++ Screenshots/
>f+++++++++ Screenshots/Screenshot_20200624_133133.png
>f+++++++++ Screenshots/Screenshot_20200630_154922.png
>f+++++++++ Screenshots/Screenshot_20200701_114914.png
>f+++++++++ Screenshots/Screenshot_20200703_125932.png
>f+++++++++ Screenshots/Screenshot_20200710_144249.png
>f+++++++++ Screenshots/Screenshot_20200711_173217.png
>f+++++++++ Screenshots/Screenshot_20200713_084126.png
>f+++++++++ Screenshots/Screenshot_20200720_122822.png
>f+++++++++ Screenshots/Screenshot_20200731_121236.png
>f+++++++++ Screenshots/Screenshot_20200731_121521.png

und natürlich geht das auch alles zusammen

rsync -aiv ~/Screenshots ~/Sicherung/Screenshots/ --progress
sending incremental file list
cd+++++++++ Screenshots/
>f+++++++++ Screenshots/Screenshot_20200624_133133.png
101.035 100%   65,10MB/s    0:00:00 (xfr#1, to-chk=9/11)
>f+++++++++ Screenshots/Screenshot_20200630_154922.png
145.742 100%   69,50MB/s    0:00:00 (xfr#2, to-chk=8/11)
>f+++++++++ Screenshots/Screenshot_20200701_114914.png
123.448 100%   58,86MB/s    0:00:00 (xfr#3, to-chk=7/11)
>f+++++++++ Screenshots/Screenshot_20200703_125932.png
231.292 100%   55,14MB/s    0:00:00 (xfr#4, to-chk=6/11)
>f+++++++++ Screenshots/Screenshot_20200710_144249.png
110.563 100%   26,36MB/s    0:00:00 (xfr#5, to-chk=5/11)
>f+++++++++ Screenshots/Screenshot_20200711_173217.png
76.428 100%   14,58MB/s    0:00:00 (xfr#6, to-chk=4/11)
>f+++++++++ Screenshots/Screenshot_20200713_084126.png
96.262 100%   15,30MB/s    0:00:00 (xfr#7, to-chk=3/11)
>f+++++++++ Screenshots/Screenshot_20200720_122822.png
64.914 100%   10,32MB/s    0:00:00 (xfr#8, to-chk=2/11)
>f+++++++++ Screenshots/Screenshot_20200731_121236.png
68.314 100%    9,31MB/s    0:00:00 (xfr#9, to-chk=1/11)
>f+++++++++ Screenshots/Screenshot_20200731_121521.png
449.422 100%   47,62MB/s    0:00:00 (xfr#10, to-chk=0/11)


sent 1.468.549 bytes  received 210 bytes  2.937.518,00 bytes/sec
total size is 1.467.420  speedup is 1,00

Wobei -v von -i überschrieben wird.

 

Übertragung zwischen Rechnern

rsync und ssh

Jeden Rechner der mit SSH ansprechbar ist, sollte auch mit rsync funktionieren. Rsync nutzt nicht nur die Schlüssel in .ssh sondern auch die config.

rsync -av ~/Screenshots/ tim@192.168.1.5:~/Sicherung/Screenshots/

ist das gleiche wie


rsync -av ~/Screenshots/ backi:~/Sicherung/Screenshots/

wenn in ~/.ssh/config folgender Eintrag existiert:

Host backi
HostName 192.168.1.5
User tim

Interessant für Datenübertragung

hier einige Optionen die speziell bei Übertragungen übers Netz von Vorteil sein können


--partial                behalte nur Teilweise übertragene Dateien, falls Abbruch etc.
-P                       Kursform für  --partial und --progress
--list-only              zeige die Dateien nur an, anstatt sie zu übertragen
--compress, -z           komprimiere die Datei während der Übertragung
--delete                 Lösche Dateien die im Zielordner vorhanden sind, jedoch nicht in der Quelle
--checksum, -c           ignoriere Dateien basierend auf ihrer checksum, nicht auf mod-time & size, Vorsicht Langsam

–checksum ist vor allem interessant wenn sichergestellt werden soll, dass die Kopieraktion richtig funktioniert hat. Befehlt einfach mit –checksum nochmal starten.

 

 / für Ordnerinhalt

als letzte möchte ich noch auf einen Fakt von rsync hinweisen, der Wechsler von cp zu rsync oft kalt erwischt, dass / am Ende der Quelle.

cp -r ~/Screenshots ~/Sicherung/Screenshots/

und

rsync -r ~/Screenshots ~/Sicherung/Screenshots/

verhalten sich gleich, im Sinne das nach der Ausführung ein neuer Ordner in ~/Sicherung/Screenshots/ mit Namen Screenshots ist, mit den png Dateien.

Wird das / am Ende der Quelle hinzugefügt, wird nun kein neuer Ordner angelegt, sondern direkt der Inhalt kopiert.

rsync -r ~/Screenshots/ ~/Sicherung/Screenshots/

unter cp gibt es diese Funktionalität nicht.

 

 

 

Quellen

https://download.samba.org/pub/rsync/rsync.1

Schreibe einen Kommentar

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