web-dev-qa-db-fra.com

du comptage des liens physiques vers la taille du fichier?

J'ai un système de sauvegarde qui crée des répertoires nommés d'après les horodatages Unix, puis crée des sauvegardes incrémentielles à l'aide d'un système de liens fixes (--link-dest dans rsync), donc généralement la première sauvegarde est très grande, puis les sauvegardes ultérieures sont des fractions aussi grandes.

Voici ma sortie de mes sauvegardes actuelles:

root@athos:/media/awesomeness_drive# du -sh lantea_home/*
31G lantea_home/1384197192
17M lantea_home/1384205953
17M lantea_home/1384205979
17M lantea_home/1384206056
17M lantea_home/1384206195
17M lantea_home/1384207349
3.1G    lantea_home/1384207678
14M lantea_home/1384208111
14M lantea_home/1384208128
16M lantea_home/1384232401
15G lantea_home/1384275601
43M lantea_home/1384318801

Tout semble correct, cependant, prenez par exemple le dernier répertoire, lantea_home/1384318801:

root@athos:/media/awesomeness_drive# du -sh lantea_home/1384318801/
28G lantea_home/1384318801/

J'ai toujours ce comportement, pourquoi le répertoire est-il considéré comme 28G par la deuxième commande du?

Remarque - la sortie reste la même avec les drapeaux -P et -L.

54
Dan LaManna

Les liens physiques sont de véritables références au même fichier (représenté par son inode). Il n'y a pas de différence entre le fichier "d'origine" et un lien dur pointant également dessus. Les deux fichiers ont le même statut, both sont alors des références à ce fichier. Le retrait de l'un d'eux laisse l'autre intact. Seule la suppression du dernier lien dur supprimera enfin le fichier et libérera l'espace disque.

Donc, si vous demandez à du ce qu'il voit dans un seul répertoire, peu importe qu'il y ait des liens physiques pointant ailleurs vers le même contenu. Il compte simplement toutes les tailles de fichiers et les résume. Seuls les liens physiques dans le répertoire considéré ne sont pas comptés plus d'une fois. du est aussi intelligent (tous les programmes ne doivent pas nécessairement l'être).

Donc, en fait, le répertoire A peut avoir une taille du de 28G, le répertoire B peut avoir une taille de 29G, mais ensemble, ils n'occupent toujours que 30G et si vous demandez du de la taille A et B, vous obtiendrez ce numéro.

Disc usage by several directories when hardlinks are involved.

157
Alfe

Et avec le commutateur "-l" du compte également les liens physiques dans chaque sous-répertoire, donc je peux voir, quelle est la taille de la sauvegarde, pas seulement le delta d'incrémentation.

13
Tobias