Newsgroup: it.comp.os.linux.sys
Titolo: cp -a e dimensione cambiata

Mi � capitato un fenomeno abbastanza strano.
Ho copiato una directory, all'interno della stessa partizione con "cp
-a" e il risultato � stato una dimensione differente.
Il "totale" riportato da "ls -la" � 12070316 nell'originale e 12070540
nella copia ("du -s" riporta rispettivamente 12070312 e 12070536).
Il fatto � che i singoli files, confrontati con ls -la hanno la stessa
e identica dimensione; "diff -r" tra le due directory non riporta
differenze; le propriet� viste da konqueror sono identiche.
Abbiamo in sintesi chi sostiene l'uguaglianza e chi la diversit�.
Cosa pu� essere?
-- 
Ci sono 10 tipi di persone al mondo: quelle che capiscono il sistema binario
e quelle che non lo capiscono.

Il Fri, 03 Oct 2008 00:03:04 +0200, Valerio Vanni scriveva:
VV> Abbiamo in sintesi chi sostiene l'uguaglianza e chi la diversità.
VV> Cosa può essere?
Che nella directory sorgente ci sono uno o più files hard-linkati
Con ls -la lo vedi subito
-- 
Flavio Visentin
Scientists have finally discovered what's wrong with the female brain:
On the left side, there is nothing right, and on the right side, there
is nothing left.

 
sicuro?
hai provato con ls -laR?
$ diff <(cd dir1; ls -laR | awk '{ print $1, $5, $8 }') \
   <(cd dir2; ls -laR | awk '{ print $1, $5, $8 }')

 
questo potrebbe spiegare la differenza tra 'ls -la' e 'du', ma non la 
differenza tra i due ls -la (e i due du)
$ echo "1234567890" > test.txt
$ mkdir tmp
$ ln test.txt tmp/ln_test.txt
$ cp -a tmp tmp2
$ ls -laigG test.txt
6940666 -rw-r--r-- 2 11 2008-10-03 07:35 test.txt
$ ls -laigG tmp
total 20
2572395 drwxr-xr-x  2  4096 2008-10-03 07:36 ./
6930434 drwxr-xr-x 64 12288 2008-10-03 07:36 ../
6940666 -rw-r--r--  2    11 2008-10-03 07:35 ln_test.txt
$ ls -laigG tmp2
total 20
2572405 drwxr-xr-x  2  4096 2008-10-03 07:36 ./
6930434 drwxr-xr-x 64 12288 2008-10-03 07:36 ../
2572406 -rw-r--r--  1    11 2008-10-03 07:35 ln_test.txt
$ du -b tmp/*
11      tmp/ln_test.txt
$ du -b tmp2/*
11      tmp2/ln_test.txt
come vedi... ls -la e du danno le stesse dimensioni nelle due directory, 
nonostante nella prima il file sia solo un hardlink

E` la dimensione della directory stessa!
La directory e`, alla fin fine, un file che contiene l'associazione 
nomi->i-node, e come file occupa dello spazio. Lo vedi salendo di un 
livello e facendo un ls -l.
Se in una directory metti molti file la directory diventa piu` grande, 
per contenere tanti nomi. Se poi cancelli i file la directory rimane grande.
Quando copi la directory, la nuova directory viene creata piccola, 
sufficiente per i soli file che deve contenere.
E` abbastanza normale che la nuova directory sia piu` piccola della vecchia.
Guarda qui:
stefano@puppis:~$ mkdir 1
stefano@puppis:~$ cd 1
stefano@puppis:~/1$ ls -al
total 8
drwxr-xr-x   2 stefano stefano 4096 2008-10-03 10:25 .
drwxr-xr-x  12 stefano stefano 4096 2008-10-03 10:25 ..
stefano@puppis:~/1$ for l in 0 1 2 3 4 5 6 7 8 9; do  for ll in 0 1 2 3 
4 5 6 7 8 9; do for lll in 0 1 2 3 4 5 6 7 8 9; do touch $l$ll$lll; 
done; done; done
stefano@puppis:~/1$ for l in 0 1 2 3 4 5 6 7 8 9; do  for ll in 0 1 2 3 
4 5 6 7 8 9; do for lll in 0 1 2 3 4 5 6 7 8 9; do rm -f $l$ll$lll; 
done; done; done
stefano@puppis:~/1$ ls -al
total 16
drwxr-xr-x   2 stefano stefano 12288 2008-10-03 10:26 .
drwxr-xr-x  12 stefano stefano  4096 2008-10-03 10:25 ..
stefano@puppis:~/1$ cd ..
stefano@puppis:~$ mkdir 2
stefano@puppis:~$ ls -ld ?
drwxr-xr-x  2 stefano stefano 12288 2008-10-03 10:26 1
drwxr-xr-x  2 stefano stefano  4096 2008-10-03 10:28 2
stefano@puppis:~$ du -sk ?
12      1
4       2
Come vedi dopo aver creato e cancellato 1000 file la dimensione di un 
"ls -al" passa da 8 a 16 anche con nessun file!
E se sali di un livello, le 2 dimensioni sono ben diverse, lo vedi sia 
con ls -ld sia con du!
Mistero risolto!!
Ciao
	Stefano



direi proprio di si
anche se a questo punto nascono spontanee due domande:
1 - perche' per i contenuti dei file la cosa non succede?
(se ho un file di 10MB e poi lo riduco a 10byte, non mi occupa avanti 
10M...)
2 - si puo' levare lo spazio 'in eccesso' di una directory?

sufficiente per i soli file che deve contenere.
In effetti sembra valida come spiegazione.
A me per� succede che la nuova � pi� grande.
Il volume in questione � stato ripristinato con il Ghost: pu� darsi
che la directory fosse stata ridotta ai minimi termini? (pi� di quanto
non faccia il SO)


Che io sappia ghost non salva file e directory, ma partizioni.
Quindi la directory ripristinata con ghost non e` una nuova directory, 
ma una vecchia (magari grossa) contenuta in una nuova partizione.
Magari la partizione era piu` grossa, ai tempi in cui e` stato fatto 
ghost! Mah!
Ste


 2 - si puo' levare lo spazio 'in eccesso' di una directory?
Che io sappia occorre creare una nuova dir con un nome temporaneo, 
muoverci dentro tutto il contenuto della vecchia dir (comando mv) e 
quindi rimuovere la vecchia dir, ed infine dare alla nuova il nome della 
vecchia. Non so se esistono metodi migliori. Comunque, essendo la mv 
istantanea, non ci si mette molto, anche se i file sono tanti.
Ciao
	Ste

ghost! Mah!
La partizione era pi� piccola, con il ghost da 150GB � passata a 320.
