Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 14/02/2017, à 22:42

Compte supprimé

Double bogue ? (thunar et pcmanfm) - nautilus est ok sur hardlinks

Bonjour,

il va falloir définir la taille théorique de répertoire contenants plusieurs hardlinks (créés automatiquement par fslint).

Mon ami informaticien (monsieur Christian DELAIR, formateur GNU/Linux au GRETA de PARIS), m'a expliqué que si deux fichiers identiques, peuvent être simplifiés en hardlinks, la taille du répertoire ne contenant que ces deux fichiers hardlinks sera divisé par deux, et augmentée de quelques octets.

C'est le but de la fonction «Fusionner» disponible dans le logiciel fslint : on créé des hardlinks sur tous les fichiers identiques.

(je viens de faire un test sur deux fichiers texte "hardlinkés", la sauvegarde sur le premier entraîne la modification du second sans que le système d'exploitation ne signale le lien en cours, ni ne sauvegarde la copie en tant que nouveau fichier de même nom dans le répertoire du document édité)

Voici le protocole du test de fusion hardlink effectué avec fslint (qui permet d'optimiser la place sur les disques) :

J'ai copié deux photographies (IMG_1837.JPG et IMG_1838.JPG) dans le répertoire ~/test1/a, puis j'ai copié collé ces deux fichiers en IMG_1837+.JPG et IMG_1838+.JPG

ubuntu@ubuntu-64:~/test1/a$ du -H
9340    .
ubuntu@ubuntu-64:~/test1/a$ du -h
9,2M    .
ubuntu@ubuntu-64:~/test1/a$ ls -al
total 9344
drwxrwxr-x 2 ubuntu ubuntu    4096 févr. 14 19:02 .
drwxrwxr-x 4 ubuntu ubuntu    4096 févr. 14 18:53 ..
-rw-rw-r-- 1 ubuntu ubuntu 2439267 janv. 28 17:35 IMG_1837.JPG
-rw-rw-r-- 1 ubuntu ubuntu 2439267 janv. 28 17:35 IMG_1837+.JPG
-rw-rw-r-- 1 ubuntu ubuntu 2336867 janv. 28 18:14 IMG_1838.JPG
-rw-rw-r-- 1 ubuntu ubuntu 2336867 janv. 28 18:14 IMG_1838+.JPG
ubuntu@ubuntu-64:~/test1/a$ ls --inode
1310752 IMG_1837.JPG  1310764 IMG_1837+.JPG  1310753 IMG_1838.JPG  1310765 IMG_1838+.JPG

Chaque fichier est indépendant. Comportement normal.

Après l'action sur le bouton "Fusionner" de fslint (créations de hardlinks)

ubuntu@ubuntu-64:~/test1/a$ du -H
4672    .
ubuntu@ubuntu-64:~/test1/a$ du -h
4,6M    .
ubuntu@ubuntu-64:~/test1/a$ ls -al
total 9344
drwxrwxr-x 2 ubuntu ubuntu    4096 févr. 14 20:59 .
drwxrwxr-x 4 ubuntu ubuntu    4096 févr. 14 18:53 ..
-rw-rw-r-- 2 ubuntu ubuntu 2439267 janv. 28 17:35 IMG_1837.JPG
-rw-rw-r-- 2 ubuntu ubuntu 2439267 janv. 28 17:35 IMG_1837+.JPG
-rw-rw-r-- 2 ubuntu ubuntu 2336867 janv. 28 18:14 IMG_1838.JPG
-rw-rw-r-- 2 ubuntu ubuntu 2336867 janv. 28 18:14 IMG_1838+.JPG
ubuntu@ubuntu-64:~/test1/a$ ls --inode
1310764 IMG_1837.JPG  1310764 IMG_1837+.JPG  1310765 IMG_1838.JPG  1310765 IMG_1838+.JPG

On a bien plusieurs pointeurs par fichier.

(même fonctionnement sous Amiga OS 3.x - Unix like)

Youpi !
Ça fonctionne !!!
(cependant cela n'empêche pas de bien organiser l'arborescence de sauvegarde de ses documents).

En fait, c'est l'action propriétés de pcmanfm (gestionnaire de fichiers) qui continue d'afficher 9,6 Mo (au lieu de 4,8 Mo).

Du coup, j'ai installé thunar et nautilus pour vérifier :

les propriétés de thunar affichent 5 éléments, totalisant 9,6 Mo

les propriétés de nautilus affichent 4 éléments, totalisant 4,8 Mo

Bogues pour thunar et pcmanfm.

Nautilus s'en sort mieux.

Questions :
Quelqu'un peut-il reporter ces boques à thunar et pcmanfm, s'il-vous-plaît ?

Le système d'exploitation ne devrait-il pas vérifier si le fichier est unique ou hardlinké, avant de risquer une sauvegarde qui se propagera à travers l'arborescence ? Et donc proposer de modifier le fichier pointé par le hardlink, ou de créer un autre fichier ?
(Amiga Workbench 3.x avait décidé que la sauvegarde d'un fichier hardlinké, créerait un nouveau fichier, la propagation ne se propageait pas, il me semble)

Ubuntu 16.04 (64 bits) + Lubuntu-Desktop.

Merci,
L_d_v_c@

PS : 1 péta-octets les gens !
1487116198.png

Dernière modification par Compte supprimé (Le 15/02/2017, à 08:45)

#2 Le 15/02/2017, à 09:28

moko138

Re : Double bogue ? (thunar et pcmanfm) - nautilus est ok sur hardlinks

Questions bêtes :
As-tu fait "Actualiser/Rafraîchir" dans tous les gestionnaires de fichiers, avant tes mesures ?

Que ton système voie 1 Po là où il y a 1 To, n'est-ce pas l'indice d'un problème en amont ?


%NOINDEX%
Un utilitaire précieux : ncdu
Photo, mini-tutoriel :  À la découverte de dcraw

Hors ligne

#3 Le 15/02/2017, à 09:55

Compte supprimé

Re : Double bogue ? (thunar et pcmanfm) - nautilus est ok sur hardlinks

moko138 a écrit :

Questions bêtes :

Une question n'est jamais bête.

moko138 a écrit :

As-tu fait "Actualiser/Rafraîchir" dans tous les gestionnaires de fichiers, avant tes mesures ?

Oui, bien-sûr.

moko138 a écrit :

Que ton système voie 1 Po là où il y a 1 To, n'est-ce pas l'indice d'un problème en amont ?

Non, nautilus voit la vraie taille, prédite par monsieur Christian DELAIR.
J'ai créé un fichier de 16 Go, que j'ai ensuite hardlinké 65000 fois.
Je veux bien que la taille apparente soit de 1 pétaoctet ou 1040 téraoctets - normal - mais la taille sur le disque n'est que d'environs 16 Go et les 65000 hardlinks (j'ai oublié, 4 ko par hardlink ?)

Dans l'image suivante, tu vois que PCManFM se plante sur le calcul de la taille sur le disque, de ces hardlinks réunis dans le même répertoire, tandis que Nautilus affiche la vérité.
1487144956.png

#4 Le 15/02/2017, à 15:27

moko138

Re : Double bogue ? (thunar et pcmanfm) - nautilus est ok sur hardlinks

OK, merci !

Par ailleurs, il m'arrive de créer un lien symbolique (ln -s), mais j'ignore ce que tu appelles un "hardlink". Qu'est-ce ?


%NOINDEX%
Un utilitaire précieux : ncdu
Photo, mini-tutoriel :  À la découverte de dcraw

Hors ligne

#5 Le 15/02/2017, à 16:45

Compte supprimé

Re : Double bogue ? (thunar et pcmanfm) - nautilus est ok sur hardlinks

moko138 a écrit :

OK, merci !

Par ailleurs, il m'arrive de créer un lien symbolique (ln -s), mais j'ignore ce que tu appelles un "hardlink". Qu'est-ce ?

De rien.
En gros les liens symboliques sont des renvois vers l'étiquette du nom de fichier (un peu comme un marque-page de Firefox) :

ubuntu@ubuntu-64:~/test2$ ls
ubuntu@ubuntu-64:~/test2$ touch toto
ubuntu@ubuntu-64:~/test2$ ln -s toto mimi
ubuntu@ubuntu-64:~/test2$ ls -al
total 8
drwxrwxr-x  2 ubuntu ubuntu 4096 févr. 15 14:40 .
drwxr-xr-x 48 ubuntu ubuntu 4096 févr. 14 18:55 ..
lrwxrwxrwx  1 ubuntu ubuntu    4 févr. 15 14:40 mimi -> toto
-rw-rw-r--  1 ubuntu ubuntu    0 févr. 15 14:40 toto
ubuntu@ubuntu-64:~/test2$ ls --inode
1310758 mimi  1310733 toto
ubuntu@ubuntu-64:~/test2$ rm toto
ubuntu@ubuntu-64:~/test2$ ls -al
total 8
drwxrwxr-x  2 ubuntu ubuntu 4096 févr. 15 14:41 .
drwxr-xr-x 48 ubuntu ubuntu 4096 févr. 14 18:55 ..
lrwxrwxrwx  1 ubuntu ubuntu    4 févr. 15 14:40 mimi -> toto
ubuntu@ubuntu-64:~/test2$ ls --inode
1310758 mimi
ubuntu@ubuntu-64:~/test2$ cat mimi
cat: mimi: Aucun fichier ou dossier de ce type
ubuntu@ubuntu-64:~/test2$ touch toto
ubuntu@ubuntu-64:~/test2$ cat mimi
ubuntu@ubuntu-64:~/test2$ 

Maintenant, les hardlinks (liens durs/liens physiques) partagent les mêmes i-nodes :

ubuntu@ubuntu-64:~/test2$ rm *
ubuntu@ubuntu-64:~/test2$ dd if=/dev/zero of=titi bs=2000 count=500
500+0 enregistrements lus
500+0 enregistrements écrits
1000000 bytes (1,0 MB, 977 KiB) copied, 0,0036945 s, 271 MB/s
ubuntu@ubuntu-64:~/test2$ ln -P titi tata
ubuntu@ubuntu-64:~/test2$ ls -al
total 1968
drwxrwxr-x  2 ubuntu ubuntu    4096 févr. 15 14:56 .
drwxr-xr-x 48 ubuntu ubuntu    4096 févr. 14 18:55 ..
-rw-rw-r--  2 ubuntu ubuntu 1000000 févr. 15 14:54 tata
-rw-rw-r--  2 ubuntu ubuntu 1000000 févr. 15 14:54 titi
ubuntu@ubuntu-64:~/test2$ du -H
984	.
ubuntu@ubuntu-64:~/test2$ du -h
984K	.
ubuntu@ubuntu-64:~/test2$ ls -alh
total 2,0M
drwxrwxr-x  2 ubuntu ubuntu 4,0K févr. 15 14:56 .
drwxr-xr-x 48 ubuntu ubuntu 4,0K févr. 14 18:55 ..
-rw-rw-r--  2 ubuntu ubuntu 977K févr. 15 14:54 tata
-rw-rw-r--  2 ubuntu ubuntu 977K févr. 15 14:54 titi
ubuntu@ubuntu-64:~/test2$ ls -alH
total 1968
drwxrwxr-x  2 ubuntu ubuntu    4096 févr. 15 14:56 .
drwxr-xr-x 48 ubuntu ubuntu    4096 févr. 14 18:55 ..
-rw-rw-r--  2 ubuntu ubuntu 1000000 févr. 15 14:54 tata
-rw-rw-r--  2 ubuntu ubuntu 1000000 févr. 15 14:54 titi
ubuntu@ubuntu-64:~/test2$ ls --inode
1310733 tata  1310733 titi
ubuntu@ubuntu-64:~/test2$ rm titi
ubuntu@ubuntu-64:~/test2$ ls --inode
1310733 tata
ubuntu@ubuntu-64:~/test2$ ls -alh
total 988K
drwxrwxr-x  2 ubuntu ubuntu 4,0K févr. 15 14:57 .
drwxr-xr-x 48 ubuntu ubuntu 4,0K févr. 14 18:55 ..
-rw-rw-r--  1 ubuntu ubuntu 977K févr. 15 14:54 tata

Tiens, bizarre, la taille indiquée par ls -alh grossit avec les hardlinks.

ubuntu@ubuntu-64:~/test2$ rm *
ubuntu@ubuntu-64:~/test2$ dd if=/dev/zero of=titi bs=2000 count=500
500+0 enregistrements lus
500+0 enregistrements écrits
1000000 bytes (1,0 MB, 977 KiB) copied, 0,0153156 s, 65,3 MB/s
ubuntu@ubuntu-64:~/test2$ ls -alh
total 988K
drwxrwxr-x  2 ubuntu ubuntu 4,0K févr. 15 15:41 .
drwxr-xr-x 48 ubuntu ubuntu 4,0K févr. 14 18:55 ..
-rw-rw-r--  1 ubuntu ubuntu 977K févr. 15 15:41 titi
ubuntu@ubuntu-64:~/test2$ ln -P titi tata
ubuntu@ubuntu-64:~/test2$ ls -alh
total 2,0M
drwxrwxr-x  2 ubuntu ubuntu 4,0K févr. 15 15:42 .
drwxr-xr-x 48 ubuntu ubuntu 4,0K févr. 14 18:55 ..
-rw-rw-r--  2 ubuntu ubuntu 977K févr. 15 15:41 tata
-rw-rw-r--  2 ubuntu ubuntu 977K févr. 15 15:41 titi
ubuntu@ubuntu-64:~/test2$ ln -P titi toto
ubuntu@ubuntu-64:~/test2$ ls -alh
total 2,9M
drwxrwxr-x  2 ubuntu ubuntu 4,0K févr. 15 15:42 .
drwxr-xr-x 48 ubuntu ubuntu 4,0K févr. 14 18:55 ..
-rw-rw-r--  3 ubuntu ubuntu 977K févr. 15 15:41 tata
-rw-rw-r--  3 ubuntu ubuntu 977K févr. 15 15:41 titi
-rw-rw-r--  3 ubuntu ubuntu 977K févr. 15 15:41 toto
ubuntu@ubuntu-64:~/test2$ ls --inode
1310733 tata  1310733 titi  1310733 toto
ubuntu@ubuntu-64:~/test2$ du -h
984K	

ls -alh représente la capacité apparente, du -h la capacité occupée sur le disque.

Dernière modification par Compte supprimé (Le 15/02/2017, à 16:47)