web-dev-qa-db-fra.com

Comment trouver des fichiers sans doublon dans un répertoire séparé

J'ai une vieille copie de sauvegarde de documents. Dans mon répertoire actuel Documents, beaucoup de ces fichiers existent à des emplacements différents, avec des noms différents . J'essaie de trouver un moyen d'indiquer dans la sauvegarde quels fichiers existent et non dans le répertoire Documents, de préférence Nice et GUI-y pour que je peut facilement visualiser un lot de documents.

Lorsque je cherche cette question, beaucoup de gens cherchent des moyens de faire le contraire. Il existe des outils tels que FSlint et DupeGur , mais ils présentent des doublons. Il n'y a pas de mode inversé.

4
Redsandro

Si vous êtes prêt à utiliser la CLI, la commande suivante devrait fonctionner pour vous:

diff --brief -r backup/ documents/

Cela vous montrera les fichiers qui sont uniques à chaque dossier. Si vous le souhaitez, vous pouvez également ignorer les cas de nom de fichier avec le --ignore-file-name-case

Par exemple:

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

De plus, si vous souhaitez signaler uniquement lorsque les fichiers diffèrent (et ne pas signaler la "différence" réelle), vous pouvez utiliser l'option --brief comme suit:

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

Il existe plusieurs outils de comparaison visuelle tels que meld pouvant faire la même chose. Vous pouvez installer meld à partir du référentiel d'univers en:

Sudo apt-get install meld

et utilisez son option "Comparaison de répertoires". Sélectionnez le dossier que vous souhaitez comparer. Après la sélection, vous pouvez les comparer côte à côte:

enter image description here

fdupes est un excellent programme pour rechercher les fichiers en double, mais il ne répertorie pas les fichiers non en double, ce que vous recherchez. Cependant, nous pouvons lister les fichiers qui ne sont pas dans la sortie fdupes en utilisant une combinaison de find et grep.

L'exemple suivant répertorie les fichiers uniques à 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
4
Ron

J'ai pensé que le meilleur flux de travail pour fusionner d'anciennes sauvegardes avec des milliers de fichiers, archivés sous différents répertoires avec des noms différents, est d'utiliser DupeGur après tout. Cela ressemble beaucoup à l’onglet en double de FSlint , mais il a la particularité supplémentaire d’ajouter des sources en tant que 'référence' .

  1. Ajoutez votre répertoire cible (par exemple ~/Documents) en tant que référence .
    • Une référence est en lecture seule et aucun fichier ne sera supprimé.
  2. Ajoutez votre répertoire de sauvegarde en tant que normal .
  3. Trouver des doublons. Supprimez tous les doublons trouvés à partir de la sauvegarde.
  4. Il ne vous reste que des fichiers uniques dans le répertoire de sauvegarde. Utilisez FreeFileSync ou Meld pour les fusionner ou les fusionner manuellement.

Si vous avez plusieurs anciens répertoires de sauvegarde, il est logique de commencer par fusionner le répertoire de sauvegarde le plus récent, puis d'utiliser ce répertoire de sauvegarde comme référence pour le nettoyage. il est dupliqué des anciennes sauvegardes avant de les fusionner dans le répertoire de documents principal. Cela sécurise un travail pour lequel vous n'avez pas à supprimer les fichiers uniques que vous souhaitez supprimer au lieu de les fusionner à partir des sauvegardes.

N'oubliez pas de faire une nouvelle sauvegarde après avoir détruit toutes les anciennes sauvegardes du processus. :)

1
Redsandro