Ad esempio per spiegare i concetti che stanno dietro a un hard link andiamo a creare un file di test da 1Gb con il comdando dd.
[rdmbe@drurhs01 tmp]$ df -h /tmp/ Filesystem Size Used Avail Use% Mounted on /dev/vg00-tmplv 4.0G 521M 3.3G 14% /tmp [rdmbe@drurhs01 tmp]$ dd if=/dev/zero of=/tmp/zero.img bs=1M count=1000 1000+0 records in 1000+0 records out [rdmbe@drurhs01 tmp]$ df -h /tmp/ Filesystem Size Used Avail Use% Mounted on /dev/vg00-tmplv 4.0G 1.4G 2.4G 38% /tmp [rdmbe@drurhs01 tmp]$ ls -lrt zero.img -rw-rw-r-- 1 rdmbe rdmbe 1048576000 Mar 18 16:22 zero.img
[rdmbe@drurhs01 tmp]$ mkdir temp [rdmbe@drurhs01 tmp]$ sleep 1 && ln zero.img temp/zero.img.$(date +%Y%m%d-%H.%M.%S).copy [rdmbe@drurhs01 tmp]$ sleep 1 && ln zero.img temp/zero.img.$(date +%Y%m%d-%H.%M.%S).copy [rdmbe@drurhs01 tmp]$ sleep 1 && ln zero.img temp/zero.img.$(date +%Y%m%d-%H.%M.%S).copy [rdmbe@drurhs01 tmp]$ ls -lrth temp/ total 3.0G -rw-rw-r-- 4 rdmbe rdmbe 1000M Mar 18 16:22 zero.img.20110318-16.25.20.copy -rw-rw-r-- 4 rdmbe rdmbe 1000M Mar 18 16:22 zero.img.20110318-16.24.58.copy -rw-rw-r-- 4 rdmbe rdmbe 1000M Mar 18 16:22 zero.img.20110318-16.24.40.copy
Il numero di link di un file è espresso dal numero presente subito dopo i diritti del file (nel nostro caso 4). Da notare che l’occupazione del file system è rimasta invariata:
[rdmbe@drurhs01 tmp]$ df -h . Filesystem Size Used Avail Use% Mounted on /dev/vg00-tmplv 4.0G 1.4G 2.4G 38% /tmp
Ora se vogliano individuare tutte le copie di un file è necessario usare il suo inode.
[rdmbe@drurhs01 tmp]$ ls -lrti zero.img 22 -rw-rw-r-- 4 rdmbe rdmbe 1048576000 Mar 18 16:22 zero.img [rdmbe@drurhs01 tmp]$ find /tmp/ -inum '22' 2>/dev/null /tmp/zero.img /tmp/temp/zero.img.20110318-16.25.20.copy /tmp/temp/zero.img.20110318-16.24.40.copy /tmp/temp/zero.img.20110318-16.24.58.copy
Se ad esempio andiamo a cancellare il file originale, rimangono ancora gli hard link e l’occupazione del file system rimane invariata (da notare che il numero di link del file è passato da 4 a 3).
[rdmbe@drurhs01 tmp]$ rm zero.img [rdmbe@drurhs01 tmp]$ cd temp [rdmbe@drurhs01 temp]$ ls -lrt total 3075012 -rw-rw-r-- 3 rdmbe rdmbe 1048576000 Mar 18 16:22 zero.img.20110318-16.25.20.copy -rw-rw-r-- 3 rdmbe rdmbe 1048576000 Mar 18 16:22 zero.img.20110318-16.24.58.copy -rw-rw-r-- 3 rdmbe rdmbe 1048576000 Mar 18 16:22 zero.img.20110318-16.24.40.copy [rdmbe@drurhs01 temp]$ df -h . Filesystem Size Used Avail Use% Mounted on /dev/vg00-tmplv 4.0G 1.4G 2.4G 38% /tmp
Si può usare il comando stat per vedere le statistiche sul file (Inode e Links):
[rdmbe@drurhs01 tmp]$ stat zero.img | grep -vi Access | grep -vi Modify | grep -vi change File: `zero.img' Size: 1048576000 Blocks: 2050008 IO Block: 4096 regular file Device: fd03h/64771d Inode: 22 Links: 4
Alcuni link interessanti: