Вопрос Какую команду мне нужно распаковать / извлечь файл .tar.gz?


Я получил огромный файл .tar.gz от клиента, который содержит около 800 мб файлов изображений (при несжатом использовании). Ftp-сервер нашей хостинговой компании серьезно медленный, поэтому извлечение всех файлов локально и отправка их через ftp нецелесообразно. Я смог загрузить файл .tar.gz на наш сайт хостинга, но когда я схожу в свой каталог и пытаюсь использовать unzip, он дает мне эту ошибку:

[esthers@clients locations]$ unzip community_images.tar.gz
Archive:  community_images.tar.gz
  End-of-central-directory signature not found.  Either this file is not a zipfile, or it constitutes one disk of a multi-part archive.  In the latter case the central directory and zipfile comment will be found on the last disk(s) of this archive.
note:  community_images.tar.gz may be a plain executable, not an archive
unzip:  cannot find zipfile directory in one of community_images.tar.gz or community_images.tar.gz.zip, and cannot find community_images.tar.gz.ZIP, period.

Какую команду мне нужно использовать для извлечения всех файлов в файле .tar.gz?


628
2018-02-08 22:50


происхождения




ответы:


Тип man tar для получения дополнительной информации, но эта команда должна сделать трюк:

tar -xvzf community_images.tar.gz

Чтобы объяснить немного дальше, tar собрал все файлы в один пакет, community_images.tar, Программа gzip применяла сжатие, следовательно, расширение gz. Таким образом, команда выполняет пару вещей:

  • f: это должен быть последний флаг команды, а tar еile должен быть немедленно после. Он сообщает tar имя и путь сжатого файла.
  • z: говорит tar декомпрессировать архив, используя gZIP
  • x: tar может собирать файлы или eИкстрактуйте их. x последнее.
  • v: заставляет говорить о многом. ВВыход erbose показывает все файлы, которые извлекаются.

1059
2018-02-08 22:57



@Shiki Я видел ваше предлагаемое редактирование. Я не думаю, что это подходящее изменение, я предпочитаю, как я объяснил этот инструмент. я делать подумайте tar -xf предложение сделало бы большой дополнительный ответ. - djeikyb
Это одно из лучших объяснений из миллионов аналогично сформулированных вопросов - JohnMerlino
@ KasunSiyambalapitiya По умолчанию попадает в текущую папку. Смотрите также man tar; искать -C вариант. Или, может быть, проверить другой ответ - djeikyb
@nikoss я добавляю v переключаться все время, потому что я как просмотр списка файлов во время извлечения. преподавание этого также готовит читателя к другим командам tar, например tar -tvf foo.tar который отображает содержимое архива без извлечения. - djeikyb
Напоминает мне о Статья xckd о tar.Я должен возвращаться каждый раз. - mgarey


Если вы хотите, чтобы файлы были извлечены в конкретный пункт назначения, вы можете добавить -C /destination/path/
Прежде всего убедитесь, что вы создаете каталог: ~ / Pictures / Community

Пример:

mkdir ~/Pictures/Community
tar xf community_images.tar.gz -C /home/emmys/Pictures/Community/

Вы можете легко запомнить его, если считаете деготь палец Икс трактат a F Ile

gif of process done at terminal

Заметка: Помните, что вы можете выполнять поиск внутри man-страниц с помощью ?+ термин для поиска, а затем n а также N чтобы перейти к следующему или предыдущему экземпляру термина, который вы ищете.


131
2017-08-20 11:02



не забывайте С для "сhange directory "! Кроме того, я чувствую, что лучше не смешивать варианты дефиса и без дефиса (особенно запутывая при использовании ps). - djeikyb
Почему это не так, как любая другая команда? - Jan M.
Мне нравится ваш намек на «дегустацию», - Nam G VU
1+ для анимированного gif - Nick Steele


В какой-то момент tar был обновлен до автоматического распаковки. Все, что вам нужно сейчас:

tar xf community_images.tar.gz

То же самое объясняется:

  • f: это должен быть последний флаг команды, а tar еile должен быть немедленно после. Он сообщает tar имя и путь сжатого файла.
  • x: eИксобрабатывать файлы.

Обратите внимание на отсутствие дефиса для флажков команд. Это связано с тем, что большинство версий tar позволяют использовать параметры стиля gnu и bsd (упрощенно, gnu требует дефиса, bsd - нет).


89
2017-12-31 23:54



Есть ли какая-либо документация по этому поводу? Я искал все ссылки для этого, я никогда не использую флаг -z, и все становится gzipped, поэтому я был обеспокоен, если бы не сжимал свои tarballs вообще, ха-ха. Благодарю. - neurosnap
@neurosnap см. руководство пользователя gnu и Руководство пользователя bsd - djeikyb
Вероятно, было бы лучше отредактировать исходный ответ. - Seth♦
@Seth он чувствует / чувствует себя достаточно отчетливо, чтобы быть отдельным ответом, особенно в контексте разрушительного редактирования, спровоцировавшего его. Я переосмыслию его после работы, хотя, возможно, более простой способ слияния, чем я изначально думал. - djeikyb
@EnricoMariaDeAngelis bsd tar с по крайней мере 2004 года и gnu tar, поскольку по крайней мере 2010 год поддерживал автоматический выбор декомпрессора. возможно, не «недавняя» (эта эпоха? девяностые +?) версия tar требует ручного выбора декомпрессора. - djeikyb


Если вы не можете извлечь .tar.gz использование файла

tar -xvzf fileName.tar.gz

Попробуйте извлечь

tar xf fileName.tar.gz

4
2018-01-05 06:29



если это gzipped tar-файл, первая команда всегда будет работать. если он не работает, у вас нет gzipped tar-файла. последняя команда - отличная рекомендация для людей, которым все равно, какой алгоритм сжатия использовался в их файле tar. - djeikyb