Почему «du -sh» показывает другой размер папки после копирования?

442
user3262987

Я хочу сделать простое резервное копирование и скопировать все файлы из одной папки в другую. ОС - это Debian.

  • Когда я делаю du -shв исходной папке, я получаю 436G.
  • Делая то же самое в пункте назначения, я получаю только 384G.

Если я подключаю обе папки через Samba к машине с Windows, обе папки имеют одинаковый размер.

Может кто-нибудь объяснить мне, почему duпоказывает разные размеры?

2
Можете ли вы попробовать сделать `ls -lah` для каталогов источника и назначения? Могу поспорить, они одинаковы. [Ответ] (https://superuser.com/a/1294727/167207), который ссылается на `--apparent-size`, является хорошим местом для того, что происходит. JakeGould 6 лет назад 0

1 ответ на вопрос

2
Pedro

duесть вариант, --apparent-sizeкоторый может вам помочь. Я предполагаю, что два диска имеют разные размеры блоков. Если файл только частично использует блок, остальные не могут использовать остальные, поэтому по умолчанию du считает использование диска в блоках.

Чтобы получить размер блока, который использует файловая система ext в / dev / sda1, вы можете сделать:

sudo tune2fs -l /dev/sda1 | grep 'Block size' 

Если вы обеспокоены тем, что не все ваши файлы были скопированы, вы можете получить такую ​​программу, как cfvсоздание рекурсивного хэша для исходных файлов и проверка резервной копии с его помощью.

Создать контрольные суммы из оригиналов :

cfv -p /path/to/origin -C -rr -f /tmp/checksum.sha1 

Проверьте резервную копию против контрольных сумм :

cfv -p /path/to/backup -T -u -f /tmp/checksum.sha1