Wie kann man überprüfen, ob alle Dateien in einem Dateisystem fehlerfrei gelesen werden können?

414
A. Donda

Ich verwende eine externe Festplatte mit einem ext4-Dateisystem, um Backups zu erstellen. Die von mir verwendete Sicherungssoftware (faubackup) kopiert die Dateihierarchie 1: 1 in einen Zeitstempelnamen-Ordner auf der Festplatte und erstellt inkrementelle Sicherungen, sodass neue Kopien von Dateien, deren Inhalt nicht in dieselbe Datei geändert wurde, fest gebunden werden im entsprechenden Unterordner des vorherigen Backups. Da ich kürzlich ein Sicherungslaufwerk hatte, möchte ich jetzt sicherstellen, dass alle geschriebenen Dateien tatsächlich ohne I / O-Fehler gelesen werden können. Daher weiß ich, dass ich mich auf meine Sicherung verlassen kann.

Eine Möglichkeit, dies zu tun wäre, die gesamte Partition zu lesen, zum Beispiel durch dd‚ing es /dev/null. Die Festplatte ist jedoch 3 TB groß, und dies würde ungefähr 7 Stunden dauern (über USB 3.0).

Eine andere Möglichkeit wäre die Verwendung e2fsckder -cOption, aber dies dauert auch ewig.

Ich denke, es sollte möglich sein, den Prozess zu beschleunigen, indem nicht die gesamte Festplatte geprüft wird, sondern nur die Dateien, was nur ein Bruchteil der gesamten Festplattengröße ist. Dies kann beispielsweise geschehen, indem alle Dateien in ein tar-Archiv geschrieben werden, das nicht auf die Festplatte geschrieben, sondern an gesendet wird /dev/null. Hier liegt das Problem beim Hard Linking: Wenn ich 10 inkrementelle Backups sage, ist der Speicherplatz wieder nur ein Bruchteil der Festplatte, aber es scheint etwa zehnmal so groß zu sein.

Meine Frage: Gibt es eine Möglichkeit, nur die Dateien auf der Festplatte zu lesen, und nur eine in jedem Dateisatz, die mit demselben Speicherplatz verknüpft ist? Oder gibt es eine Möglichkeit, e2fsck -cdie verwendeten Teile des Dateisystems (zugewiesene Blöcke) zu überprüfen oder ähnliches?

1

1 Antwort auf die Frage

2
ua2b

GNU tar kopiert den Inhalt von fest verknüpften Dateien nicht mehrmals. Lesen Sie die erste Antwort auf diese Frage oder die offizielle Dokumentation zu diesem Thema. Sie können dies testen, indem Sie die Ausgabe (das Archiv) von tar durch wc : pischentar cf - -C <mountpoint of your disk> . | wc -c und die Archivgröße in Bytes überprüfen (Sie können dies mit der Option tar mit dem Ergebnis vergleichen --hard-dereference).