Поврежденный tar (полученная папка меньше упакованного файла)

Поврежденный tar (полученная папка меньше упакованного файла)

У меня возникла проблема с tarball-архивом, созданным на сервере SuSe 10.3.

Размер файла .tar составляет 6,5 ГБ, но если я распакую его в Ubuntu 9.10, то размер полученной папки составит всего 1,5 ГБ.

используемые команды: tar cvfдля упаковки, tar xvfдля распаковки.

Может быть, кто-то знает, как это можно исправить, было бы здорово.

Ваше здоровье.

решение1

если у вас есть символические или жесткие ссылки в каталоге, то tar может добавлять каждую из них как отдельный файл. Когда вы затем распаковываете его в файловой системе Linux, он восстановит ссылки, и тогда все будет занимать меньше места.

Tar не предназначен для сжатия, а только для создания файла, содержащего несколько файлов. Вот почему вы обычно видите его пропущенным через gzip или bzip.

решение2

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

решение3

Если у вас много маленьких файлов, то вы можете столкнуться с блокировкой и накладными расходами каталогов в tar. Важной информацией является размер исходного каталога. tar мог сжать пустое пространство в файлах, не выделяя для них блоки. Попробуйте --apparent-sizeопцию du.

Вы можете попробовать сравнить список файлов, сгенерированных с помощью, tar -tfс извлеченными файлами. Извлеките с помощью, tar -xfчтобы увидеть, возникают ли какие-либо ошибки при извлечении. Попробуйте заново создать копию tar, чтобы увидеть, насколько она велика.

решение4

Я бы посоветовал попробоватьпакс. По крайней мере, так это называется в CentOS. Если не ошибаюсь, он может обрабатывать поврежденные файлы TAR, пропуская недействительные элементы tar. В противном случае я предлагаю вам поэкспериментировать сtarfileмодуль стандартной библиотеки Python и сделать это программно. Я делал что-то подобное несколько лет назад.

Связанный контент