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

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

  [esthers  @clients location] $ unzip community_images.tar.gzArchive: community_images.tar.gz Подпись конца центрального каталога не найдена.  Либо этот файл не является zip-файлом, либо он представляет собой один диск в составе архива, состоящего из нескольких частей.  В последнем случае центральный каталог и комментарий к zip-файлу будут найдены на последнем диске (ах) этого архива. Note: community_images.tar.gz может быть обычным исполняемым файлом, а не архивом unzip: не удается найти каталог zipfile в одном из community_images.  tar.gz или community_images.tar.gz.zip и не могу найти community_images.tar.gz.ZIP, точка.  

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


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

  tar -xvzf community_images.tar.gz  

Кроме того, для извлечения в определенный каталог

, например . для извлечения архива в пользовательский каталог my_images .

  tar -xvzf community_images.tar.gz -C my_images  

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

  • f : это должен быть последний флаг команды, а tar f ile должно быть сразу после. Он сообщает tar имя и путь к сжатому файлу.
  • z : указывает tar распаковать архив с помощью g z ip
  • x : tar может собирать файлы или e x обрабатывать их. x делает последнее.
  • v : заставляет tar много говорить. В выводе V erbose отображаются все извлекаемые файлы.
  • C : означает c перейти в каталог DIR . В нашем примере DIR — это my_images.

185

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

Пример:

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

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

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

Поделиться
Улучшить этот ответ
отредактировано 14 мая ’18 в 13:54
ответил 20 августа ’14 в 11:02
  • 5
    не забывайте C для « c каталога изменений»! Кроме того, я считаю, что лучше не смешивать параметры дефиса и без него (особенно это сбивает с толку при использовании ps ). — djeikyb 05 нояб., В 23:45
  • 2
    Почему это не -o, как любая другая команда? — Ян М. 01 марта, 13:57
  • 7
    Мне нравится ваш намек «tar to e X tract a F ile» — Nam G VU 13 ноя 2017, в 7:11
  • 3
    1+ для анимированного gif — Ник Стил 4 сен 2018 в 1:18
  • 1
    Также можно использовать - directory = "/home/emmys/Pictures/Community/" (который, я думаю, легче запомнить, чем -C ). — Патрик Дарк 20 фев, в 8:11
добавить комментарий |

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

Пример:

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

Вы можете легко запомнить это если вы подумали о том, чтобы передать tar в e X , трактуйте F файл

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


119

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

  tar xf community_images.tar.gz  

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

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

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

Поделиться
Улучшить этот ответ
ответил 31 декабря 2013 в 23:54
  • 1
    Есть ли по этому поводу документация? Я повсюду искал ссылку на это, я никогда не использую флаг -z, и все сжимается, поэтому я беспокоился, не сжимал ли я свои tarball вообще, ха-ха. Благодарю. — нейросъемка 10 июля ’15 в 16:14
  • 2
    @neurosnap см. руководство по GNU и руководство по BSD — djeikyb 12 июля 2015, 20:49
  • 3
    Наверное, было бы лучше отредактировать исходный ответ. — Сет, 9 июня ’16 в 18:04
  • 3
    @Seth он кажется/ощущается достаточно отчетливым, чтобы быть отдельным ответом, особенно в контексте деструктивного редактирования, которое его спровоцировало. Я переосмыслил это после работы, возможно, это более простой способ слияния, чем я думал изначально. — djeikyb 09 июня ’16, в 18:23
  • 2
    @EnricoMariaDeAngelis bsd tar по крайней мере с 2004 года и gnu tar по крайней мере с 2010 года поддерживают автоматический выбор декомпрессора. Возможно, никакая «недавняя» (эта столетие? девяностые +?) версия tar не требует ручного выбора декомпрессора. — djeikyb 02 июня ’17 в 16: 39
| показать 2 дополнительных комментария

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

  tar xf community_images.tar.gz  

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

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

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


15

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

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

  #!/Usr/bin/env python3import tarfile, sys, ostf = tarfile.  open (name = sys.argv [1], mode = 'r: gz') где = '.'if len (sys.argv) == 3: where = sys.argv [2] tf.extractall (path = where  ) tf.close ()  

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

  myuntar.py archive.tar  

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

Поделиться
Улучшить этот ответ
отредактировано 20 сентября ’18 в 7:49
ответил 20 сен 2018 в 07:25
  • 3
    🙂 только два флага tar, которые нужно запомнить -caf для создания на основе имени файла и -xf для извлечения (AFAIK работает со всеми типами tar). — Videonauth 20 сен 2018, в 7:31
  • @Videonauth Я знаю, это не так уж сложно, но я почему-то не запомнил эти варианты. Может потому, что я недостаточно часто занимаюсь архивами. — Сергей Колодяжный 20 сен., В 7:33
  • будет ли это работать только с архивированными tar-файлами? в документах api упоминается режим чтения с прозрачным сжатием; будет ли это вести себя больше как tar xf ? — djeikyb 13 апр. ’19 в 16:39
добавить комментарий |

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

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

  #!/Usr/bin/env python3import tarfile, sys, ostf = tarfile.  open (name = sys.argv [1], mode = 'r: gz') где = '.'if len (sys.argv) == 3: where = sys.argv [2] tf.extractall (path = where  ) tf. close ()  

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

  myuntar.py archive.tar  

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


11
  tar -xvf  или  tar -xzvf  tar -xjvf   

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

  • -v Подробный список обработанных файлов.
  • -z Отфильтровать архив с помощью gzip.
  • -f Используйте архивный файл или устройство АРХИВ.
  • -x Извлечение файлов из архива.
  • -j bzip2.
  • tar -xf archive.tar # Извлечь все файлы из archive.tar .
Поделиться
Улучшите этот ответ
отредактировал 12 июня ’20 в 14:37
Сообщество ♦
1
ответил 10 октября 2018 в 07:45
добавить комментарий |

  tar -xvf  или  tar -xzvf  tar -xjvf   

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

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

4

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

  tar -xvzf fileName.tar.gz  

Попробуйте распаковать с помощью

  tar xf fileName.tar. gz  

Поделиться
Улучшите этот ответ
ответил 05 янв. в 18:29
  • 4
    если это сжатый файл tar, первая команда будет работать всегда. если это не сработает, у вас нет сжатого tar-файла. Последняя команда — отличная рекомендация для людей, которым все равно, какой алгоритм сжатия был использован в их tar-файле. — djeikyb 09 мар. ’17 в 2:37
добавить комментарий |

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

  tar -xvzf fileName.tar.gz  

Попробуйте распаковать с помощью

  tar xf fileName  .tar.gz  

2

tar xvf file.tar.gz

  • x для извлечения
  • v для подробного (файлы списка)
  • Далее следует f для имени файла

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

Поделиться
Улучшить этот ответ
ответил 12 июня ’19 в 16: 01
добавить комментарий |

tar xvf file.tar. gz

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

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


0

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

gunzip community_images.tar.gz

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

Второй шаг:

tar -xvf community_images.tar

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

Поделиться
Улучшить этот ответ
ответил 02 октября 2018, в 01:34
добавить комментарий |

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

gunzip community_images.tar. gz

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

Второй шаг:

tar -xvf community_images.tar

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

Оцените статью
Botgadget.ru
Добавить комментарий