Gründe für rsync NICHT alle Dateien übertragen?


8

Kennt jemand häufige Gründe für einen so großen Defizitunterschied in der Anzahl der übertragenen Dateien, wenn mein GROSSES Home-Verzeichnis mit rsync auf einem Ubuntu 10.04 LTS-Setup gesichert wird? Die Maschine ist stabil und alle Volumes sind sauber ext4 - keine Fehler von fsck.ext4.

Number of files: 4857743
Number of files transferred: 4203266

Das ist ein Unterschied von 654.477 Dateien !!!

Ich möchte meinen vollständigen Home-Ordner auf einer externen Festplatte sichern, damit ich mein System vollständig löschen und neu formatieren und dann mein Home von dieser rsync-Sicherung wiederherstellen kann. Ich befürchte jedoch, dass wichtige Datendateien fehlen.

Ich war als root angemeldet und habe mit rsync mein Verzeichnis / home / hholtmann / * auf einem Ersatz-Backup-Laufwerk in / mnt / wd750 / c51 / home / gesichert.

Hier ist die Befehlszeile, die ich als root verwendet habe

root@c-00000051:~# pwd
/root
root@c-00000051:~# rsync -ah --progress --stats /home/hholtmann /mnt/wd750/c51/home/ -v

Erfasste Zusammenfassungsausgabe von rsync

Number of files: 4857743
Number of files transferred: 4203266
Total file size: 487.41G bytes
Total transferred file size: 487.41G bytes
Literal data: 487.41G bytes
Matched data: 0 bytes
File list size: 102.48M
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 487.75G
Total bytes received: 82.42M

Nur um ein wichtiges Projekt-Unterverzeichnis in meinem Haus nach rsync zu vergleichen:

Byte-Unterschied zwischen einem Quell- und einem Ziel-Unterverzeichnis mit du

root@c-00000051:~# du -cs /home/hholtmann/proj/
18992676    /home/hholtmann/proj/
18992676    total
root@c-00000051:~# du -cs /media/wd750/c51/home/hholtmann/proj/
19006768    /mnt/wd750/c51/home/hholtmann/proj/
19006768    total

JEDOCH: KEIN FILE COUNT Unterschied zwischen denselben Quell- und Ziel-Unterverzeichnissen

root@c-00000051:~# find /home/hholtmann/proj/ -type f -follow | wc -l
945937
root@c-00000051:~# find /mnt/wd750/c51/home/hholtmann/proj/ -type f -follow | wc -l
945937

Warum so unerwartete Ergebnisse? Eine Datei ist eine Datei ... insbesondere im Home-Verzeichnis eines Benutzers!

Was vermisse ich? Oder ist das ein Zeichen, dass ich bereit für das Management bin!?!

LÖSUNG und ANTWORT:

Die unten ausgewählte Antwort erklärt den Unterschied in der Byteanzahl und meine falsche Erwartung der rsync-Zusammenfassungsdaten. Ich war nur überrascht von diesem Byte-Unterschied, da beide Volumes ext4 mit Standardblockgrößen sind. Ich habe nur angenommen, dass jede Datei in Bezug auf die duAnzahl den gleichen Platz einnimmt.

Ich habe einige Dateien gefunden, die NICHT rsynciert wurden, indem ich rsync eine ausführlichere Ausgabe hinzufügte -vv, indem ich rsync hinzufügte und erneut ausführte .

Was ich sah, waren Fehler von rsync, die besagten, dass es aufgrund der "erweiterten Attribute" in den Dateien KEINE meiner DROPBOX-Verzeichnisdateien an das Ziel schreiben konnte. rsync übersprang alle meine Dropbox-Pfaddateien.

Endet, dass mein / home-Volume mit der user_xattrOption ext4 mount in der Datei / etc / fstab bereitgestellt wurde:

/dev/mapper/vg1-lv_home /home   ext4 nobarrier,noatime,user_xattr 0 2
# I HAD to add the ,user_xattr option to match my home volume
/dev/sda1           /mnt/wd750  ext4 nobarrier,noatime,user_xattr 0 2

Nachdem ich zum dritten Mal einen weiteren vollständigen Rsync durchgeführt hatte, entschied ich mich, eine Dateianzahl die ganze Nacht in meinem vollständigen Home-Ordner laufen zu lassen und ein rsync-Backup zu erstellen:

root@c-00000051:~# find /home/hholtmann/ -type f | wc -l
4203266
root@c-00000051:~# find /mnt/wd750/c51/home/hholtmann/ -type f | wc -l
4203266

** Eine perfekte Zusammenstellung von Dateien **

FAZIT:

** Stellen Sie immer sicher, dass Ihre Backup-Volumes mit genau den gleichen Dateisystem-Mount-Optionen wie die Quelle gemountet sind UND aktivieren Sie die vollständige Protokollierung mit rsync für eine spätere Grep-Analyse, um nach Fehlern in langen Dateilisten zu suchen! ** **.


