Existe-t-il un moyen simple de remplacer les fichiers en double par des liens physiques?

137

Je cherche un moyen simple (une commande ou une série de commandes, impliquant probablement find) de trouver des fichiers en double dans deux répertoires et de remplacer les fichiers d'un répertoire par des liens physiques les uns des autres.

Voici la situation: Il s'agit d'un serveur de fichiers sur lequel plusieurs personnes stockent des fichiers audio, chaque utilisateur ayant son propre dossier. Parfois, plusieurs personnes ont des copies des mêmes fichiers audio. En ce moment, ce sont des doublons. Je voudrais faire en sorte qu'ils soient des liens durs, pour économiser de l'espace disque.

Josh
la source
20
Un problème que vous pouvez rencontrer avec des liens durs est que si quelqu'un décide de modifier quelque chose de l'un de leurs fichiers de musique, il pourrait par inadvertance affecter l'accès d'autres personnes à sa musique.
Steven D
4
Un autre problème est que deux fichiers différents contenant "Some Really Great Tune", même s'ils proviennent de la même source avec le même encodeur, ne seront probablement pas identiques bit-à-bit.
msw
3
Une meilleure solution serait peut-être d'avoir un dossier de musique publique ...
Stefan
1
@tante: L'utilisation de liens symboliques ne résout aucun problème. Lorsqu'un utilisateur "supprime" un fichier, son nombre de liens est décrémenté, lorsque le nombre atteint zéro, les fichiers sont réellement supprimés, c'est tout. Donc, la suppression ne pose aucun problème avec les fichiers liés, le seul problème est qu'un utilisateur essaie de modifier le fichier (ce qui est effectivement peu probable) ou de l'écraser (tout à fait possible s'il est connecté).
Maaartinus

Réponses:

41

Il y a un script Perl à http://cpansearch.perl.org/src/ANDK/Perl-Repository-APC-2.002/eg/trimtrees.pl qui fait exactement ce que vous voulez:

Parcourez tous les répertoires nommés sur la ligne de commande, calculez les sommes de contrôle MD5 et recherchez les fichiers avec un MD5 identique. S'ils sont égaux, faites une comparaison réelle s'ils sont vraiment égaux, remplacez le deuxième des deux fichiers par un lien réel vers le premier.

fschmitt
la source
Cela semble parfait , merci !! Je vais essayer et accepter si cela fonctionne comme décrit!
Josh
3
Cela a fait exactement ce que je demandais. Cependant, je pense que ZFS avec déduplication sera éventuellement la solution, car j’ai constaté que les fichiers présentaient de légères différences, de sorte que seuls quelques-uns pouvaient être liés durement.
Josh
11
J'ai voté pour cela, mais après des recherches supplémentaires, je ne l'ai pas fait. rdfindest disponible via les gestionnaires de paquets pour TOUTES les grandes plates-formes (os x, linux, (cyg) win, solaris) et fonctionne à une vitesse native fulgurante. Alors, consultez la réponse ci-dessous.
oligofren
@oligofren je pensais la même chose, mais ensuite j'ai frappé [Errno 31] Too many links. Ce script semble être la seule chose qui gère ça.
Phunehehe
5
Le contrôle de chaque fichier, plutôt que de ceux où il en existe au moins un autre de taille identique, est inutilement inefficace (et inutilement sujet aux collisions de hachage).
Charles Duffy
85

