6

Я пытаюсь создать пустой файл на основе оставшегося места на жестком диске. Проблема в том, что когда я создаю файл размером 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 ГБ? Благодарю.

2 ответа2

13

Вы создали его в файловой системе, которая поддерживает разреженные файлы, так что на самом деле она занимает всего 1000 байтов, как указано в выводе dd . Пропустить seek и использовать правильный count .

3

Из info coreutils du (выделено мое):

«--Apparent размера»
Печать видимых размеров, а не использование диска. Кажущийся размер файла - это количество байтов, о которых сообщает 'wc -c' в обычных файлах, или, в более общем случае, 'ls -l --block-size = 1' или 'stat --format =% s'. Например, файл, содержащий слово `zoo 'без перевода строки, конечно, будет иметь видимый размер 3. Такой маленький файл может занимать от 0 до 16 КБ или более дискового пространства, в зависимости от типа и конфигурации файловой системы, в которой находится файл. Тем не менее, разреженный файл, созданный с помощью этой команды:

дд bs = 1 поиск = 2 ГБ, если =/dev/null of = большой

имеет кажущийся размер 2 ГиБ, но в большинстве современных систем практически не использует дисковое пространство.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .