Comment déplacer des répertoires qui ont des fichiers en commun d'une partition à une autre?
Supposons que nous ayons une partition montée sur /mnt/X
des répertoires partageant des fichiers avec des liens physiques. Comment déplacer de tels répertoires vers une autre partition, que ce soit /mnt/Y
avec la préservation de ces liens en dur.
Pour mieux illustrer ce que je veux dire par "répertoires partageant des fichiers en commun avec des liens durs", voici un exemple:
# 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
Pour être plus précis, supposons que la taille totale des fichiers soit de 10 Go et que chaque fichier comporte 10 liens physiques. La question est de savoir comment le déplacer vers une destination avec l’utilisation de la 10G (quelqu'un pourrait dire à propos de la copie avec 100G puis de la déduplication - ce n’est pas ce que je demande).
rsync a une option
-H
ou--hard-links
pour cela, et présente les avantages habituels de pouvoir être arrêté, redémarré et ré-exécuté pour traiter efficacement tous les fichiers modifiés pendant / après l’exécution précédente.Lisez la
rsync
page de manuel et recherchez -H. Il y a beaucoup plus de détails à ce sujet concernant certaines mises en garde.la source
man rsync
: à compter de rsync 3.0.0, l'algorithme récursif utilisé est désormais une analyse incrémentielle utilisant beaucoup moins de mémoire qu'auparavant et commençant le transfert une fois l'analyse des quelques premiers répertoires terminée. Cette analyse incrémentielle n'affecte que notre algorithme de récursivité et ne modifie pas un transfert non récursif. Cela n'est également possible que lorsque les deux extrémités du transfert sont au moins à la version 3.0.0. Notez que tous les deux--delete-before
et--delete-after
désactivez cet algorithme amélioré.rsync
soit incroyablement utile aussi, il n’est pas toujours le meilleur outil pour chaque travail. Ces jours-ci, je préfère utiliser les ensembles de données ZFS pour pouvoir prendre des clichés instantanészfs send
. J'utilise principalement rsync sur des systèmes de fichiers non-ZFS.btrfs
a une capacité similaire d'instantané + envoi.Troisième réponse: la manière POSIX
POSIX n'a pas normalisé l'
tar
utilitaire, bien qu'il ait normalisé letar
format d'archive. L'utilitaire POSIX permettant de manipuler des archives tar est appelépax
. Il présente également l'avantage de pouvoir effectuer l'opération de décompression et de décompression en un seul processus.la source
Deuxième réponse: l'ancienne manière UNIX
Créez une archive tar dans le répertoire source, envoyez-la par un canal et décompressez-la dans le répertoire de destination.
la source
tar
préserve les liens durs. Dans GNU tar, vous pouvez au moins désactiver ce comportement avec--hard-dereference
tar x
fait que le ne possède pas la liste complète des fichiers, car les fichiers sont toujours acheminés depuis letar c
. Probablement, si vous avez sauvegardé l'intégralité de l'archive avant de l'extraire, tout ira bien. Je serais très heureux si quelqu'un pouvait confirmer cette théorie.Source: http://www.cyberciti.biz/faq/linux-unix-apple-osx-bsd-rsync-copy-hard-links/
Ce dont vous avez besoin pour faire une copie exacte, c'est
la source