Dokładna kopia plików z NTFS do innego NTFS przy użyciu Linuksa

14

Próbuję skopiować wszystkie pliki z NTFS na dysk zewnętrzny i chcę zachować wszystkie uprawnienia i atrybuty. Dysk zewnętrzny ma już system plików NTFS i zawiera inne pliki.

Rozważałem użycie następujących narzędzi:

  • ntfsclonenie działa, ponieważ działa na poziomie sektora i sklonowałby cały FS, niszcząc w ten sposób stare dane. W przypadku utworzenia pliku obrazu nie mogę uzyskać dostępu do zawartości z komputera z systemem Windows.
  • rsync nie zachowuje wszystkich metadanych.

Alternatywą byłoby użycie robocopywewnątrz działającego systemu Windows, ale wolałbym kopiować pliki bez. (Partycja źródłowa jest używana jako systemowa C:\).

Jak mogę skopiować pliki?

Scolytus
źródło
5
Jakie dokładne metadane próbujesz tutaj zachować, których RSYNC nie zachowa przy odpowiednich parametrach? Masz na myśli metadane typu pliku muzycznego lub faktyczne uprawnienia FS, strukturę, czas, właściciela itp.? Nie jestem pewien, co już próbowałeś z RSYNC, ale wydaje się, że użycie prawidłowych parametrów, takich jak -AXogtna przykład, powinno w większości zachować metadane FS. Wyjaśnij, co próbowałeś, ale to nie działa i jakie „metadane”, które widzisz, nie są zachowywane między partycjami NTFS.
Pimp Juice IT
Wiem, że same pliki można skopiować dokładnie bajt po bajcie w systemie Linux, ale czy brakuje wszystkich dat, takich jak utworzone, zmodyfikowane, dostępne? Lub użytkownik / właściciel NTFS i uprawnienia? Czy nie ma możliwości zmiany tych dat i uprawnień do plików po ich skopiowaniu z powrotem do systemu Windows NTFS?
Xen2050,

Odpowiedzi:

8

Nie ma sposobu, aby dokładnie skopiować pliki NTFS, przechodząc przez Linux. Nawet Wine , warstwa kompatybilności z Windows w Linuksie, działa poprzez konwersję uprawnień tam i z powrotem między Linuksem i Windowsem, a zatem ogranicza się do ich (raczej małego) najmniej wspólnego mianownika.

Jedyne rozwiązanie, jakie widzę, to system Windows w systemie Linux na maszynie wirtualnej (lub fizycznej).

Wierzę, że wspomniałeś o tej możliwości w swoim poście i wolałbyś jej unikać, ale nie widzę innej możliwości. Tylko system Windows może dokładnie kopiować pliki NTFS; Linux może kopiować tylko partycje NTFS.

Ten artykuł może pomóc: Jak zainstalować i uruchomić system Microsoft Windows za darmo w systemie Linux przy użyciu bezpłatnych maszyn wirtualnych udostępnionych do pobrania przez Microsoft .

harrymc
źródło
Nie jestem tego pewien, ale zgodnie ze stroną podręcznika ntfs-3g opcja streams_interface=xattrjest ustawiona domyślnie. Jeśli dobrze to rozumiem, oznacza to, że atrybuty pliku NTFS (w tym uprawnienia systemu Windows) są mapowane na xattratrybuty w systemie Linux. Ponieważ cp -ai rsync -Xczy kopiuje te atrybuty, czy nie powinna to być dokładna kopia?
JojOatXGME
@JojOatXGME: Modele uprawnień Windows i Linux są zupełnie inne. Tylko najbardziej podstawowe atrybuty mają dokładny odpowiednik.
harrymc
Wiem. Nie twierdzę, że Linux rozumie te atrybuty, ale atrybuty xattrparą klucz-wartość- pary, która nie musi być rozumiana przez system operacyjny. Wydaje się, że ntfs-3g udostępnia uprawnienia systemu Windows jako atrybut xattr system.ntfs_acl. To samo wydaje się dotyczyć innych matadanych w NTFS. Ponieważ atrybuty xattr są kopiowane podczas używania rsync -Xlub cp -a, może również kopiować metadane. Zależy to od konkretnych ograniczeń xattri realizacji ntfs-3g, ale dla mnie wygląda to na możliwe.
JojOatXGME
więc jak możemy to odpowiednio przetestować? właśnie tego potrzebujemy z takim stwierdzeniem. Może się przydać tylko wtedy, gdy można go przetestować ....
UV
1

Po pierwsze, musisz zdecydować, czy chcesz skopiować pliki ...

lub chcesz utworzyć kompletną kopię sektor po sektorze, zawierającą „stare dane”, „inne pliki”, a także „wszystkie metadane”, o których wspominałeś bardzo szeroko.

W tym drugim przypadku użyj dd:

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

Baw się dobrze.

Paxsali
źródło
2
Cóż, postanowiłem i już o to pytam. Chcę skopiować pliki ze wszystkimi powiązanymi metadanymi. Powinno to być możliwe, ponieważ źródłowy FS, a także docelowy FS to NTFS, dzięki czemu mają te same możliwości. Używanie ddbyłoby złym wyborem, ponieważ nie uwzględnia informacji FS. Jeśli masz NTFS, zawsze powinieneś używać go ntfsclonedo tworzenia obrazów.
Scolytus
W takim przypadku użyj robocopyor ntfscopy ( tzworks.net/prototype_page.php?proto_id=9 ), ale żaden z nich nie jest dostępny w systemie Linux.
Paxsali,
Cóż, wspomniałem również robocopyw moim pytaniu. Doceniam twój budżet, ale tak naprawdę nie jest to odpowiedź na moje pytanie.
Scolytus
1

Linux może dobrze kopiować zawartość plików NTFS , ale nie wszystkie zmodyfikowane / utworzone / dostępne daty i atrybuty (zakładam, że to właśnie chcesz zachować).

Dlaczego więc nie zanotować bieżących dat i atrybutów ( dirpowinien być w stanie je wyświetlić), a następnie skopiować pliki w systemie Linux, a po uruchomieniu systemu Windows ponownie zmienić daty i atrybuty z powrotem na oryginały.

Użyj narzędzia w systemie Windows, które może zmieniać pliki, takie jak jeden z tych :

Najwyraźniej własny Eksplorator plików systemu Windows nawet nie zachowuje właściwie wszystkich dat plików . Ale polecenia tar & zip cygwina powinny zapisywać daty plików, więc najpierw powinno działać jedno z tych w systemie Windows, aby utworzyć archiwum, a następnie po prostu skopiować archiwum w dowolny stary sposób.


Jeśli atrybuty są bardzo ważne i trudne do skopiowania nawet w systemie Windows, prawdopodobnie powinny zostać utworzone kopie zapasowe w pliku tekstowym lub bazie danych, bądź też jako część nazwy pliku ...

Xen2050
źródło