Ich habe ein Home-Verzeichnis auf einer Festplatte, die viele beschädigte Dateien enthält. Ich versuche, die meisten Dateien so gut wie möglich zu speichern. Ich versuche mit ein Backup meines Home-Verzeichnisses auf einem externen Laufwerk zu erstellen
tar -cvf backup /home/myHome
und auch versucht haben
rsync -vfh /home/myHome /media/backup
Beide Methoden werden beendet, wenn eine beschädigte Datei gefunden wurde. Gibt es eine Möglichkeit, den einen oder anderen zu zwingen, das Kopieren fortzusetzen und fehlerhafte Dateien zu ignorieren, alles zu kopieren, was zum Kopieren möglich ist, und mir am Ende der nicht kopierten Dateien ein Protokoll anzuzeigen?
Vielen Dank.
dd conv=noerror if=/dev/sdXY of=/media/backup/sdXY.dump
. Dann können Siefsck
die Bilddatei und mounten sie mit-o loop
.Antworten:
Ich habe dafür ein kleines Drehbuch geschrieben
quelle
Wenn auf Ihrem externen Laufwerk genügend Speicherplatz vorhanden ist, führen Sie eine vollständige Kopie der Partition durch und überspringen Sie nicht wiederherstellbare Sektoren. Machen Sie dann eine Kopie der Kopie und rufen Sie diese
fsck
auf.Verwenden Sie für die Kopie der Partition vom fehlerhaften Laufwerk
myrescue
oder, wenn dies nicht flexibel genug istddrescue
oderdd_rescue
. Alle diese Tools überspringen unlesbare Bereiche oder versuchen, sie wiederholt zu lesen. Passen Sie dies an, je nachdem, ob wiederholte Lesevorgänge möglicherweise funktionieren (z. B. optische Medien oder Disketten) oder im Gegenteil das fehlerhafte Laufwerk früher abnutzen (z. B. die meisten Festplattenfehler). Siehe auch Speichern von Daten von einem fehlerhaften Laufwerk . So stellen Sie Daten von einer fehlerhaften SD-Karte wieder her.quelle
Erstens macht die Verwendung von
rsync -aHv
---rsync -vfh
keinen Sinn für das, was Sie versuchen zu tun.rsync hat ein --ignoring-existierendes Flag, das Sie verwenden können. Führen Sie es aus,
rsync -aHv --ignore-existing
bis es mit einem E / A-Fehler beendet wird. Notieren Sie sich den Namen der fehlgeschlagenen Datei und erstellen Sie eine leere Version auf dem externen Laufwerk, auf das sie kopiert worden wäre, wenn rsync funktioniert hätte. Führen Sie den Befehl rsync erneut aus, und --ignore-existent führt dazu, dass nicht versucht wird, die fehlgeschlagene Datei zu kopieren. Hoffentlich kopiert rsync alles andere, aber wenn es erneut stoppt, wiederholen Sie diesen Vorgang. Wiederholen, bis rsync vollständig ausgeführt wird.quelle
Eine andere Lösung:
find
generiert eine Liste von Dateien undxargs
ruftrsync
nacheinander mit ihnen auf. --relative stellt sicher, dass Sie einen Baum auf der externen Festplatte anstelle eines flachen Verzeichnisses erhalten. Lassen Sie dieses Argument also nicht ausrsync
.quelle
xargs
an, XXX in der übergebenen Argumentlistersync
durch einen Dateinamen aus derfind
bereitgestellten Liste zu ersetzen . Ohne das -Jxargs
würde der Dateiname am Ende der Arg-Liste stehen.-IXXX
statt-JXXX
; es sollte genauso funktionieren.Verwendung
cpio -ivd -H tar
BefehlManpage sagt das
Dadurch werden die in der Datei directory.cpio archivierten Dateien abgerufen und im aktuellen Verzeichnis abgelegt. Die Option '-i' extrahiert das Archiv und die Option '-v' zeigt die Dateinamen beim Extrahieren an. Wenn Sie mit einem archivierten Verzeichnisbaum arbeiten, müssen Sie die Option '-d' verwenden, um nach Bedarf Verzeichnisse zu erstellen.
-H ist für das Format
sieh das und das
quelle