Почему каталог, скопированный с помощью команды cp, имеет меньший размер, чем исходный - PullRequest
0 голосов
/ 30 января 2019

Я пытаюсь скопировать один каталог с большим количеством файлов в другое место назначения.Я сделал

cp -r src_dir another_destination/

Затем я хотел подтвердить, что размер каталога назначения совпадает с исходным:

du -s src_dir
3782288 src_dir

du -s another_destination/src_dir
3502320 another_destination/src_dir

Тогда у меня возникла мысль, что может быть несколькосимволические ссылки, за которыми не следует команда cp и добавлен флаг -a:

-a То же, что и параметры -pPR.Сохраняет структуру и атрибуты файлов, но не структуру каталогов.

cp -a src_dir another_destination/

, но du -s дал мне те же результаты.Интересно, что и у источника, и у места назначения одинаковое количество файлов и каталогов:

tree src_dir | wc -l
    4293

tree another_destination/src_dir | wc -l
    4293

Что я делаю не так, что получаю разные размеры с помощью команды du?

1 Ответ

0 голосов
/ 25 февраля 2019

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

  • В файловой системе файлы хранятся с определеннымсумма накладных расходов.Эти накладные расходы зависят от файловой системы.Возможно, в двух хранилищах используются разные файловые системы, которые не одинаково эффективны (например, используйте разные размеры блоков, что может быть связано с разными размерами дисков).
  • Другой причиной могут быть жестко связанные файлы в оригинале.Копия могла скопировать жестко связанные файлы несколько раз, чтобы в копии они больше не были жестко связанными.
  • Третьей причиной могут быть редкие файлы, которые содержат большие области нулевых байтов, которые в некоторых файловых системах могут бытьэффективно хранить, не назначая им блоков.

Чтобы исключить хотя бы первую причину (наиболее вероятную), я предлагаю использовать du -bs на обоих деревьях.

...