rsync alle (!) Datei-Eigenschaften erhalten

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
RobertDebiannutzer
Beiträge: 385
Registriert: 16.06.2017 09:52:36

rsync alle (!) Datei-Eigenschaften erhalten

Beitrag von RobertDebiannutzer » 01.03.2018 14:36:23

Ich habe unten stehendes rsync-Backup-Script für mein stretch und wollte mal fragen, ob ich damit wirklich alle (!) Eigenschaften einer Datei erhalte (wenn das Zieldateisystem ein USB-Stick ist, der ebenfalls mit ext4 formatiert ist). Wenn nein, wo ist das Manko und wie kann man es besser machen?

Code: Alles auswählen

rsync -aAHSX --info=progress2 --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found","/root/.cache/*","/opt/lost+found","/var/lost+found","/var/cache/apt/archives/*.deb","/home/lost+found","/home/robert/Videos/*","/home/robert/Musik/*","/home/robert/.cache/*","/home/usw/.cache/*","/home/unuser/.cache/*","/home/robert/.thumbnails/*"} / /media/robert/BACKUP

Benutzeravatar
smutbert
Beiträge: 8342
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: rsync alle (!) Datei-Eigenschaften erhalten

Beitrag von smutbert » 01.03.2018 23:42:43

Soweit hast du alle üblichen Metadaten abgedeckt, aber ich meine es kann auch dateisystemspezifische Features geben, die mit rsync nicht berücksichtigt werden (können).

Ich weiß zum Beispiel nicht wie sich die in ext4 eingebaute (datei- bzw, verzeichnisweise) Verschlüsselung verhält, aber ich vermute die Information ob die Quelldatei verschlüsselt ist (war) wird genauso verlorengehen wie die Verschlüsselung selbst (oder wenn der richtige Schlüssel noch gar nicht eingegeben worden ist, muss ja schon der Versuch die Quelldatei im Klartext zu lesen scheitern).
Bei anderen Quelldateisystemen können andere Informationen auftauchen, die in ext4 nicht gespeichert werden können (Kompression, copy-on-write, mehrere snapshots/versionen einzelner Dateien).
Wenn du selinux verwenden würdest, gäbe es auch noch den selinux context, aber den kenne ich nur dem Namen nach.

Beim Alltagsgebrauch muss man sich jedenfalls keine Sorgen machen. Wenn es außer den üblichen Metadaten, erweiterten Attributen, Hardlinks und ACLs noch etwas verwendet wird, dann weiß man das normalerweise auch.

Benutzeravatar
pangu
Beiträge: 1400
Registriert: 15.11.2011 20:50:52
Lizenz eigener Beiträge: GNU General Public License
Wohnort: /proc/1

Re: rsync alle (!) Datei-Eigenschaften erhalten

Beitrag von pangu » 02.03.2018 09:55:33

du musst immer bedenken, daß rsync nur diejenigen Sachen kopieren/lesen/mitberücksichtigen kann, zu dem der user unter dem der Befehl ausgeführt wird, auch die Rechte hat. Im Zweifelsfall also immer als root ausführen. Da das unter SSH jedoch kein best practice ist, müsstest du mit sudoers file oder Alternativen arbeiten. Außerdem musst du auch an den Zeichensatz denken, wenn du von A nach B tranferrierst und sicherstellen möchtest dass du die Dateinamen auch richtig angezeigt bekommst auf B. Hier schau dir mal die Option --iconv an, z.B.

Code: Alles auswählen

--iconv=UTF-8,CP1252
Bevor du dich nur auf Aussagen verlässt, würde ich an deiner Stellen testen ob wirklich all das mitkopiert wird, was dir wichtig ist. Anhand deines Beispiels gehe ich davon aus, dass du auch die extended attributes und ACLs mitnehmen möchtest. Richtigerweise hast du das mit rsync gelöst, da ein -a nicht ausreicht und zusätzlich no -A und -X beigefügt werden müssen. Wenn du das mit dem Befehl "cp" machen würdest entspräche das dem Befehl "cp -a".

Obwohl ich mich nicht mehr an die Details erinnern kann, ich hatte aber schon manchmal den Fall dass ich mit "rsync" und den Schaltern -a, -A und -X nicht glücklich wurde, sehr wohl aber mit "cp -a". Ich glaub das war bei Übertragungen zwischen zwei vollkommen unterschiedlichen Systemen. Deshalb mein Tip --> probier's vorher gründlich aus und vergewissere dich, dass diese Informationen auch tatsächlich mitübertragen werden.

viel Erfolg
Pangu
Man gibt Geld aus, das man nicht hat, um damit Dinge zu kaufen, die man nicht braucht, um damit Leute zu beeindrucken, die man nicht mag.

Milbret
Beiträge: 827
Registriert: 26.05.2008 12:04:54
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Nörten-Hardenberg
Kontaktdaten:

Re: rsync alle (!) Datei-Eigenschaften erhalten

Beitrag von Milbret » 02.03.2018 12:02:54

Laut rsync Manpage hast du alle Parameter für Erhaltung der Dateieigenschaften drin.
Entsprechend sollte es also passen.
Da du mit -a schon alles bis auf HAX, die du aber zusätzlich angibst, abdeckst sollte es passen.

Aus meiner Sicht könntest du dein Skript vereinfachen in dem du nur /home, /etc und vielleicht noch /root sicherst.
Unter home hast du dann deine Benutzer, etc deine globalen Configs und unter root noch deinen Root User.
Der Rest wäre dann schon vernachlässigbar, wenn du nicht unter z.B. /usr/local/bin Custom Programme und Skripte hast.
Deine Excludes in deinem home Ordner würde ich entfernen, sonst wirst du es vielleicht bereuen wenn deine Platte ausfällt und dir fehlen bestimmte Ordner.
Oder ist das wirklich gewollt?

Link:
https://linux.die.net/man/1/rsync

Martin
Es gibt keine if Schleife -> http://www.if-schleife.de/
Ansonsten GPL/GNU/Linux/Debian/Free Software 4 Ever :D

RobertDebiannutzer
Beiträge: 385
Registriert: 16.06.2017 09:52:36

Re: rsync alle (!) Datei-Eigenschaften erhalten

Beitrag von RobertDebiannutzer » 05.03.2018 14:39:35

Vielen Dank für eure Antworten.

@smutbert: Nein, ich weiß von keinen Sonder-Attributen. Selinux nutze ich nicht (natürlich --> NSA), und Apparmor macht ja soweit ich weiß nichts mit meinen Datei-Attributen...

@pangu: Ich boote für's Backup immer mit init=/bin/bash, dann kann ich mir alle Partitionen read-only mounten und ganz gemütlich mein script als root laufen lassen.

@Milbret: Ich mache ein Backup von allem, weil mir das ja gerade bei einem von mir gemachten Fehler helfen soll. Gerade z.B. habe ich die wine-executables in /opt/wine-stable/bin nur für den (extra zu dem Zweck angelegten) User "unuser" ausführbar gemacht. Aber wie wäre ein chown root:unuser doof, wenn ich das aus Versehen in /usr/bin mache... 8O
Da ist man dann froh, wenn man nicht alles neuinstallieren muss, sondern ein Backup hat. :wink:
Videos und Musik exkludiere ich vom System-Backup weil das sonst 1. so lange dauert und ich eh schon etwas Backup-faul bin und 2. die nicht mehr ganz auf meinen System-Backup-USB-Stick passen. Sowas mache ich deshalb immer extra.

RobertDebiannutzer
Beiträge: 385
Registriert: 16.06.2017 09:52:36

Re: rsync alle (!) Datei-Eigenschaften erhalten

Beitrag von RobertDebiannutzer » 10.03.2018 13:34:11

Hallo,

ich habe gerade einen Test gemacht, der mich verwundert:
Zwei Dateien in $HOME mit touch erstellt: tmp und tmp2.
als "root":

Code: Alles auswählen

setcap cap_sys_ptrace=eip /home/robert/tmp2
als "robert":

Code: Alles auswählen

rsync -aAHSX tmp tmp2
als "root":

Code: Alles auswählen

getcap /home/robert/tmp2
/home/robert/tmp2 = cap_sys_ptrace+eip
als "robert":

Code: Alles auswählen

cp -a tmp tmp2
als "root"

Code: Alles auswählen

getcap /home/robert/tmp2
Ergebnis: Nur

Code: Alles auswählen

cp -a
hat funktioniert.
Ich wollte schon an den Fähigkeiten von rsync zweifeln...
Aber!
Nochmal probiert, diesmal aber

Code: Alles auswählen

rsync -aAHSX /home/robert/tmp /home/robert/tmp2
als root ausgeführt: funktioniert auch! Warum braucht rsync für das kopieren des Attributes root-Rechte, cp -a aber nicht?

Antworten