Какая команда мне нужна, чтобы распаковать / распаковать файл.tar.gz?

Я получил огромный файл.tar.gz от клиента, который содержит около 800 МБ файлов изображений (в несжатом виде). ​​FTP-сервер нашей хостинговой компании работает очень медленно, поэтому извлекать все файлы локально и отправлять их через FTP нецелесообразно. Я смог перенести файл.tar.gz на наш хостинг-сайт, но когда я захожу в свой каталог по ssh и пытаюсь использовать 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?

7 ответов

Решение

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

tar -xvzf community_images.tar.gz

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

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

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

Пример:

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

Вы можете легко запомнить его, если рассмотрите возможность использовать tar для e X tract как файл.

GIF процесса, выполненного на терминале

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

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

tar xf community_images.tar.gz

Это же объяснение применимо:

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

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

Вспоминая все флаги для tar может быть утомительным Обязательный XKCD:

Поэтому я сделал свой собственный маленький скрипт на Python для этого. Быстро, грязно, cp -подобно в использовании:

#!/usr/bin/env python3
import tarfile,sys,os
tf = tarfile.open(name=sys.argv[1],mode='r:gz')
where = '.'
if len(sys.argv) == 3:
    where = sys.argv[2]
tf.extractall(path=where)
tf.close()

Используйте это так:

myuntar.py archive.tar

Смотрите также подобный скрипт для распаковки zip-архивов.

Быстрый ответ:

tar -xvf  <.tar file> or <.tar.xz file>
tar -xzvf <.tar.gz file>
tar -xjvf <.tar.bz2 file>

[ПРИМЕЧАНИЕ]:

  • -v Подробно обработан список файлов.
  • -z Фильтруйте архив через gzip.
  • -f Используйте архивный файл или устройство АРХИВ.
  • -x Извлечь файлы из архива.
  • -j bzip2.
  • деготь -xf archive.tar # Извлечь все файлы из archive.tar,

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

tar -xvzf fileName.tar.gz

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

tar xf fileName.tar.gz

Tar xvf file.tar.gz

  • х для извлечения
  • v для многословия (список файлов)
  • f для имени файла следующий

Любая удаленно современная версия tar должна автоматически определить, что архив распакован, и добавить "z" для вас.

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

gunzip community_images.tar.gz

Тогда у вас есть файл: community_images.tar

Второй шаг будет:

tar -xvf community_images.tar

И файл *.tar будет извлечен.

Другие вопросы по тегам