Tengo dos carpetas que contienen varios archivos. Algunos de los archivos de la primera carpeta tienen una copia exacta en la segunda carpeta. Me gustaría reemplazar aquellos con un enlace duro. ¿Cómo puedo hacer eso?
Tengo dos carpetas que contienen varios archivos. Algunos de los archivos de la primera carpeta tienen una copia exacta en la segunda carpeta. Me gustaría reemplazar aquellos con un enlace duro. ¿Cómo puedo hacer eso?
Respuestas:
Sé de 4 soluciones de línea de comandos para Linux. Mi preferido es el último enumerado aquí rdfind
, debido a todas las opciones disponibles.
fdupes
Salida de muestra (con las opciones "mostrar tamaño", "recursivo"):
$ fdupes -Sr .
17 bytes each:
./Dir1/Some File
./Dir2/SomeFile
enlace duro
--dry-run
opción. Ejemplo de salida (observe cómo mis dos archivos tienen tiempos de modificación ligeramente diferentes, por lo que en la segunda ejecución le digo que ignore eso):
$ stat Dir*/* | grep Modify
Modify: 2015-09-06 23:51:38.784637949 -0500
Modify: 2015-09-06 23:51:47.488638188 -0500
$ hardlink --dry-run -v .
Mode: dry-run
Files: 5
Linked: 0 files
Compared: 0 files
Saved: 0 bytes
Duration: 0.00 seconds
$ hardlink --dry-run -v -t .
[DryRun] Linking ./Dir2/SomeFile to ./Dir1/Some File (-17 bytes)
Mode: dry-run
Files: 5
Linked: 1 files
Compared: 1 files
Saved: 17 bytes
Duration: 0.00 seconds
sin valor
Salida de muestra (con la opción "recursiva"):
$ duff -r .
2 files in cluster 1 (17 bytes, digest 34e744e5268c613316756c679143890df3675cbb)
./Dir2/SomeFile
./Dir1/Some File
rdfind
find
?).Salida de muestra:
$ rdfind -dryrun true -makehardlinks true .
(DRYRUN MODE) Now scanning ".", found 5 files.
(DRYRUN MODE) Now have 5 files in total.
(DRYRUN MODE) Removed 0 files due to nonunique device and inode.
(DRYRUN MODE) Now removing files with zero size from list...removed 0 files
(DRYRUN MODE) Total size is 13341 bytes or 13 kib
(DRYRUN MODE) Now sorting on size:removed 3 files due to unique sizes from list.2 files left.
(DRYRUN MODE) Now eliminating candidates based on first bytes:removed 0 files from list.2 files left.
(DRYRUN MODE) Now eliminating candidates based on last bytes:removed 0 files from list.2 files left.
(DRYRUN MODE) Now eliminating candidates based on md5 checksum:removed 0 files from list.2 files left.
(DRYRUN MODE) It seems like you have 2 files that are not unique
(DRYRUN MODE) Totally, 17 b can be reduced.
(DRYRUN MODE) Now making results file results.txt
(DRYRUN MODE) Now making hard links.
hardlink ./Dir1/Some File to ./Dir2/SomeFile
Making 1 links.
$ cat results.txt
# Automatically generated
# duptype id depth size device inode priority name
DUPTYPE_FIRST_OCCURRENCE 1 1 17 2055 24916405 1 ./Dir2/SomeFile
DUPTYPE_WITHIN_SAME_TREE -1 1 17 2055 24916406 1 ./Dir1/Some File
# end of file
Duplicate Commander es una posible solución en Windows:
Duplicate Commander es una aplicación gratuita que te permite encontrar y administrar archivos duplicados en tu PC. Duplicate Commander viene con muchas características y herramientas que le permiten recuperar su espacio en disco de esos duplicados.
caracteristicas:
Replacing files with hard links Replacing files with soft links ... (and many more) ...
Para Linux, puede encontrar un script Bash aquí .
Duplicate & Same File Searcher es otra solución más en Windows:
Duplicate & Same Files Searcher (Duplicate Searcher) es una aplicación para buscar archivos duplicados (clones) y enlaces duros NTFS al mismo archivo. Busca contenidos de archivos duplicados sin importar el nombre del archivo (se utiliza la comparación verdadera byte a byte). Esta aplicación permite no solo eliminar archivos duplicados o moverlos a otra ubicación, sino también reemplazar duplicados con enlaces duros NTFS (¡único!)
Tenía una ingeniosa herramienta gratuita en mi computadora llamada Link Shell Extension; no solo fue genial para crear enlaces duros y enlaces simbólicos, ¡sino también Junctions! Además, agregó iconos personalizados que le permiten identificar fácilmente diferentes tipos de enlaces, incluso los que ya existían antes de la instalación; Las flechas rojas representan enlaces duros, por ejemplo, mientras que las verdes representan enlaces simbólicos ... y las cadenas representan uniones.
Desafortunadamente, desinstalé el software hace un tiempo (en una desinstalación masiva de varios programas), por lo que no puedo crear más enlaces manualmente, pero los íconos aún aparecen automáticamente cada vez que Windows detecta un enlace duro, simbólico o de unión.
Recomiendo jdupes . Es una bifurcación mejorada de fdupes , pero también incluye:
--linkhard
, o -L
para abreviarPara su pregunta, simplemente puede ejecutar $ jdupes -L /path/to/your/files
.
Es posible que desee clonar y construir la última fuente de su repositorio de GitHub ya que el proyecto aún está en desarrollo activo.
Los binarios de Windows también se proporcionan aquí. Los binarios empaquetados están disponibles en algunas distribuciones de Linux / BSD, en realidad lo encontré por primera vez $ apt search
.