UNIX Fichiers criteres caracteristique

Répondre
Lefounard
le 12/05/2006 à 15:28
Lefounard
Bonjour,
Voila je dois chercher les criteres caracteristique qui permettes de dire avant toute comparaison du contenu d'un fichier, si deux fichier appartenant a un meme proprio sont identique dans un premier temps avant comparaison du contenu.
Generalement on se base sur les attributs du fichier : en C il y a l'appel systeme qui retourne tout les attributs du fichier sous forme d'une structure.
Je vous la liste :

struct stat {
dev_t st_dev; /* device inode resides on */
ino_t st_ino; /* inode's number */
mode_t st_mode; /* inode protection mode */
nlink_t st_nlink; /* number or hard links to the file */
uid_t st_uid; /* user-id of owner */
gid_t st_gid; /* group-id of owner */
dev_t st_rdev; /* device type, for special file inode */
struct timespec st_atimespec; /* time of last access */
struct timespec st_mtimespec; /* time of last data modification */
struct timespec st_ctimespec; /* time of last file status change */
off_t st_size; /* file size, in bytes */
quad_t st_blocks; /* blocks allocated for file */
u_long st_blksize;/* optimal file sys I/O ops blocksize */
u_long st_flags; /* user defined flags for file */
u_long st_gen; /* file generation number */
};


Pour ma part je pense que les criteres qui permette de voir si deux fichier sont identiques d'un meme proprio sont :
- evidement le proprio iud
- la taille st_size

MAis a part ca, j'en vous pas d'autres, si vous avez des idées ou des conseils merci. Apres je ne sais pas si le nom que porte le "lien" du fichier a une importance, genre si texte.txt et qu'il fait une copie en texte2.txt, est-ce que cela est considere comme un fichier different ou le meme avec seul le lien changer. J'ai pas reussi a savoir ou se trouver le nom de fichier ?!
Ciao,
I am singing in the rain , I am happy again !!
LupusMic
le 13/05/2006 à 19:21
LupusMic
Fait les manipulations suivantes et bonne déduction ;)
echo "Spartacus" > file0
cp file0 file1
cp file0 file2
echo "Gaspard" > file2
ln file0 file3
ln -s file0 file4

ls -li


Est-e que tu connais la différence entre in lien mou et dur ? Ce qu'est un i-node ? Qu'est-ce qu'un fichier ?
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Lefounard
le 13/05/2006 à 23:03
Lefounard
Salut,
J'ai fait ton truc :
$ ls -li
total 8
2335054 -rw-r--r-- 2 vince wheel 10 May 13 21:47 file0
2335055 -rw-r--r-- 1 vince wheel 10 May 13 21:47 file1
2335056 -rw-r--r-- 1 vince wheel 8 May 13 21:48 file2
2335054 -rw-r--r-- 2 vince wheel 10 May 13 21:47 file3
2335057 lrwxr-xr-x 1 vince wheel 5 May 13 21:48 file4 -> file0

Tu as fait un lien physique entre file0 et file3 mais bon c'est pas une copie ca, une copie c'est un "file" qui n'as pas de lien avec ton original.
Apres tu me montres un lien symbolique, (un pointeur sur un pointé) ! Je vois pas trop l'interet de ton truc.

Bon je suis arrivé a ma deduction, je pense que le nom de fichier a aucune importance, et qu'il ne peut pas etre caracteriser comme criteres de comparaison. Par contre, une question m'interpelle :
Par exemple je creer /home/vince/md/foo ayant un contenu "bonjour" , et ensuite je creer /home/vince/ger ayant le meme contenu. Normalement on NE doit PAS considerer ger comme une copie, vu que c'est une nouvelle creation apres !
Alors comment faire pour differencier une copie d'un fichier creer apres et ayant le meme contenu ?!
(Se baser sur la date de creation ?! mais on peut pas vu qu'elle change).
Je sais pas trop en fait;
Merci de vos conseils,
Ciao,
I am singing in the rain , I am happy again !!
Lefounard
le 13/05/2006 à 23:03
Lefounard
Salut,
J'ai fait ton truc :
$ ls -li
total 8
2335054 -rw-r--r-- 2 vince wheel 10 May 13 21:47 file0
2335055 -rw-r--r-- 1 vince wheel 10 May 13 21:47 file1
2335056 -rw-r--r-- 1 vince wheel 8 May 13 21:48 file2
2335054 -rw-r--r-- 2 vince wheel 10 May 13 21:47 file3
2335057 lrwxr-xr-x 1 vince wheel 5 May 13 21:48 file4 -> file0

Tu as fait un lien physique entre file0 et file3 mais bon c'est pas une copie ca, une copie c'est un "file" qui n'as pas de lien avec ton original.
Apres tu me montres un lien symbolique, (un pointeur sur un pointé) ! Je vois pas trop l'interet de ton truc.

Bon je suis arrivé a ma deduction, je pense que le nom de fichier a aucune importance, et qu'il ne peut pas etre caracteriser comme criteres de comparaison. Par contre, une question m'interpelle :
Par exemple je creer /home/vince/md/foo ayant un contenu "bonjour" , et ensuite je creer /home/vince/ger ayant le meme contenu. Normalement on NE doit PAS considerer ger comme une copie, vu que c'est une nouvelle creation apres !
Alors comment faire pour differencier une copie d'un fichier creer apres et ayant le meme contenu ?!
(Se baser sur la date de creation ?! mais on peut pas vu qu'elle change).
Je sais pas trop en fait;
Merci de vos conseils,
Ciao,
I am singing in the rain , I am happy again !!
LupusMic
le 14/05/2006 à 16:59
LupusMic
Bon je suis arrivé a ma deduction, je pense que le nom de fichier a aucune importance

Tout à fait, c'est la première conclusion à laquelle il est important d'arriver ;) En fait,deux noms de fichiers correspondent à un même fichier lorsqu'ils ont le même i-node.

Apres tu me montres un lien symbolique, (un pointeur sur un pointé) ! Je vois pas trop l'interet de ton truc.

Non, le fichier file0 n'est pointé que par le lien file4. file0 et file3 sont le même fichier.

Normalement on NE doit PAS considerer ger comme une copie, vu que c'est une nouvelle creation apres !

C'est quoi une copie ?
- création du fichier
- écriture du contenu du second fichier à partir du premier

Tu ne peux jamais savoir si deux fichiers sont issus d'une copie ou d'un hasard improbable ;)
Tu peux uniquement déterminer si un fichier est identique ou non.

Au fait, ne te base pas sur la date :
cp file0 file5
touch file5

Le fichier file5 est bien la copie de file0, mais la date de modification sera différente.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Lefounard
le 14/05/2006 à 17:14
Lefounard
Salut,
Merci, ouai en fait on en vient a la conclusion qu' une copie est un fichier avec meme taille et meme contenu, dans mon cas meme proprio.
Ciao,
I am singing in the rain , I am happy again !!
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours