Ich habe ein Dateisystem für ein Gerät, das ich programmiere und von dem ich eine exakte Kopie erstellen möchte. Idealerweise möchte ich, dass diese Kopie mit dem Ordner identisch ist, aus dem sie kopiert wurde. Ich habe versucht, dies zu nutzen cp -r
cp -a
und rsync -azvP
zu erreichen. Jeder einzelne Ordner führt jedoch zu einem Ordner mit unterschiedlicher Größe (mit du -s
), und obwohl mein Gerät nicht über den ursprünglichen Ordner verfügt, wird der von mir kopierte Ordner nicht ausgeführt.
- Was wird ausgelassen, dass die von mir verwendeten Befehle nicht berücksichtigt werden?
- Ist es möglich, beim Kopieren eines Dateisystems / Ordners alles identisch zu halten? Wenn ja, wie würde ich das machen?
PS Ich habe ähnliche Fragen zu StackOverflow gestellt, aber schnell festgestellt, dass ich sie beim falschen Austausch gestellt habe
Bearbeiten: Dies ist möglicherweise nicht hilfreich, aber unabhängig davon, welche Methode ich für das kopierte Verzeichnis verwende, führt der betreffende Computer immer zu Kernel Panic mit der folgenden Ausgabe.
VFS: Root-Fs können nicht über NFS bereitgestellt werden, wenn eine Diskette versucht wird. VFS: Root-Gerät "nfs" oder unbekannter Block (2,0) kann nicht geöffnet werden. Bitte fügen Sie eine korrekte Boot-Option "root =" hinzu. Hier sind die verfügbaren Partitionen: 1f00
64 mtdblock0 (Treiber?) 1f02 64 mtdblock2 (Treiber?) 1f04 2432 mtdblock4 (Treiber?) 1f05 128 mtdblock5 (Treiber?) 1f06 4352 mtdblock6 (Treiber?) 1f07 204928 mtdblock7 (Treiber?) 1f8 mtdblock8 (Treiber?) 0800
8388608 sda-Treiber: sd Kernel-Panik - nicht synchronisiert: VFS: Root-Fs können nicht auf unbekanntem Block gemountet werden (2,0)
quelle
du
Ausgabe ist kein Indikator dafür, dass der Inhalt nicht gleich ist.rsync -a
odercp -a
exakte Kopien von Verzeichnissen erstellen, aber Sie versuchen, eine bootfähige Festplatte zu kopieren. Dazu müssen Sie noch einige weitere Schritte ausführen.dd if=/some/location of=/some/other/location bs=4M
das Lesen und Schreiben von Daten verwenden möchten .Antworten:
Ich verwende im Allgemeinen eine der folgenden Alternativen:
rsync -aHAX
(füge v für Ausführlichkeit hinzu) stellt sicher, dass Sie beim Kopieren alle Linkstrukturen und x-attrs im Zielordner beibehalten. Vergessen Sie nicht,a
bedeutet Archivieren und bewahrt bereits Zeit, Eigentum und Berechtigungen.tar cvf
(nicht komprimieren, um Zeit zu sparen, nur tarieren) ist das, was ich verwende, wenn der erste nicht das erfüllt, was ich aus irgendeinem Grund brauche, und ich keine Zeit habe, aber ich versuche immer den ersten.Um zu überprüfen, ob alles ordnungsgemäß funktioniert hat, können Sie es anschließend ausführen,
diff -r <folder1> <folder2>
wenn Sie möchten.quelle
du -s
Unterschieds sein. Ich habersync -axXSAH
alles kopiert. Das -x kopiert nur innerhalb des Dateisystems und nicht innerhalb eines anderen Dateisystems.Wenn Sie Ihre Antwort in den Kommentaren lesen, scheint es, als würden Sie möglicherweise versuchen, den Stammordner zu kopieren ("Mein Gerät startet nicht mit dem kopierten Verzeichnis"). In diesem Fall sollten Sie verschiedene Dinge tun.
Sobald Sie den Stammordner auf das neue System kopiert haben, müssen Sie grub aktualisieren, bevor es gestartet wird.
quelle
tar c
dahintar x
. Der Kicker war jedoch, sicherzustellen, dass mein Computer ausgeschaltet war, seit ich ihn mit dem FS gestartet habe, der lokal auf meinem Computer war, aber entfernt von dem Gerät, das ich gestartet habe (ich habe das Gerät über NFSgrub-install: error: embedding is not possible, but this is required for cross-disk install.
Sie könnten FSArchiver versuchen . Es ist der Nachfolger des ähnlichen Teils, der jetzt nicht mehr gepflegt wird. Ich habe in der Vergangenheit sowohl partimage als auch FSArchiver verwendet und beide haben gut funktioniert. Soweit ich weiß, erstellen beide Kopien eines Dateisystems, das dem Original so nahe wie möglich kommt. Ich denke, FSArchiver ist ein bisschen mächtiger als Partimage. Zum Beispiel funktioniert es mit ext4, partimage nicht. Siehe die FSArchiver / partimage-Vergleichstabelle .
quelle
Das
du
Vergleichen von Ordnern ist von Natur aus problematisch. Wenn Sie 2 Verzeichnisse wirklich nur anhand ihrer Größe vergleichen möchten, verwenden Sie Folgendesdu
:Dieser Switch gibt die tatsächliche Größe des Verzeichnisses im Verhältnis zum Speicherplatz an, der beim Speichern auf dem physischen Laufwerksmedium belegt wird. Festplatten sind in Blöcken organisiert und Dateien werden in diese Blöcke geschrieben. Wenn eine Datei nur BLOCK + 1 Speicherplatz benötigt, belegt sie 2 BLOCKS Speicherplatz, und dies wird
du
normalerweise gemeldet . Denken Sie daran, dass der Name des Tools die Festplattennutzung ist!Angesichts der Tatsache, dass es sich um ein gesamtes Dateisystem handelt, würde ich gerne
dd
eine exakte Kopie der Partition erstellen , auf der sich das Verzeichnis befindetSie können dies dann verwenden
boot.img
, um die Partition wiederherzustellen, wo immer Sie möchten.quelle
du -sh /var
gibt 21G, aberdu -sh --apparent-size /var
gibt 209G auf meinem System.Es kommt ein bisschen darauf an, was du mit "identisch" meinst.
rsync
wäre die meiste Zeit in Ordnung. Manchmal möchten Sietar
alles in eine Datei packen und an der anderen Stelle extrahieren.dd
das gesamte Dateisystem selbst kopieren.Wenn Sie Ihr Gerät debuggen möchten, versuchen Sie herauszufinden, was genau das Problem ist, warum es derzeit nicht ausgeführt wird.
quelle