rdfindfait exactement ce que vous demandez (et dans l'ordre, pourquoi les listes). Permet de supprimer les doublons, de les remplacer par des liens souples ou physiques. Combiné avec symlinksvous, le lien symbolique peut aussi être absolu ou relatif. Vous pouvez même choisir un algorithme de somme de contrôle (md5 ou sha1).

Depuis qu'il est compilé, il est plus rapide que la plupart des solutions de script: timesur un dossier de 15 Go avec 2600 fichiers sur mon Mac Mini à partir de 2009, retourne cette

9.99s user 3.61s system 66% cpu 20.543 total

(en utilisant md5).

Disponible dans la plupart des gestionnaires de paquets (par exemple, MacPorts pour Mac OS X).

db
la source
11
+1 j'ai utilisé rdfindet aimé. Il a une -dryrun trueoption qui vous permettra de savoir ce qu’il aurait fait. Remplacer les doublons par des liens en dur est aussi simple que -makehardlinks true. Cela a produit un journal de bord agréable et il m’a permis de savoir combien d’espace a été libéré. De plus, selon l'auteur de référence , rdfind est plus rapide que duff et fslint.
Daniel Trebbien
oooh, gentil. J'avais l'habitude d'utiliser fdupes, mais son option -L pour les dupes en dur est absente du dernier Ubuntu 14.10. Était assez lent, et n’existait pas pour Homebrew sous OSX, cette réponse est donc bien meilleure. Merci!
oligofren
Algorithme très intelligent et rapide.
ndemou
2
Je soupçonne que la performance de cet outil a plus à voir avec l'algorithme lui-même et moins avec s'il s'agit d'un outil compilé ou d'un script. Pour ce type d'opération, le disque sera le goulot d'étranglement presque tout le temps. Tant que les outils de script s'assurent d'avoir une opération d'E / S asynchrone lors de la gravure du processeur sur des sommes de contrôle, ils doivent fonctionner aussi bien qu'un binaire natif.
Cdhowie
rdfind est très dépendant du nouveau système d’exploitation et du compilateur. (ne fonctionnera pas sur CentOS 6.x sans une reconstruction presque complète des outils de développement)
Cosmo F
49

Utilisez l' fdupesoutil:

fdupes -r /path/to/foldervous donne une liste des doublons dans le répertoire (-r le rend récursif). La sortie ressemble à ceci:


nomfichier1
nomfichier2

nomfichier3
nomfichier4
nomfichier5


avec filename1 et filename2 identiques, et filename3, filename4 et filename5 étant identiques.

tante
la source
1
Ubuntu Remarque: depuis septembre 2013, la version 1.50-PR2-3 n'est pas stable, la mise à jour n'apparaît donc pas encore dans Ubuntu.
Stuart Axon
11
Je viens d'essayer d'installer fdupes_1.50-PR2-4 à la fois sur Ubuntu et sur Debian, le drapeau -L non plus. Heureusement, la construction de github.com/tobiasschulz/fdupes était très facile.
neu242
3
Essayez rdfind- comme fdupes, mais plus rapidement et disponible sous OS X et Cygwin.
oligofren
6
fdupessemble ne trouver que des doublons, pas les remplacer par des liens durs, donc pas une réponse à la question IMO.
Calimo
2
Il existe un outil similaire jdupesbasé sur fdupes, mais il peut également remplacer les fichiers en double par symlinks ( -l), hardlinks ( -L) ou demander à btrfs de dédupliquer les blocs au niveau du système de fichiers ( -B, si vous utilisez btrfs).
Marius Gedminas
23

J'utilise hardlinkdepuis http://jak-linux.org/projects/hardlink/

Waltinator
la source
1
Bon conseil, j'utilise une base régulière code.google.com/p/hardlinkpy mais cela n'a pas été mis à jour depuis un moment ...
meduz
2
Cela semble être similaire à l'original hardlinksur Fedora / RHEL / etc.
1
hardlinkest maintenant un binaire natif dans de nombreux systèmes de packages Linux (depuis ~ 2014) et extrêmement rapide. Pour 1,2 millions de fichiers (320 Go), cela ne prenait que 200 secondes (environ 10% de la liaison des fichiers).
Marcel Waldvogel
FWIW, ce qui précède a hardlinkété créé par Julian Andres Klode alors que Fedora a hardlinkété créé par Jakub Jelinek (source: pagure.io/hardlink - nom du paquet Fedora: hardlink)
maxschlepzig le
18

C’est l’une des fonctions fournies par "fslint" - http://fr.flossmanuals.net/FSlint/Introduction

Cliquez sur le bouton "Fusionner":

Capture d'écran

Flimm
la source
4
Le -m va dupliquer les
liens durs
1
Sur Ubuntu, voici ce qu'il faut faire: sudo apt-get install fslint /usr/share/fslint/fslint/findup -m /your/directory/tree(le répertoire / usr / share / fslint / fslint / n'est pas dans $ PATH par défaut)
Jocelyn le
14

