У меня есть дамп файловой системы 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: https://superuser.com/a/125408 , В этом может быть какая-то закономерность, которая может помочь диагностировать проблему, я не уверен, что это будет, но в том числе и на всякий случай.
Если есть какая-то информация, которая была бы полезной, не стесняйтесь попросите об этом. В настоящее время у меня нет файловой системы squashfs, которая сгенерировала этот разностный файл, но я могу просто запустить mksquashfs еще раз, если это необходимо, - он последовательно создает файл, который не совпадает.
Версия mksquashfs / unsquashfs (из squashfs-tools):
mksquashfs version 4.2-git (2013/04/07)
unsquashfs version 4.2-git (2013/03/13)
Любые идеи о том, почему это происходит или что я могу сделать, чтобы помочь, очень ценятся.
Edit / Update:
После обновления с версии squashfs-tools, упакованной с Ubuntu на squashfs v4.3, я все равно получаю сообщение об ошибке, но не так много.
Запуск выше команда binary diff создает это для сжатого и декомпрессированного файла с помощью v4.3: http://sprunge.us/DDAM.
Если вы посмотрите на двоичные файлы diff, вы увидите, что файл diff, созданный с помощью v4.3 точно совпадает с последней частью файла, созданного с 4.2-git. Я предполагаю, что это, вероятно, означает, что часть коррупции была исправлена в версии 4.3, но не все.