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

538

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

[[email protected] 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?

    
задан EmmyS 08.02.2011 в 23:50
источник

4 ответа

885

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

tar -xvzf community_images.tar.gz

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

  • f : это должен быть последний флаг команды, а tar f ile должен быть сразу после. Он сообщает tar имя и путь сжатого файла.
  • z : говорит tar дефрагментировать архив, используя g z ip
  • x : tar может собирать файлы или e x трассировать их. x делает последнее.
  • v : многое делает. V Выход erbose показывает все файлы, которые были извлечены.
ответ дан djeikyb 08.02.2011 в 23:57
источник
110

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

Пример:

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

Вы можете легко запомнить его, если вы считаете, что tar использовать X тракт a F ile

Примечание. Убедитесь, что вы сначала создали каталог ( mkdir ~/Pictures/Community ).

    
ответ дан JorgeArtware 20.08.2014 в 13:02
81

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

tar xf community_images.tar.gz

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

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

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

    
ответ дан djeikyb 01.01.2014 в 00:54
1

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

tar -xvzf fileName.tar.gz

Попробуйте извлечь с помощью

tar xf fileName.tar.gz
    
ответ дан Shravan40 05.01.2017 в 07:29