`squashfs-tools` создает неправильно сжатый файл
У меня есть дамп файловой системы 6.3G, который я пытался сжать с помощью squashfs, но после использования unsquashfs
сгенерированный файл отличается от исходного дампа.
Я сгенерировал разницу между исходным файлом и файлом в системе squashfs с помощью следующей команды:
cmp -l /media/daboross/extstorage/backup-2014-12-05/sda7_backup.img \
/media/daboross/disk/sda7_backup.img \
| gawk '{printf "%08X %02X %02X\n", $1, strtonum(0$2), strtonum(0$3)}' \
> diff.txt
где /media/daboross/extstorage/backup-2014-12-05/sda7_backup.img
это оригинальный файл и /media/daboross/disk/
это монтирование файла squashfs См. https://superuser.com/a/125408 источник этой команды.
Вот сгенерированный файл diff: http://sprunge.us/BFPS. В этом может быть какая-то закономерность, которая может помочь диагностировать проблему, я не уверен, что это будет, но учту это на всякий случай.
Если есть какая-либо информация, которая будет полезна, не стесняйтесь спрашивать об этом. В настоящее время у меня нет файловой системы squashfs, сгенерировавшей этот файл различий, но я могу просто запустить mksquashfs
Опять же, если это необходимо - он последовательно создает файл, который не совпадает.
Версия mksquashfs / unsquashfs (из squashfs-tools):
mksquashfs version 4.2-git (2013/04/07)
unsquashfs version 4.2-git (2013/03/13)
Любые идеи о том, почему это происходит или что я могу сделать, чтобы помочь, с благодарностью.
Редактировать /Update:
После обновления с версии squashfs-tools, поставляемой с Ubuntu, до squashfs v4.3, я все еще получаю сообщение об ошибке, но не так много.
Выполнение вышеуказанной двоичной команды diff производит это для файла, сжатого и распакованного с использованием v4.3: http://sprunge.us/DDAM.
Если вы посмотрите на двоичные файлы diff, вы увидите, что файл diff, созданный с v4.3, точно такой же, как и последняя часть файла, созданная с 4.2-git. Я предполагаю, что это, вероятно, означает, что часть повреждения была исправлена в v4.3, но не все.
1 ответ
Очевидный момент - вы жалуетесь, что Unsquashfs генерирует другой файл, но затем демонстрируете это, монтируя файловую систему Squashfs и сравнивая это....
Если бы ошибка была в Unsquashfs, вы бы ожидали, что монтирование файловой системы будет работать (с правильным выводом). Если и Unsquashfs, и монтирование не работают, тогда ошибка (если есть), вероятно, будет в Mksquashfs.
Версия mksquashfs / unsquashfs (из squashfs-tools):
mksquashfs версия 4.2-git (2013/04/07)
unsquashfs версия 4.2-git (2013/03/13)
Они выглядят как снимки из моего дерева разработки git (в версии есть -git).
Возможно, они были сняты, когда код разработки находился в несовместимом состоянии или имел временные ошибки.
Вам следует попробовать релизные версии squashfs-tools. Squashfs-tools 4.3 был выпущен в этом году, и вы должны попробовать это. Это, однако, имеет известную ошибку, приводящую к неправильным файловым системам в некоторых случаях (появившуюся в сентябре 2011 года), но это не похоже на ошибку, с которой вы столкнулись.
В зависимости от того, работает ли вышеуказанный Squashfs-tools 4.3, вам также следует попробовать более раннюю версию Squashfs-tools 4.2 (с 2011 года) и последнюю версию разработки от git (где была исправлена одна известная ошибка повреждения файловой системы).
Архивные релизы и дерево разработки git можно получить из