Поврежденный tar (Результирующая папка меньше, чем упакованный файл)
У меня проблема с тарболом, созданным в версии SuSe 10.3 Server.
Файл.tar имеет размер 6,5 ГБ, но если я распаковываю его в Ubuntu 9.10, результирующая папка имеет размер только 1,5 ГБ.
используемые команды: tar cvf
для упаковки, tar xvf
для распаковки.
Возможно, кто-то знает, как это можно исправить, было бы здорово.
Приветствия.
4 ответа
Если у вас есть символические или жесткие ссылки в каталоге, то tar может добавлять каждую из них как отдельный файл. Когда вы затем распаковываете его в файловой системе Linux, он восстанавливает ссылки, а затем все занимает меньше места.
Tar не для сжатия, просто для создания файла, содержащего несколько файлов. Вот почему вы обычно находите это через gzip или bzip.
Я бы предложил попробовать Пакс. По крайней мере, так называется CentOS. IIRC, он может обрабатывать поврежденные файлы TAR, пропуская недействительные члены tar. В противном случае я предлагаю вам поэкспериментировать с модулем tarfile стандартной библиотеки Python и сделать это программно. Я сделал что-то подобное несколько лет назад.
У вас могут быть лучшие результаты с cpio, он гораздо больше подходит для больших резервных копий и может быть написан для правильной обработки ссылок и специальных файлов.
Если у вас много маленьких файлов, вы можете столкнуться с блокировкой и перегрузкой каталогов в tar. Важная информация - насколько велика была исходная директория. tar может сжать пустое пространство в файлах, не выделяя для них блоки. Попробуйте --apparent-size
возможность du
,
Вы можете попробовать сравнить список файлов, сгенерированных tar -tf
к извлеченным файлам. Извлечь с tar -xf
чтобы увидеть, если вы получаете какие-либо ошибки при извлечении. Попробуйте воссоздать копию tar, чтобы увидеть, насколько она велика.