Точная копия файлов из NTFS в другую NTFS с использованием Linux

14

Я пытаюсь скопировать все файлы из NTFS на внешний диск и хочу сохранить все разрешения и атрибуты. Внешний диск уже имеет NTFS и содержит другие файлы.

Я подумал об использовании следующих инструментов:

  • ntfscloneне работает, так как работает на уровне секторов и клонирует весь FS, уничтожая старые данные. Если используется для создания файла изображения, я не могу получить доступ к содержимому с компьютера Windows.
  • rsync не сохраняет все метаданные.

Альтернативой может быть использование robocopyвнутри работающей Windows, но я бы предпочел копировать файлы без. (Исходный раздел используется как системный C:\.)

Как я могу скопировать файлы?

заболонники
источник
5
Какие именно метаданные вы пытаетесь сохранить здесь, которые RSYNC не сохранит с соответствующими параметрами? Вы имеете в виду метаданные типа программного обеспечения для музыкальных файлов или действительные разрешения FS, структуру, время, владельца и т. Д.? Я не уверен, что вы уже пробовали с RSYNC, но может показаться, что использование правильных параметров, таких как, -AXogtнапример, должно сохранять метаданные FS по большей части. Пожалуйста, объясните, что вы пробовали, что не работает и какие метаданные, которые вы видите, не сохраняются между разделами NTFS.
Сок Pimp IT
Я знаю, что сами файлы могут быть скопированы в байт в байт-формате, но не все ли даты, как созданные, измененные и доступные, отсутствуют? Или NTFS пользователь / владелец и разрешения? Нет ли способа изменить эти даты и разрешения для файлов после их копирования обратно в Windows NTFS?
Xen2050

Ответы:

8

Невозможно точно скопировать файлы NTFS, проходящие через Linux. Даже Wine , уровень совместимости с Windows в Linux, работает путем преобразования разрешений назад и вперед между Linux и Windows и поэтому ограничен их (довольно небольшим) наименее распространенным знаменателем.

Единственное решение, которое я вижу, это запуск Windows на Linux внутри виртуальной машины (или физической).

Я полагаю, что вы упомянули эту возможность в своем посте и предпочли бы избегать ее, но я не вижу другой возможности. Только Windows может точно копировать файлы NTFS; Linux может копировать только разделы NTFS.

Эта статья может помочь: Как бесплатно установить и запустить Microsoft Windows в Linux , используя бесплатные виртуальные машины, доступные для загрузки Microsoft .

harrymc
источник
Я не уверен в этом, но согласно man-странице ntfs-3g, опция streams_interface=xattrустановлена ​​по умолчанию. Если я правильно понимаю, это означает, что атрибуты файлов NTFS (включая разрешения Windows) сопоставляются с xattrатрибутами в Linux. Так как cp -aи rsync -Xкопирует ли это атрибуты, не должно ли это быть точной копией?
JojOatXGME
@JojOatXGME: модели разрешений Windows и Linux совершенно разные. Только самые основные атрибуты имеют точную копию.
harrymc
Я знаю. Я не утверждаю, что Linux понимает эти атрибуты, но атрибуты xattr являются ключом-значением-paris, которые не должны быть понятны операционной системой. NTFS-3G, кажется, делает разрешения Windows доступными в качестве атрибута xattr system.ntfs_acl. То же самое относится и к другим метаданным в NTFS. Поскольку атрибуты xattr копируются при использовании rsync -Xили cp -a, это может также копировать метаданные. Это зависит от конкретных ограничений xattrи реализации ntfs-3g, но для меня это представляется возможным.
JojOatXGME
так как мы можем проверить это правильно? вот что нам нужно с таким утверждением. Это может быть полезно только в том случае, если оно может быть проверено ....
УФ
1

Во-первых, вам нужно принять решение, если вы хотите копировать файлы, ...

или вы хотите сделать полную посекторную копию вашего NTFS-раздела, включая «старые данные», «другие файлы», а также «все метаданные», которые вы упомянули выше, очень широко.

Для последнего используйте dd:

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

Радоваться, веселиться.

Paxsali
источник
2
Ну, я решил, и это уже в вопросе. Я хочу скопировать файлы со всеми связанными метаданными. Это должно быть возможно, потому что исходная ФС, а также конечная ФС - это NTFS, поэтому они имеют одинаковые возможности. Использование ddбыло бы плохим выбором, так как оно не учитывает информацию FS. Если у вас есть NTFS, вы всегда должны использовать ntfscloneдля создания образа.
Сколит
В этом случае используйте robocopy или ntfscopy ( tzworks.net/prototype_page.php?proto_id=9 ), но ни один из них не доступен в Linux.
Paxsali
Ну, я также упомянул robocopyв своем вопросе. Так что я ценю ваше позволение, но это не совсем ответ на мой вопрос.
Сколит
1

Linux может нормально копировать содержимое файлов NTFS , но не все измененные / созданные / доступные даты и атрибуты (я полагаю, это то, что вы хотите сохранить).

Так почему бы вам просто не записать текущие даты и атрибуты ( dirдолжно быть в состоянии их отобразить), затем скопировать файлы в linux, и после запуска Windows снова изменить даты и атрибуты обратно на оригиналы.

Используйте инструмент в Windows, который может изменять файлы, например, один из следующих :

Судя по всему , собственный проводник Windows даже не сохраняет должным образом все даты файлов . Но команды tar в zip & cygwin должны сохранять даты файлов, поэтому сначала следует использовать одну из них в Windows для создания архива, а затем просто скопировать архив любым старым способом.


Если атрибуты очень важны и их трудно скопировать даже в Windows, их, вероятно, следует сохранить в текстовом файле или в базе данных или включить в часть имени файла ...

Xen2050
источник