Какая команда мне нужна, чтобы распаковать / распаковать файл.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 ipx
: 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 как файл.
Примечание. Помните, что вы можете искать внутри справочных страниц с помощью ?
+ срок для поиска, а затем 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 будет извлечен.