GZip весь каталог - PullRequest
       11

GZip весь каталог

1 голос
/ 25 мая 2020

Я использовал следующее:

gzip -9 -c -r <some_directory> > directory.gz

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

Я пробовал

gunzip directory.gz  

У меня остался только один файл, а не структура каталогов.

Ответы [ 2 ]

0 голосов
/ 25 мая 2020

Как уже упоминалось, gzip - это инструмент сжатия файла , а не инструмент архивирования. Он не может работать с каталогами. Когда вы запускаете его с -r, он найдет все файлы в иерархии каталогов и сжимает их, т.е. заменяет path/to/file на path/to/file.gz. Когда вы передаете -c, вывод gzip записывается в стандартный вывод вместо создания файлов. Фактически, вы создали один большой файл, содержащий несколько файлов, сжатых с помощью gzip.

Теперь вы можете найти номер заголовка / magi файла gzip c, который равен 1f8b, а затем восстановить файлы вручную.

Разумно сейчас сделать для создания резервных копий (если вы еще этого не сделали). Бэкапы всегда помогают (особенно с такими проблемами как юорс). Создайте резервную копию вашего directory.gz файла сейчас . Затем читайте дальше.

К счастью, есть более простой способ, чем восстановление всех файлов вручную: с помощью binwalk , служебной программы судебной экспертизы, которая может использоваться для извлечения файлов из других файлов. Я пробовал это с тестовым файлом, который был создан так же, как и ваш. Запуск binwalk -e file.gz создаст папку со всеми извлеченными файлами. Ему даже удается восстановить исходное имя файла. Вероятно, иерархия каталогов потеряна. Но, по крайней мере, у вас есть содержимое ваших файлов и их имена. Удачи!

Помните: резервные копии необходимы.

(Для полноты картины: то, что вы, вероятно, собирались запустить: tar czf directory.tar.gz directory, а затем tar xf directory.tar.gz)

0 голосов
/ 25 мая 2020

gzip сжимает 1+ файлов, но не предназначен для работы как утилита архивирования. Опубликованная строка cmd даст N сжатых файловых изображений, объединенных в стандартный вывод и перенаправленных в указанный выходной файл; к сожалению, такие вещи, как имена файлов и любые каталоги, не будут записаны. Такая пара должна работать:

(создать)

tar -czvf dir.tar.gz <some-dir>

(извлечь)

tar -xzvf dir.tar.gz
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...