Tengo una copia de seguridad antigua de documentos. En mi Documents
directorio actual, existen muchos de estos archivos.en diferentes lugares con diferentes nombres. Estoy tratando de encontrar una manera de mostrar qué archivos existen en la copia de seguridad que sí lo hacen.noexiste en el Documents
directorio, preferiblemente agradable y GUI para que pueda ver fácilmente unalotede documentos.
Cuando busco esta pregunta, mucha gente busca formas de hacer lo contrario. Hay herramientas comoFSlintyDupeGuru, pero muestran duplicados. No hay modo invertido.
Respuesta1
Si está listo para usar CLI, el siguiente comando debería funcionar para usted:
diff --brief -r backup/ documents/
Esto le mostrará los archivos que son únicos para cada carpeta. Si lo desea, también puede ignorar los casos de nombre de archivo con el--ignore-file-name-case
Como ejemplo:
ron@ron:~/test$ ls backup/
file1 file2 file3 file4 file5
ron@ron:~/test$ ls documents/
file4 file5 file6 file7 file8
ron@ron:~/test$ diff backup/ documents/
Only in backup/: file1
Only in backup/: file2
Only in backup/: file3
Only in documents/: file6
Only in documents/: file7
Only in documents/: file8
ron@ron:~/test$ diff backup/ documents/ | grep "Only in backup"
Only in backup/: file1
Only in backup/: file2
Only in backup/: file3
Además, si desea informar sólo cuando los archivos difieren (y no informar la "diferencia" real), puede utilizar la --brief
opción como en:
ron@ron:~/test$ cat backup/file5
one
ron@ron:~/test$ cat documents/file5
ron@ron:~/test$ diff --brief backup/ documents/
Only in backup/: file1
Only in backup/: file2
Only in backup/: file3
Files backup/file5 and documents/file5 differ
Only in documents/: file6
Only in documents/: file7
Only in documents/: file8
Existen varias herramientas de diferencias visuales que meld
pueden hacer lo mismo. Puede instalar meld
desde el repositorio del universo mediante:
sudo apt-get install meld
y utilice su opción "Comparación de directorios". Seleccione la carpeta que desea comparar. Después de la selección, puedes compararlos uno al lado del otro:
fdupes
es un excelente programa para encontrar archivos duplicados pero no enumera los archivos no duplicados, que es lo que estás buscando. Sin embargo, podemos enumerar los archivos que no están en la fdupes
salida usando una combinación de find
y grep
.
El siguiente ejemplo enumera los archivos que son exclusivos de backup
.
ron@ron:~$ tree backup/ documents/
backup/
├── crontab
├── dir1
│ └── du.txt
├── lo.txt
├── ls.txt
├── lu.txt
└── notes.txt
documents/
├── du.txt
├── lo-renamed.txt
├── ls.txt
└── lu.txt
1 directory, 10 files
ron@ron:~$ fdupes -r backup/ documents/ > dup.txt
ron@ron:~$ find backup/ -type f | grep -Fxvf dup.txt
backup/crontab
backup/notes.txt
Respuesta2
Tuve el mismo problema con muchos archivos muy grandes y hay muchas soluciones para duplicados pero no para la búsqueda invertida, y tampoco quería buscar diferencias de contenido debido a la gran cantidad de datos.
Así que escribí este script en Python para buscar "archivos aislados".
isolated-files.py --source folder1 --target folder2
esto mostrará cualquier archivo (recursivamente) dentro de la carpeta2 que no esté en la carpeta1 (también recursivamente). También se puede utilizar en conexiones ssh y con varias carpetas.
Respuesta3
Pensé que el mejor flujo de trabajo para fusionar copias de seguridad antiguas con miles de archivos, archivados en diferentes directorios con diferentes nombres es usardupeGurudespués de todo. Se parece mucho alduplicadospestaña deFSlint, pero tiene la característica extra importante de agregar fuentes como'referencia'.
- Agregue su directorio de destino (por ejemplo
~/Documents
, ) comoreferencia.- Areferenciaes de solo lectura y no se eliminará ningún archivo
- Agregue su directorio de respaldo comonormal.
- Encuentra duplicados. Elimine todos los duplicados que se encuentren en la copia de seguridad.
- Solo le quedarán archivos únicos en el directorio de respaldo. UsarSincronización de archivos gratuitosofusionarpara fusionarlos o fusionarlos manualmente.
Si tiene varios directorios de respaldo antiguos, tiene sentido fusionar primero el directorio de respaldo más nuevo como este y luego usar este directorio de respaldo como directorio.referenciapara limpiar sus duplicados de las copias de seguridad anteriores antes de fusionarlos en el directorio principal de documentos. Esto protege unlotede trabajo donde no tiene que eliminar archivos únicos que desea eliminar de las copias de seguridad en lugar de fusionarlos.
Recuerde hacer una copia de seguridad nueva después de haber destruido todas las copias de seguridad antiguas en el proceso. :)
Respuesta4
jdupes
tiene dos opciones útiles para esto: -I --isolate
y -u --print-unique
.
Por ejemplo, para enumerar archivos únicos sólo en el backup
directorio:
jdupes -Iru Documents backup |grep '^backup