¿Cómo mover directorios que tienen archivos en común de una a otra partición?
Supongamos que tenemos una partición montada en /mnt/Xdirectorios que comparten archivos con enlaces duros. Cómo mover dichos directorios a otra partición, que sea /mnt/Ycon la preservación de esos enlaces duros.
Para una mejor ilustración, ¿qué quiero decir con "directorios que comparten archivos en común con enlaces duros"? Aquí hay un ejemplo:
# let's create three of directories and files
mkdir -p a/{b,c,d}/{x,y,z}
touch a/{b,c,d}/{x,y,z}/f{1,2,3,4,5}
# and copy it with hardlinks
cp -r -l a hardlinks_of_a
Para ser más específicos, supongamos que el tamaño total de los archivos es 10G y cada archivo tiene 10 enlaces duros. La pregunta es cómo moverlo al destino con el uso de 10G (alguien podría decir sobre copiarlo con 100G y luego ejecutar la deduplicación; no es lo que estoy preguntando)

rsync tiene una opción
-Hu--hard-linksopción para esto, y tiene los beneficios habituales de rsync de poder detenerse y reiniciarse, y volver a ejecutarse para tratar eficientemente cualquier archivo que se haya cambiado durante / después de la ejecución anterior.Lea la
rsyncpágina de manual y busque -H. Hay muchos más detalles sobre advertencias particulares.fuente
man rsync: Comenzando con rsync 3.0.0, el algoritmo recursivo utilizado ahora es un escaneo incremental que usa mucha menos memoria que antes y comienza la transferencia después de que se haya completado el escaneo de los primeros directorios. Este escaneo incremental solo afecta nuestro algoritmo de recursión y no cambia una transferencia no recursiva. También solo es posible cuando ambos extremos de la transferencia son al menos la versión 3.0.0. Tenga en cuenta que ambos--delete-beforey--delete-afterdeshabilitar este algoritmo mejorado.rsynces una herramienta increíblemente útil, no siempre es la mejor herramienta para cada trabajo. En estos días, prefiero usar conjuntos de datos ZFS para poder hacer instantáneas yzfs sendellos, principalmente uso rsync en sistemas de archivos que no son ZFS.btrfstiene una instantánea similar + capacidad de envío.Tercera respuesta: la manera POSIX
POSIX no ha estandarizado la
tarutilidad, aunque sí ha estandarizado eltarformato de archivo. Se llama a la utilidad POSIX para manipular archivos tarpaxy tiene la característica adicional de poder hacer la operación de empaque y desempaque en un solo proceso.fuente
Segunda respuesta: La antigua forma de UNIX
Cree un archivo tar en el directorio de origen, envíelo por una tubería y descomprímalo en el directorio de destino.
fuente
tarconserva los enlaces duros. En GNU tar, al menos, puede deshabilitar este comportamiento con--hard-dereferencetar xque no tiene la lista completa de archivos ya que los archivos aún se están canalizando desdetar c. Probablemente, si guardó todo el archivo antes de extraerlo, estaría bien. Estaría muy feliz si alguien pudiera confirmar esa teoría.Fuente: http://www.cyberciti.biz/faq/linux-unix-apple-osx-bsd-rsync-copy-hard-links/
Lo que necesita para hacer una copia exacta es
fuente