Puisque votre objectif principal est d'économiser de l'espace disque, il existe une autre solution: la déduplication (et probablement la compression) au niveau du système de fichiers. Par rapport à la solution à liaison fixe, le problème n’est pas d’affecter par inadvertance d’autres fichiers liés.

ZFS a déduplication (au niveau du bloc, pas au niveau du fichier) depuis la version 23 du pool et la compression depuis longtemps. Si vous utilisez linux, vous pouvez essayer zfs-fuse , ou si vous utilisez BSD, il est supporté de manière native.

Wei-Yin
la source
C’est probablement ce que je ferai éventuellement. Cependant, l’implémentation ZFS de BSD effectue-t-elle la dédu? Je pensais que non.
Josh
De plus, le système de fichiers HAMMER sur DragonFlyBSD prend en charge la déduplication.
Hhaamu
14
ZFS dedup est l'ami de personne. Là où ZFS recommande 1 Go de RAM par 1 To d'espace disque utilisable, vous êtes complètement fou si vous essayez d'utiliser la déduplication avec moins de 32 Go de RAM par 1 To d'espace disque utilisable. Cela signifie que pour un miroir de 1 To, si vous n'avez pas 32 Go de RAM, vous risquez de rencontrer des conditions de mémoire mémoire tôt ou tard qui vont arrêter la machine faute de RAM. Été là-bas, fait cela, toujours en convalescence du SSPT.
Killermist
4
Pour éviter les exigences de RAM excessive avec en ligne Déduplication (c. -à- vérifier chaque écriture), btrfsutilise lot ou hors ligne Déduplication (exécuter chaque fois que vous le jugez utile / nécessaire) btrfs.wiki.kernel.org/index.php/Deduplication
Marcel Waldvogel
3
Mise à jour sept ans plus tard: je suis finalement passé à ZFS et j'ai essayé la déduplication. J'ai constaté que ses besoins en RAM étaient vraiment trop élevés. L'utilisation artisanale des instantanés ZFS a fourni la solution que j'ai finalement utilisée. (Copiez la musique, les instantanés et les clones d'un utilisateur, copiez la musique du deuxième utilisateur dans le clone en utilisant rsync --inplaceuniquement les blocs modifiés stockés.
Josh
7

De nos jours, sur Linux moderne, il existe https://github.com/g2p/bedup qui déduplique sur un système de fichiers btrfs, mais 1) sans autant de temps de numérisation, 2) les fichiers peuvent diverger facilement par la suite.

Matthew Bloch
la source
1
Un arrière-plan et plus d'informations sont disponibles sur btrfs.wiki.kernel.org/index.php/Deduplication (avec une référence à cp --reflink, voir également ci-dessous)
Marcel Waldvogel le
5

Pour trouver les fichiers en double, vous pouvez utiliser duff .

Duff est un utilitaire de ligne de commande Unix permettant de rechercher rapidement des doublons dans un ensemble de fichiers donné.

Il suffit de lancer:

duff -r target-folder

Pour créer automatiquement des liens durs vers ces fichiers, vous devez analyser la sortie de duff avec bash ou un autre langage de script.

Stefan
la source
Très lent cependant - voir rdfind.pauldreik.se/#g0.6
ndemou
5
aptitude show hardlink

Description: Liens physiques multiples copies du même fichier Hardlink est un outil qui détecte plusieurs copies du même fichier et les remplace par des liens physiques.

L'idée a été empruntée à http://code.google.com/p/hardlinkpy/ , mais le code a été écrit à partir de rien et est sous licence MIT. Page d'accueil: http://jak-linux.org/projects/hardlink/

Julien Palard
la source
Le seul programme mentionné ici disponible pour Gentoo sans démasquage et avec support hardlink, merci!
Jorrit Schippers
4

J'ai utilisé de nombreux outils de création de liens durs pour Linux mentionnés ici. Moi aussi, je suis coincé avec ext4 fs, sur Ubuntu, et j'utilise ses cp -l et -s pour hard / softlinking. Mais récemment, nous avons remarqué une copie allégée dans la page de manuel de cp , ce qui impliquerait d’épargner l’espace disque redondant jusqu’à ce que l’ un des côtés soit modifié:

   --reflink[=WHEN]
          control clone/CoW copies. See below

       When  --reflink[=always]  is specified, perform a lightweight copy, where the 
data blocks are copied only when modified.  If this is not possible the
       copy fails, or if --reflink=auto is specified, fall back to a standard copy.
Marcos
la source
Je pense que je vais mettre à jour mon cpalias pour toujours inclure le --reflink=autoparamètre maintenant
Marcos
1
Est-ce que ext4 supporte vraiment --reflink?
7
Ceci est supporté par btrfs et OCFS2. Cela n'est possible que sur les systèmes de fichiers avec copie sur écriture, ce que ne fait pas ext4. Btrfs est vraiment en train de prendre forme. J'adore l'utiliser à cause des reflets et des instantanés. Vous avez moins peur de faire des opérations de masse sur de gros arbres de fichiers.
Clacke
3

Il me semble que vérifier le nom du fichier en premier pourrait accélérer les choses. Si deux fichiers n'ont pas le même nom de fichier, dans de nombreux cas, je ne les considérerais pas comme des doublons. Il semble que la méthode la plus rapide serait de comparer, dans l'ordre:

  • nom de fichier
  • Taille
  • somme de contrôle md5
  • contenu de l'octet

Est-ce que des méthodes font cela? Regardez duff, fdupes, rmlint, fslint, etc.

La méthode suivante a été la plus votée sur commandlinefu.com : Rechercher les fichiers en double (en fonction de la taille en premier, puis du hachage MD5)

La comparaison de nom de fichier peut-elle être ajoutée dans un premier temps, la taille dans un deuxième temps?

find -not -empty -type f -printf "%s\n" | sort -rn | uniq -d | \
  xargs -I{} -n1 find -type f -size {}c -print0 | xargs -0 md5sum | \
  sort | uniq -w32 --all-repeated=separate
johny pourquoi
la source
3
J'ai utilisé duff, fdupeset rmlint, et recommande fortement aux lecteurs de regarder le troisième d'entre eux . Il a un excellent ensemble d’options (et de documentation). Grâce à cela, j'ai pu éviter beaucoup de post-traitement que je devais utiliser avec les autres outils.
dubiousjim
3
Dans ma pratique, le nom de fichier est le facteur le moins fiable à prendre en compte, et je l'ai complètement supprimé de tout effort que je fais en duperant. Combien de install.shfichiers peuvent être trouvés sur un système actif? Je ne peux pas compter le nombre de fois que j'ai sauvegardé un fichier et que j'ai eu des conflits de noms, certains renommage à la volée permettant de l'enregistrer. Inverser le côté: je ne sais pas combien de fois j'ai téléchargé quelque chose de sources différentes, à des jours différents, seulement pour découvrir qu'il s'agit du même fichier avec des noms différents. (Ce qui tue également la fiabilité de l'horodatage.) 1: Taille, 2: Digest, 3: Contenu de l'octet.
Gypsy Spellweaver
@GypsySpellweaver: (1) dépend du cas d'utilisation personnel, n'êtes-vous pas d'accord? Dans mon cas, j'ai plusieurs restaurations à partir de plusieurs sauvegardes, où les fichiers avec le même nom et le même contenu existent dans différents dossiers de restauration. (2) Votre commentaire semble supposer ne comparer que le nom de fichier . Je ne proposais pas d'éliminer les autres contrôles.
johny pourquoi
2

