divna velikost souboru
Alexandr Malusek
malusek na hroch.ujf.cas.cz
Pátek Leden 8 12:29:53 CET 1999
davids na iol.cz (David Sauer) writes:
> Martin> Ja bych rekl, ze to je typicky priklad tak receneho deraveho
> souboru.
>
> Ano, ale -k ma vypisovat v KB, -b v bytech _obsazenou velikost_ na
> disku, ale cislo by melo byt stejne (tedy v -b ~1024x vetsi). Nevidim
> duvod, proc by mel du -s vypsat neco jineho nez du -k, pokud tam tedy
> neni chyba ...
Ano, je tam chyba. Mam RH 5.1 s fileutils-3.16-9 a tam se to chova
stejne spatne. Zkusil jsem fileutils-4.0.tar.gz - tam se to jiz chova
OK.
V nejake diskusni skupine jsem nasel jednoduchy priklad, jak pod
Linuxem vytvorit deravy (sparse) soubor:
$ dd if=/dev/zero of=testfile bs=1k count=0 seek=100
0+0 records in
0+0 records out
$ du -k testfile # fileutils-3.16-9
0 testfile
$ du -b testfile # fileutils-3.16-9
102400 testfile # chyba
$ du -b testfile # fileutils-4.0
0 testfile # OK
Nemyslim, ze by dd muselo vzdy zafungovat tak, jako v teto
ukazce. Proto uvadim i jednoduchy program, ktery by mel zafungovat
vzdy - je z neho videt jak deravy soubor vznika.
$ cat sparse.c
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#define SKIP 100000L
int main()
{
char c = 'z';
int fd;
if ((fd = open("x", O_CREAT|O_WRONLY,S_IWUSR|S_IRUSR)) == -1)
{
perror("");
exit(1);
}
lseek(fd, SKIP, SEEK_SET);
write(fd, &c, 1);
return 0;
}
--
A. Malusek (malusek na ujf.cas.cz)
UJF AV CR
Další informace o konferenci Linux