Mogę użyć, ls -laby uzyskać logiczny rozmiar pliku, ale czy istnieje sposób, aby uzyskać fizyczny rozmiar pliku?
Mogę użyć, ls -laby uzyskać logiczny rozmiar pliku, ale czy istnieje sposób, aby uzyskać fizyczny rozmiar pliku?
Odpowiedzi:
ls -lpoda pozorny rozmiar pliku, czyli liczbę bajtów, które program odczytałby, gdyby odczytał plik od początku do końca. dudałby ci rozmiar pliku „na dysku”.
Domyślnie dupodaje rozmiar pliku w liczbie bloków dysku, ale -hzamiast tego można użyć jednostki czytelnej dla człowieka. Zobacz także instrukcję dudotyczącą twojego systemu.
Zauważ, że w GNU coreutil du(który jest prawdopodobnie tym, co masz w Linuksie), -bpobranie bajtów oznacza --apparent-sizeopcję. Nie tego chcesz użyć, aby uzyskać liczbę bajtów faktycznie używanych na dysku. Zamiast tego użyj --block-size=1lub -B 1.
Z GNU lsmożesz także zrobić ls -s --block-size=1na pliku. To da taki sam numer jak du -B 1dla pliku.
Przykład:
$ ls -l file
-rw-r--r-- 1 myself wheel 536870912 Apr 8 11:44 file
$ ls -lh file
-rw-r--r-- 1 myself wheel 512M Apr 8 11:44 file
$ du -h file
24K file
$ du -B 1 file
24576 file
$ ls -s --block-size=1 file
24576 file
Oznacza to, że jest to plik 512 MB, który zajmuje około 24 KB na dysku. Jest to rzadki plik (głównie zera, które w rzeczywistości nie są zapisywane na dysku, ale reprezentowane jako logiczne „dziury” w pliku). Pliki rzadkie są powszechne podczas pracy z wstępnie przydzielonymi dużymi plikami, np. Obrazami dysków dla maszyn wirtualnych lub plików wymiany itp. Tworzenie pliku rzadkiego jest szybkie, a wypełnianie go zerami jest powolne (i niepotrzebne).
Zobacz także instrukcję fallocatedotyczącą systemu Linux.
du pokaże, ile danych można faktycznie odczytać, a jednocześnie lspokaże zakres przydzielonych sektorów dysku.
dupokazuje ilość dysku faktycznie używanego przez plik, podczas gdy pozorny rozmiar (rozmiar logiczny) pokazany przez lsto liczbę bajtów, które program mógłby z niego odczytać. Jeśli plik jest rzadki, niektóre z odczytanych bajtów byłyby zerami, ale nadal byłyby dostarczane do programu, który je odczytuje (tylko nie z dysku).