Puisque je ne suis pas un fan de Perl, voici une version bash:

#!/bin/bash

DIR="/path/to/big/files"

find $DIR -type f -exec md5sum {} \; | sort > /tmp/sums-sorted.txt

OLDSUM=""
IFS=$'\n'
for i in `cat /tmp/sums-sorted.txt`; do
 NEWSUM=`echo "$i" | sed 's/ .*//'`
 NEWFILE=`echo "$i" | sed 's/^[^ ]* *//'`
 if [ "$OLDSUM" == "$NEWSUM" ]; then
  echo ln -f "$OLDFILE" "$NEWFILE"
 else
  OLDSUM="$NEWSUM"
  OLDFILE="$NEWFILE"
 fi
done

Cela trouve tous les fichiers avec la même somme de contrôle (qu’ils soient gros, petits ou déjà en liens durs) et les lie ensemble.

Cela peut être grandement optimisé pour les exécutions répétées avec des indicateurs de recherche supplémentaires (par exemple, la taille) et un cache de fichiers (vous n'avez donc pas à refaire les sommes de contrôle à chaque fois). Si quelqu'un est intéressé par la version plus intelligente et plus longue, je peux la poster.

REMARQUE: Comme cela a été mentionné précédemment, les liens physiques fonctionnent tant que les fichiers n'ont jamais besoin d'être modifiés ou déplacés d'un système de fichiers à un autre.

seren
la source
Comment puis-je changer votre script, de sorte qu'au lieu de le lier, il supprimera simplement les fichiers en double et ajoutera une entrée à un fichier CSV, le fichier supprimé -> Fichier ligné. . ???
MR.GEWA
Sûr. La ligne de lien physique: echo ln -f "$ OLDFILE" "$ NEWFILE" remplace simplement le fichier en double par un lien physique, afin que vous puissiez le remplacer par $ NEWFILE.
Seren
et comment sur la ligne suivante, écrivez dans un fichier texte en quelque sorte $ OLDFILE-> NEWFILE ???
MR.GEWA
Ah, d'accord. Oui, ajoutez une ligne après la chaîne, telle que: echo "$ NEWFILE" >> /var/log/deleted_duplicate_files.log
seren
2
Ne réinventez pas la roue. Il existe des solutions plus matures disponibles, telles rdfindque, qui fonctionnent à des vitesses natives et qui nécessitent brew install rdfindou sont nécessaires apt-get install rdfindpour être installées.
oligofren
1

J'ai créé un script Perl qui fait quelque chose de similaire à ce dont vous parlez:

http://pastebin.com/U7mFHZU7

Fondamentalement, il parcourt simplement un répertoire, en calculant la somme SHA1 des fichiers qu'il contient, en le hachant et en reliant les correspondances entre elles. Cela a été utile à maintes reprises.

amphétamachine
la source
2
J'espère pouvoir essayer ça bientôt ... pourquoi ne pas le télécharger sur CPAN ... App :: relink ou quelque chose
xenoterracide
2
@xenoterracide: à cause de toutes les solutions similaires et plus matures qui existent déjà. voir les autres réponses, en particulier rdfind.
oligofren
1
@oligofren Je ne doute pas que de meilleures solutions existent. TMTOWTDI je suppose.
amphetamachine
1

Si vous voulez remplacer les doublons par des liens en dur sur Mac ou tout système UNIX, vous pouvez essayer SmartDupe http://sourceforge.net/projects/smartdupe/ suis développer

Islam
la source
3
Pouvez-vous développer à quel point il est «intelligent»?
Stéphane Gimenez
1
Comment comparer des fichiers de deux répertoires différents?
Burcardo
1

Les applications FSLint ( http://www.pixelbeat.org/fslint/ ) peuvent trouver tous les fichiers équivalents dans n’importe quel dossier (par contenu) et créer des liens physiques. Essaie!

Jorge Sampaio

Jorge HB Sampaio Jr
la source
Il suspend l'analyse de 1 To presque plein sur le disque dur ext3, amène l'ensemble du système à une analyse. Abandonné après 14 heures de "recherches"
Angsuman Chakraborty, le
1

jdupes a été mentionné dans un commentaire mais mérite sa propre réponse, car il est probablement disponible dans la plupart des distributions et tourne assez vite (il vient de libérer 2,7 Go d'une partition de 158% à 158% (lecteur SSD) en une minute environ):

jdupes -rL /foo/bar
Skippy le Grand Gourou
la source
0

Si vous faites des liens en dur, faites attention aux droits sur ce fichier. Avis, propriétaire, groupe, mode, attributs étendus, heure et ACL (si vous l'utilisez) est stocké dans INODE. Seuls les noms de fichiers sont différents car ils sont stockés dans une structure de répertoires et que d'autres pointent vers les propriétés INODE. Cette cause, tous les noms de fichiers liés au même inode ont les mêmes droits d'accès. Vous devez empêcher la modification de ce fichier, car tout utilisateur peut endommager le fichier. C'est simple. Il suffit que n'importe quel utilisateur mette un autre fichier sous le même nom. Le numéro d'inode est ensuite enregistré et le contenu du fichier d'origine est détruit (remplacé) pour tous les noms liés de manière permanente.

La meilleure façon est la déduplication sur la couche du système de fichiers. Vous pouvez utiliser BTRFS (très populaire la dernière fois), OCFS ou similaire. Regardez la page: https://en.wikipedia.org/wiki/Comparison_of_file_systems , plus particulièrement à la table Caractéristiques et déduplication des données de colonne. Vous pouvez cliquer dessus et trier :)

Regardez spécialement le système de fichiers ZFS. Ceci est disponible en tant que FUSE, mais de cette façon, il est très lent. Si vous souhaitez un support natif, consultez la page http://zfsonlinux.org/ . Ensuite, vous devez patcher le noyau, puis installer les outils zfs pour la gestion. Je ne comprends pas pourquoi Linux ne supporte pas les pilotes, mais bien d'autres systèmes d'exploitation / noyaux.

Les systèmes de fichiers prennent en charge la déduplication de deux manières, les fichiers dédoublonnés ou les blocs. ZFS prend en charge le blocage. Cela signifie que le même contenu qui se répète dans le même fichier peut être dédupliqué. Autrement, l'heure à laquelle les données sont dédupliquées peut être en ligne (zfs) ou hors ligne (btrfs).

Notez que la déduplication consomme de la RAM. C’est pourquoi l’écriture de fichiers sur un volume ZFS monté avec FUSE nuit considérablement aux performances. Ceci est décrit dans la documentation. Mais vous pouvez définir en ligne la déduplication activée / désactivée sur le volume. Si vous estimez que des données doivent être dédupliquées, vous devez simplement activer la déduplication, réécrire certains fichiers sur un fichier temporaire et enfin les remplacer. après cela, vous pouvez désactiver la déduplication et restaurer des performances optimales. Bien sûr, vous pouvez ajouter au stockage n’importe quel disque en cache. Cela peut être une rotation très rapide des disques ou des disques SSD. Bien sûr, cela peut être de très petits disques. En vrai travail, ceci remplace la RAM :)

Sous Linux, vous devez prendre soin de ZFS car tout ne fonctionne pas comme il se doit, spécialement lorsque vous gérez un système de fichiers, créez un instantané, etc., mais si vous effectuez une configuration sans le modifier, tout fonctionne correctement. Autrement, vous devriez changer linux en opensolaris, il supporte nativement ZFS :) Ce qui est bien avec ZFS, c’est que ça fonctionne à la fois en tant que système de fichiers et en tant que gestionnaire de volumen similaire à LVM. Vous n'en avez pas besoin lorsque vous utilisez ZFS. Voir la documentation si vous voulez en savoir plus.

Remarquez la différence entre ZFS et BTRFS. ZFS est plus ancien et plus mature, malheureusement uniquement sous Solaris et OpenSolaris (malheureusement étranglé par Oracle). BTRFS est plus jeune, mais la dernière fois, très bien pris en charge. Je recommande le noyau frais. ZFS a une déduplication en ligne, qui ralentit les écritures, car tout est calculé en ligne. BTRFS prend en charge la déduplication hors ligne. Cela économise ensuite les performances, mais lorsque l’hôte n’a plus rien à faire, vous exécutez régulièrement un outil pour effectuer la déduplication. Et BTRFS est créé nativement sous Linux. Peut-être que c'est mieux FS pour vous :)

Znik
la source
1
J'aime bien l' approche de déduplication hors ligne (ou par lots ) btrfs. Excellente discussion sur les options (y compris l' cp --reflinkoption) ici: btrfs.wiki.kernel.org/index.php/Deduplication
Marcel Waldvogel le
ZFS n'est pas uniquement Solaris ou OpenSolaris. Il est supporté nativement dans FreeBSD. De plus, ZFS sur Linux est basé sur un pilote de périphérique; ZFS sur FUSE est une chose différente.
KJ Seefried
0

Les liens physiques ne sont peut-être pas la meilleure idée. si un utilisateur modifie le fichier, cela affecte les deux. Cependant, la suppression d'un lien physique ne supprime pas les deux fichiers. De plus, je ne suis pas tout à fait sûr que les liens physiques prennent la même quantité d’espace (sur le disque dur, pas le système d’exploitation) que plusieurs copies du même fichier; selon Windows (avec l'extension Link Shell), ils le font. Certes, c'est Windows, pas Unix ...

Ma solution serait de créer un fichier "commun" dans un dossier caché et de remplacer les doublons actuels par des liens symboliques ... les liens symboliques seraient alors incorporés à des métadonnées ou à des flux de fichiers alternatifs qui n'enregistrent que les deux "fichiers". sont différentes les unes des autres, comme si une personne voulait changer le nom de fichier ou ajouter une pochette d'album personnalisée ou quelque chose comme ça; cela peut même être utile en dehors des applications de base de données, comme avoir plusieurs versions du même jeu ou logiciel installé et les tester indépendamment avec les plus petites différences.

Amaroq Starwind
la source
0

Le moyen le plus simple est d'utiliser le programme spécial dupeGuru

Capture d'écran de Préférences dupeGuru

comme dit la documentation

Options de suppression

Ces options affectent le déroulement de la suppression des doublons. La plupart du temps, vous n'avez pas besoin de les activer.

Lier les fichiers supprimés:

Les fichiers supprimés sont remplacés par un lien vers le fichier de référence. Vous avez le choix de le remplacer par un lien symbolique ou un lien dur. ... un lien symbolique est un raccourci vers le chemin du fichier. Si le fichier d'origine est supprimé ou déplacé, le lien est brisé. Un lien dur est un lien vers le fichier lui-même. Ce lien est aussi bon qu'un "vrai" fichier. Le fichier lui-même n'est supprimé que lorsque tous les liens physiques vers un fichier sont supprimés.

Sous OSX et Linux, cette fonctionnalité est entièrement prise en charge, mais sous Windows, c'est un peu compliqué. Windows XP ne le prend pas en charge, mais Vista et les versions ultérieures le prennent en charge. Toutefois, pour que la fonctionnalité fonctionne, dupeGuru doit s’exécuter avec des privilèges d’administrateur.

Développeur Rubis Junior Russe
la source