У меня есть три копии одной и той же папки, но размеры у них разные. Почему?
У меня есть папка "Documents", которую я скопировал с зашифрованного lvm на жестком диске моего настольного компьютера на зашифрованный раздел luks на внешнем диске. Затем я скопировал эту папку с внешнего диска на зашифрованный lvm на жестком диске моего ноутбука.
Итак, у меня есть три копии одной и той же папки:
- Рабочий стол
- Внешний диск
- Ноутбук
Я использовал diff
настольный компьютер и внешний диск --> никакой разницы.
Я использовал diff
ноутбук и внешний диск --> никаких различий.
Но у меня для этих трех случаев предусмотрены папки разного размера.
я использовал
du -bs --apparent-size Documents
для измерения размеров. Вот результаты:
- Рабочий стол: 1735750760
- Внешний диск: 1735742568
- Ноутбук: 1735746664
Итак, мы замечаем, что есть небольшая разница между размерами. Небольшая разница, но все же есть. Мне было интересно, почему так. У вас есть объяснение?
решение1
Вы, возможно, заметили, что разница между разными папками заключается в следующем:
Desktop: 1735750760
- 8192
External drive: 1735742568
+ 4096
Laptop: 1735746664
По моему опыту, такие различия в блоках 4K обычно возникают из-за изменений размеров каталогов. Если вы сравните размеры самих каталогов (в файловых системах ext они обычно кратны 4K), вы можете обнаружить разницу.
(например, каталоги иногда становятся меньше, когда они реструктурируются во время операции копирования, и удаленные записи таким образом очищаются)
Чтобы найти каталоги, которые отличаются по размеру, вам придется сравнить каталоги друг с другом. Следующий скрипт может помочь вам в этом:
#!/bin/bash
DIR1="${1%/}/"
DIR2="${2%/}/"
diff \
<(find $DIR1 -type d -printf "%k %p\n" | sed -e "s|$DIR1||" | sort -k2) \
<(find $DIR2 -type d -printf "%k %p\n" | sed -e "s|$DIR2||" | sort -k2)
Скопируйте код в новый файл (например, dircomp.sh) и сделайте его исполняемым chmod +x dircomp.sh
. Затем назовите его как ./dircomp.sh /home/lemenhir/ /media/lemenhir/ExternalDrive/
.
Теперь вывод должен содержать только каталоги с разными размерами и может выглядеть следующим образом:
< 4 Documents/Appartement/Bail
> 8 Documents/Appartement/Bail
где строки, начинающиеся с, <
выводят список каталогов, расположенных в каталоге, указанном в качестве первого параметра (например, /home/lemenhir/), а строки, начинающиеся с, >
выводят список каталогов, расположенных в каталоге, указанном в качестве второго параметра (например, /media/lemenhir/ExternalDrive/).
Если отображаются одиночные строки, то каталог не существует в противоположном каталоге.
Надеюсь это поможет.