Genaue Kopie von Dateien von NTFS auf ein anderes NTFS unter Linux

14

Ich versuche, alle Dateien von einem NTFS auf ein externes Laufwerk zu kopieren und möchte alle Berechtigungen und Attribute beibehalten. Das externe Laufwerk verfügt bereits über ein NTFS und enthält andere Dateien.

Ich habe überlegt, die folgenden Tools zu verwenden:

  • ntfsclonefunktioniert nicht, da es auf Sektorebene arbeitet und den gesamten FS klonen würde, wodurch die alten Daten zerstört würden. Wenn eine Image-Datei erstellt wird, kann ich von einem Windows-Computer aus nicht auf den Inhalt zugreifen.
  • rsync behält nicht alle Metadaten bei.

Eine Alternative wäre die Verwendung robocopyin einem laufenden Windows, aber ich würde es vorziehen, die Dateien ohne zu kopieren. (Die Quellpartition wird als Systempartition verwendet C:\.)

Wie kann ich die Dateien kopieren?

Scolytus
quelle
5
Welche genauen Metadaten möchten Sie hier beibehalten, die RSYNC nicht mit den entsprechenden Parametern speichert? Beziehen Sie sich auf Metadaten vom Typ Musikdateisoftware oder auf tatsächliche FS-Berechtigungen, Struktur, Zeit, Eigentümer usw.? Ich bin mir nicht sicher, was Sie bereits mit RSYNC versucht haben, aber es scheint, dass die Verwendung der richtigen Parameter, wie -AXogtzum Beispiel, die FS-Metadaten größtenteils beibehalten sollte. Bitte erläutern Sie, was Sie versucht haben, was nicht funktioniert, und welche "Metadaten" Sie sehen, die zwischen NTFS-Partitionen nicht beibehalten werden.
Pimp Juice IT
Ich weiß, dass die Dateien selbst unter Linux genau Byte für Byte kopiert werden können, aber fehlen alle Daten wie erstellt, geändert, zugegriffen? Oder NTFS-Benutzer / Eigentümer & Berechtigungen? Gibt es keine Möglichkeit, diese Daten und Berechtigungen für Dateien zu ändern, nachdem sie wieder in Windows NTFS kopiert wurden?
Xen2050

Antworten:

8

Es gibt keine Möglichkeit, NTFS-Dateien unter Linux exakt zu kopieren. Sogar Wine , die Windows-Kompatibilitätsschicht unter Linux, konvertiert Berechtigungen zwischen Linux und Windows hin und her und ist daher auf ihren (eher kleinen) kleinsten gemeinsamen Nenner beschränkt.

Die einzige Lösung, die ich sehen kann, ist das Ausführen von Windows unter Linux in einer virtuellen (oder physischen) Maschine.

Ich glaube, Sie haben diese Möglichkeit in Ihrem Beitrag erwähnt und möchten sie lieber vermeiden, aber ich sehe keine andere Möglichkeit. Nur Windows kann NTFS-Dateien exakt kopieren. Linux kann nur NTFS-Partitionen kopieren.

Dieser Artikel könnte helfen: So installieren und führen Sie Microsoft Windows kostenlos unter Linux aus , indem Sie kostenlose virtuelle Maschinen verwenden, die von Microsoft zum Download bereitgestellt werden .

harrymc
quelle
Ich bin mir nicht sicher, aber laut der Manpage von ntfs-3g ist die Option streams_interface=xattrstandardmäßig eingestellt. Wenn ich es richtig verstehe, bedeutet dies, dass NTFS-Dateiattribute (einschließlich Windows-Berechtigungen) xattrAttributen unter Linux zugeordnet werden. Da cp -aund rsync -Xkopiert diese Attribute, sollte es nicht eine exakte Kopie sein?
JojOatXGME
@JojOatXGME: Die Berechtigungsmodelle von Windows und Linux sind völlig unterschiedlich. Nur die grundlegendsten Attribute haben ein genaues Gegenstück.
Harrymc
Ich kenne. Ich behaupte nicht, dass Linux diese Attribute versteht, aber xattr- Attribute sind Schlüssel-Wert-Paris, die vom Betriebssystem nicht verstanden werden müssen. ntfs-3g scheint Windows-Berechtigungen als xattr-Attribut verfügbar zu machen system.ntfs_acl. Das gleiche scheint für andere Matadaten in NTFS zu gelten. Da xattr-Attribute bei Verwendung von rsync -Xoder kopiert werden cp -a, werden möglicherweise auch die Metadaten kopiert . Es hängt von den konkreten Einschränkungen xattrund der Umsetzung ab ntfs-3g, aber es scheint mir möglich.
JojOatXGME
1

Als erstes müssen Sie sich entscheiden, ob Sie Dateien kopieren möchten, ...

oder Sie möchten eine vollständige sektorweise Kopie Ihrer NTFS-Partition erstellen, einschließlich der "alten Daten", der "anderen Dateien" sowie "aller Metadaten", die Sie oben sehr allgemein erwähnt haben.

Verwenden Sie für letzteres dd:

dd if=/dev/sda2 of=/mnt/usbdisk/my-ntfs-partition-D.img bs=1M

Habe Spaß.

Paxsali
quelle
2
Nun, ich habe mich entschieden und es ist bereits in Frage. Ich möchte die Dateien mit allen zugehörigen Metadaten kopieren . Dies sollte möglich sein, da sowohl Quell-FS als auch Ziel-FS NTFS sind und somit die gleichen Funktionen haben. Die Verwendung ddwäre eine schlechte Wahl, da FS-Informationen nicht berücksichtigt werden. Wenn Sie ein NTFS haben, sollten Sie es immer ntfsclonefür die Image-Erstellung verwenden.
Scolytus
Verwenden Sie in diesem Fall robocopyor ntfscopy ( tzworks.net/prototype_page.php?proto_id=9 ), aber keines davon ist unter Linux verfügbar.
Paxsali
Nun, ich habe es auch robocopyin meiner Frage erwähnt. Ich schätze Ihr Angebot, aber es ist keine wirkliche Antwort auf meine Frage.
Scolytus
1

Linux kann den Inhalt von NTFS-Dateien problemlos kopieren , nur nicht alle geänderten / erstellten / aufgerufenen Daten und Attribute (ich gehe davon aus, dass Sie dies beibehalten möchten).

Warum notieren Sie sich nicht einfach die aktuellen Daten und Attribute ( dirsollten sie anzeigen können), kopieren Sie die Dateien unter Linux und ändern Sie nach dem erneuten Ausführen von Windows die Daten und Attribute wieder in die Originale.

Verwenden Sie ein Tool in Windows , dass die Dateien ändern können, wie eine von diesen diejenigen :

Anscheinend behält der Windows-eigene Datei-Explorer auch nicht alle Dateidaten richtig bei . Die tar-Befehle von zip & cygwin sollten jedoch Dateidaten speichern. Daher sollte es auch funktionieren, einen der Windows- Befehle zum Erstellen eines Archivs zu verwenden und dann das Archiv auf eine alte Weise zu kopieren.


Wenn die Attribute sehr wichtig sind und selbst unter Windows schwer zu kopieren sind, sollten sie wahrscheinlich in einer Textdatei oder Datenbank gesichert oder in einen Teil des Dateinamens aufgenommen werden ...

Xen2050
quelle