Как мне распаковать каталог?

55827
chaimp

У меня есть каталог gzipped "new", который содержит другие каталоги и файлы, которые я сжал следующим образом

gzip -cvr --no-name /path-to-directory/new > new.gz 

Я скопировал это> 700 МБ в другое место (на другом сервере) и теперь хотел бы распаковать его. Итак, на новом сервере я иду в каталог, в котором есть «новый» и я использую

gzip new 

В результате получается один файл размером 880 МБ - без каталогов или небольших файлов.

Что я сделал не так и как я могу это исправить?

Благодарю.

6

3 ответа на вопрос

15
Quentin

Gzip сжимает файлы, а не каталоги. Если вы хотите сжать каталог, вы должны сначала создать тарбол. Вы можете создать тарбол и сжать его за один шаг.

tar cvzf tarball.tar.gz directory/ 

(создать, подробный, gZip, в этот файл)

полностью изменить процесс

tar xvzf tarball.tar.gz 

(Экстракт)

Какой смысл в gzip -r? chaimp 14 лет назад 0
@jeffp: `gzip -r` спустится в каталоги и распакует все файлы в них. он не создаст один файл gzip, содержащий содержимое этих каталогов. например, если у вас есть «dir1», содержащий «foo» и «bar», и «dir2», содержащий «baz», и вы выполняете `gzip -r dir1 dir2`, вы получите:« dir1 / foo.gz » "dir1 / bar.gz" "dir2 / baz.gz" quack quixote 14 лет назад 0
@jeffp: обратите внимание на результаты вашей команды на моем примере: `gzip -cvr --no-names dir *> new.gz` ... теперь" new.gz "содержит то же самое, что` cat dir1 / foo.gz dir1 / bar.gz dir2 / baz.gz> new.gz`. это всего 3 файла сжатых данных, собранных вместе. декомпрессору нечего рассказывать об отдельных файлах. __use tar__. quack quixote 14 лет назад 0
2
Geoff Fritz
tar cf - directory | gzip -9c > foo.tar.gz 

Затем скопируйте это как прежде, затем сделайте обратное:

tar xzf foo.tar.gz 

Если вы используете SSH для передачи файлов, вы можете пропустить промежуточный этап для хранения и передачи файла:

tar cf - directory | gzip -9c | ssh user@hostname "cd /destdir ; tar xzvf -" 

Это особенно полезно, если ваш результирующий tar-файл очень большой и может не помещаться в целевой раздел вместе с несжатыми данными. В этом случае использование rsync может быть лучше в любом случае.

1
Lokal

Похоже, вы должны были использовать tar (с опцией gzip):

# -z : pipe through gzip # -cf : create file tar -zcf new.tgz /path-to-directory 

затем с полученным файлом new.tgz:

# z : gzip # x : extract # p : keep permissions tar zxpf new.tgz 

РЕДАКТИРОВАТЬ

Какой смысл в gzip -r? - Jeffp 37 минут назад

gzip - это потоковый компрессор - он на самом деле не смотрит на содержимое того, что вы сжимаете, кроме того, что нужно для того, чтобы сделать его меньше, чтобы он не имел понятия о каталогах.

Как примечание, я считаю, что bzip2 выполняет сжатие намного лучше, чем gzip - хотя и медленнее.

# -j : pipe through bzip2 # -cf : create file tar -jcf new.tar.bzip2 /path-to-directory  bunzip2 new.tar.bzip2