Copia exacta de archivos de NTFS a otro NTFS usando Linux

14

Intento copiar todos los archivos de un NTFS a una unidad externa y quiero preservar todos los permisos y atributos. La unidad externa ya tiene un NTFS y contiene otros archivos.

He considerado usar las siguientes herramientas:

  • ntfscloneno funciona ya que opera a nivel de sector y clonaría todo el FS, destruyendo así los datos antiguos. Si se usa para crear un archivo de imagen, no puedo acceder al contenido desde una máquina con Windows.
  • rsync no conserva todos los metadatos.

Una alternativa sería usar robocopydentro de un Windows en ejecución, pero preferiría copiar los archivos sin él. (La partición fuente se usa como la del sistema C:\).

¿Cómo puedo copiar los archivos?

Escolito
fuente
55
¿Qué metadatos exactos está tratando de retener aquí que RSYNC no retendrá con los parámetros apropiados? ¿Se refiere a metadatos de tipo de software de archivos de música o permisos FS reales, estructura, tiempo, propietario, etc.? No estoy seguro de lo que ya ha probado con RSYNC, pero parece que usar los parámetros correctos, como -AXogtpor ejemplo, debería retener los metadatos FS en su mayor parte. Explique qué ha intentado que no funciona y qué "metadatos" está viendo que no se retienen entre las particiones NTFS.
Pimp Juice IT
Sé que los archivos en sí se pueden copiar exactamente byte por byte en Linux, pero ¿faltan todas las fechas como creado, modificado y accedido? ¿O usuario / propietario de NTFS y permisos? ¿No hay forma de cambiar estas fechas y permisos en los archivos después de que se vuelven a copiar en Windows NTFS?
Xen2050

Respuestas:

8

No hay forma de copiar exactamente los archivos NTFS, pasando por Linux. Incluso Wine , la capa de compatibilidad de Windows en Linux, funciona mediante la conversión de permisos de un lado a otro entre Linux y Windows, por lo que se limita a su denominador menos común (bastante pequeño).

La única solución que puedo ver es ejecutar Windows en Linux dentro de una máquina virtual (o física).

Creo que ha mencionado esta posibilidad en su publicación y preferiría evitarla, pero no veo otra posibilidad. Solo Windows puede copiar exactamente archivos NTFS; Linux solo es capaz de copiar particiones NTFS.

Este artículo podría ayudar: Cómo instalar y ejecutar Microsoft Windows de forma gratuita en Linux , utilizando máquinas virtuales gratuitas que Microsoft puede descargar .

harrymc
fuente
No estoy seguro de eso, pero de acuerdo con la página de manual de ntfs-3g, la opción streams_interface=xattrestá configurada por defecto. Si lo entiendo correctamente, esto significa que los atributos del archivo NTFS (incluidos los permisos de Windows) se asignan a los xattratributos en Linux. Desde cp -ay rsync -Xcopia estos atributos, ¿no debería ser una copia exacta?
JojOatXGME
@JojOatXGME: Los modelos de permisos de Windows y Linux son completamente diferentes. Solo los atributos más básicos tienen una contraparte exacta.
harrymc
Lo sé. No pretendo que Linux entienda estos atributos, pero los atributos xattr son key-value-paris que el sistema operativo no tiene que entender. ntfs-3g parece hacer que los permisos de Windows estén disponibles como atributo xattr system.ntfs_acl. Lo mismo parece ser cierto para otros matadatos en NTFS. Dado que los atributos xattr se copian al usar rsync -Xo cp -a, también podría copiar los metadatos. Depende de las limitaciones concretas xattry la implementación de ntfs-3g, pero me parece posible.
JojOatXGME
Entonces, ¿cómo podemos probar esto correctamente? eso es lo que necesitamos con una declaración como esta. Podría ser útil solo si puede probarse ...
UV
1

Lo primero es que debe decidir si desea copiar archivos, ...

o desea hacer una copia completa, sector por sector, de su partición NTFS, incluidos los "datos antiguos", los "otros archivos", así como "todos los metadatos" que ha mencionado anteriormente de manera muy amplia.

Para este último, use dd:

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

Que te diviertas.

Paxsali
fuente
2
Bueno, ya me decidí, y ya está en la pregunta. Quiero copiar los archivos con todos los metadatos asociados. Esto debería ser posible porque el FS de origen y el FS de destino son NTFS, por lo que tienen las mismas capacidades. El uso ddsería una mala elección, ya que no tiene en cuenta la información del servicio fijo. Si tiene un NTFS, siempre debe usarlo ntfsclonepara la creación de imágenes.
Scolytus
En este caso, use robocopyor ntfscopy ( tzworks.net/prototype_page.php?proto_id=9 ), pero ninguno de los dos está disponible en Linux.
Paxsali
Bueno, también lo mencioné robocopyen mi pregunta. Así que agradezco su capacidad de pago, pero en realidad no es una respuesta a mi pregunta.
Scolytus
1

Linux puede copiar bien el contenido de los archivos NTFS , solo que no todas las fechas y atributos modificados / creados / accedidos (supongo que eso es lo que desea preservar).

Entonces, ¿por qué no solo dirtoma nota de las fechas y atributos actuales ( debería poder mostrarlos), luego copie los archivos en Linux y, una vez que esté ejecutando Windows, vuelva a cambiar las fechas y atributos a los originales.

Use una herramienta en Windows que pueda cambiar los archivos, como uno de estos :

Aparentemente , el propio Explorador de archivos de Windows ni siquiera conserva todas las fechas de archivo correctamente . Pero los comandos tar de zip & cygwin deberían guardar las fechas de los archivos, por lo que usar uno de esos en Windows para crear un archivo primero también debería funcionar, luego simplemente copie el archivo de la manera anterior.


Si los atributos son súper importantes y difíciles de copiar, incluso en Windows, probablemente deberían ser respaldados en un archivo de texto o base de datos, o formados en parte del nombre de archivo ...

Xen2050
fuente