2014-01-24 2 views
4

Простой вопрос. В x86 Solaris 10 я попытался выполнить сжатие папки (данных) файлов.Как архивировать и извлекать файл .tar.gz

tar -cvf /path/to/Data/* | gzip > /path/to/archive/Data.tar.gz 

Теперь я могу перечислить имена файлов и их размеры с помощью:

gunzip -c Data.tar.gz 

Однако, когда я пытаюсь разархивировать (для проверки) data.tar.gz:

gzip -d Data.tar.gz 
tar -xvf Data.tar 

Я получаю «контрольную сумму ошибки»

Может кто-нибудь предложить правильный способ сжать и извлечь файлы в Solaris 10. Спасибо

ответ

1

Поскольку вы трубу (как и должно быть), вам нужно использовать -, чтобы указать stdin или stdout. Например.

tar -cvf - data/* | gzip > data.tar.gz 
gzip -dc data.tar.gz | tar -xvf - 
+0

По-прежнему возникает следующая ошибка при попытке извлечь ее обратно: «tar: ошибка контрольной суммы каталога».Пожалуйста, совет, спасибо –

+0

Выше работает для меня. Вы что-то делаете с файлом .tar.gz между ними? Выполняются ли команды на разных машинах? –

2

Вы должны направить вывод дегтя CVF на стандартный вывод, чтобы иметь возможность читать его с помощью Gzip:

tar cvf - <path> | gzip > <file> 

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

gnutar cvfz <file> <path> 

Кроме того, вы могли бы сделать что-то вроде:

tar cvf - <path> | ssh remotehost (cd <another dir>; gzip > <file>) 

который изменит каталог перед проносясь.

На странице руководства Solaris tar имеется больше примеров. См. Man tar (8).

16

Вы можете сделать архив в 2 этапа:

$ tar cvf archive.tar file* 
$ gzip archive.tar 

(Это создаст archive.tar.gz, удаляя archive.tar.)

Extraction также в 2 этапа:

$ gunzip archive.tar.gz 

(Это создаст archive.tar и удалить archive.tar.gz.)

$ tar xvf archive.tar 

Чтобы просмотреть список файлов внутри файла .gz:

gzip -l archive.tar.gz 

В качестве альтернативы, вы можете использовать 7zip, которые вместе взятые все файлы, а также сжимать их.

7z a archive.7z Makefile* (to create archive) 
7z l archive.7z   (to list files inside the archive) 
7z e archive.7z   (to extract) 
Смежные вопросы