Я пытаюсь создать пустой файл на основе оставшегося места на жестком диске. Проблема в том, что когда я создаю файл размером 1 ГБ, команда df показывает, что оставшееся место всего на 12 кб меньше, чем было до создания файла.
someone@here:/tmp/delete# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 36827144 5031592 29924788 15% /
tmpfs 508508 0 508508 0% /lib/init/rw
varrun 508508 156 508352 1% /var/run
varlock 508508 4 508504 1% /var/lock
udev 508508 140 508368 1% /dev
tmpfs 508508 1108 507400 1% /dev/shm
someone@here:/tmp/delete# dd if=/dev/zero of=tempFile bs=1000 count=1 seek=1000000
1+0 records in
1+0 records out
1000 bytes (1.0 kB) copied, 0.000438915 s, 2.3 MB/s
someone@here:/tmp/delete# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 36827144 5031604 29924776 15% /
tmpfs 508508 0 508508 0% /lib/init/rw
varrun 508508 156 508352 1% /var/run
varlock 508508 4 508504 1% /var/lock
udev 508508 140 508368 1% /dev
tmpfs 508508 1108 507400 1% /dev/shm
Кто-нибудь знает, почему команда df не учитывает весь 1 ГБ? Спасибо.
решение1
Вы создали его в файловой системе, которая поддерживаетразреженные файлытак что на самом деле он занимает всего 1000 байт, как и dd
говорит вывод. Пропустите seek
и используйте правильный count
.
решение2
Отinfo coreutils du
(выделено мной):
'--apparent-size'
Выводить видимые размеры, а не использование диска. Видимый размер файла — это количество байт, сообщаемое 'wc -c' для обычных файлов, или, в более общем смысле, 'ls -l --block-size=1' или 'stat --format=%s'. Например, файл, содержащий слово `zoo' без новой строки, будет, конечно, иметь видимый размер 3. Такой небольшой файл может потребовать от 0 до 16 КБ или более дискового пространства, в зависимости от типа и конфигурации файловой системы, в которой находится файл. Однакоредкийфайл создан с помощью эта команда:dd bs=1 seek=2GiB if=/dev/null of=big
имеетвидимый размер 2 ГиБ, однако в большинстве современных систем это на самом делепочти не использует место на диске.