Citat:
BaCkSpAcE je napisao:
Shto vishe to bolje i posle toga odmah obrishem fajl nepovratno (truncate) i tako da nikad nije bilo traga.
Juce sam bas proveravao da li open(path/to/file,O_TRUNC); obrise ceo file sa hard diska.
Naime po mom shvatanju (za sad) kako radi hard disk inode ima svoj size i svoj pocetak.A file prostor za file se racuna od pocetka + size ... O_TRUNC samo size svede na 0 ali je file i dalje fizicki prisutan na HDD. Za ovaj mali opit sam koristio
Code:
man vnconfig
man strings
Code:
bash-2.04# dd if=/dev/zero of=/newfs count=1k bs=1k
1024+0 records in
1024+0 records out
1048576 bytes transferred in 0.052826 secs (19849647 bytes/sec)
bash-2.04# vnconfig -s labels -c vn0 newfs
bash-2.04# disklabel -w -r vn0 auto
bash-2.04# newfs /dev/vn0c
Warning: 2048 sector(s) in last cylinder unallocated
/dev/vn0c: 2048 sectors in 1 cylinders of 1 tracks, 4096 sectors
1.0MB in 1 cyl groups (16 c/g, 32.00MB/g, 256 i/g)
super-block backups (for fsck -b #) at:
32
bash-2.04# mount /dev/vn0c /mnt
Sada je tu montiran jedan filesystem tipa UFS. Tu sam ubacio jedan file sa nekim textom:
Code:
#cat >gg
Danas je poginuo jedan sipta.Hvala kurcu
ctrl+d
#
evo ga i program koji pomenuti file O_TRUNC.
Code:
#include<fcntl.h>
int main(){
int fd=open("/mnt/gg",O_TRUNC);
close(fd);
}
I kad ga pokrenemo file biva prazan (tj. velicina mu se postavlja na 0)
pokrenuvsi ga provericu svoj file
Code:
cd /tmp
cat gg
file je prazan (tj. velicina mu je 0)
E sad da vidimo da li je na nasem filesystemu ostalo nesto?
Code:
bash-2.04# umount /mnt
bash-2.04# vnconfig -u vn0
bash-2.04# strings /newfs
amnesiac
/mnt
tP`B
RMC4
2\pV
][1R
U0:8
F/.h
=p:y
/JmJ
VlZ=
Vb P
Danas je poginuo jedan sipta.Hvala kurcu
bash-2.04#
Ups izgleda da ipak nesto ostaje na fs kad se file O_TRUNC ;o)