Nachfolgende Schrägstriche in Ihrem rsync-Befehl sind hier möglicherweise eine gute Idee.
ewwhite

danke .. aber ich habe in der Vergangenheit genug Fehler gemacht, um meine Lektion zu lernen und den unterschiedlichen Effekt von mit oder ohne Schrägstrich auf die Quelle / dir / zu lernen, was in diesem Fall kein Problem ist. Bitten Sie rsync, die vollständige Quelle / Pfad / Verzeichnis zu kopieren und in der Zielbasis / Pfad /
Heston T. Holtmann

Haben Sie rsync mehr als einmal ausgeführt? Sind Sie sicher, dass Sie nur die Tatsache betrachten, dass rsync eine Datei, die bereits zwischen Quelle und Ziel identisch ist, nicht erneut überträgt?
Zoredache

Haben Sie a ausgeführt, um diffzu sehen, was die tatsächlichen Unterschiede sind?
Michael Hampton

1
Wenn Datenintegrität Ihr Ziel ist, warum ist die Zeit, die zur Bestätigung benötigt wird, von Bedeutung? man diffist dein Freund in Bezug auf die Verwendung von Diff. Das Dienstprogramm md5deep kann ebenfalls nützlich sein.

Antworten:


10

Diese Frage besteht aus 2 Teilen. Erstens, warum gibt es einen Unterschied zwischen "Anzahl der Dateien" und "Anzahl der übertragenen Dateien". Dies wird in der rsync-Manpage erklärt:

Anzahl der Dateien : ist die Anzahl aller "Dateien" (im allgemeinen Sinne), einschließlich Verzeichnisse, Symlinks usw.

Anzahl der Dateien übertragen : ist die Anzahl der normalen Dateien , die über rsync Delta-Transfer - Algorithmus aktualisiert wurden, die nicht nicht enthalten erstellt dirs, Symlinks, etc .

Der Unterschied sollte hier gleich der Gesamtzahl der Verzeichnisse, Symllinks und anderer spezieller Dateien sein. Diese wurden nicht "übertragen", sondern nur neu erstellt.

Nun zum zweiten Teil, warum gibt es einen Größenunterschied zu du. du zeigt den von einer Datei verwendeten Speicherplatz an, nicht die Größe der Datei. Dieselbe Datei kann unterschiedlich viel Speicherplatz beanspruchen, wenn sich beispielsweise die Blockgrößen der Dateisysteme unterscheiden.

Wenn Sie sich immer noch Sorgen um die Datenintegrität machen, können Sie auf einfache Weise Hashes für alle Ihre Dateien erstellen und vergleichen:

( cd /home/hholtmann && find . -type f -exec md5sum {} \; ) > /tmp/hholtmann.md5sum
( cd /media/wd750/c51/home/ && md5sum -c /tmp/hholtmann.md5sum )

Vielen Dank, dass Sie sich die Zeit genommen haben, die Definitionen für mich zu klären. Das erklärt für einen so großen Unterschied. Ich konnte meine Übertragung anhand der Gesamtzahl der Dateien zwischen Quelle und Ziel überprüfen, indem ich eine Dateizahl ausführte. Weitere Informationen finden Sie in meiner bearbeiteten Frage.
Heston T. Holtmann

4

An alle anderen armen verlorenen Seelen, die mitten in der Nacht aus dem Urlaub arbeiten,

--checksum Lässt rsync tatsächlich prüfen, ob Änderungen an den Dateien vorgenommen wurden. Andernfalls werden Zeitstempel und Dateigrößen überprüft und ein Tag aufgerufen.

Dies ist in 99,9% der Fälle ausreichend und lässt Sie für den Rest der 0,01% in der Hölle brennen, bis Sie dies herausfinden


1

Versuchen Sie Folgendes, dies kann Ihnen helfen,

rsync -avH --delete /home/hholtmann/ /media/wd750/c51/home

2
Was ist das -avH?
Qi Fan

0

Ich könnte genauso gut etwas hinzufügen, was ich gelernt habe.

Ich habe den Befehl verwendet rsync /path/source/* /path/to/destination/*(beachten Sie das Globbing). Es war umständlich, da 90% meiner Dateien mit wenigen Ausnahmen übertragen wurden (sogar im selben Ordner wie einige, die übertragen wurden). Nach dem Entfernen *von Quelle und Ziel wurden alle übertragen. ¯ \ _ (ツ) _ / ¯


Der Versuch zu globieren ist einfach falsch. Es kann für die Quelle (n) funktionieren. rsync erlaubt mehrere Quellen, aber nur EIN Ziel. rsync source/* dest/*hätte den Effekt, dass alle Dateien, die mit source / * übereinstimmen, UND diejenigen, die mit dest / * übereinstimmen, in das zuletzt aufgelistete Ziel / * kopiert werden!
Steven der leicht amüsierte
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.