Я получил огромный файл .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?
Введите 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 должен стоять сразу после него. Он сообщает tar имя и путь к сжатому файлу. z
: указывает tar распаковать архив с помощью g z ip x
: tar может собирать файлы или e x трактуют их. x
делает последнее. v
: заставляет tar много говорить. V erbose вывод показывает вам все извлекаемые файлы. C
: означает c переход к каталогу DIR
. В нашем примере DIR
- это my_images
. В какой-то момент tar
была модернизирована до автоматической декомпрессии. Теперь нужно только:
tar xf community_images.tar.gz
f: это должен быть последний флаг команды, а tar file должен быть сразу после. Он сообщает tar имя и путь сжатого файла.
x
: exтрактует файлы.Обратите внимание на отсутствие дефиса для флагов команды. Это связано с тем, что большинство версий tar допускают как gnu, так и bsd (упрощенно, gnu требует дефиса, bsd - нет).
Если вы хотите, чтобы файлы были извлечены в определенное место назначения, вы можете добавить -C / destination / path /
Убедитесь, что вы сначала создали каталог, в этом случае: ~ / Pictures / Community
Пример:
mkdir ~/Pictures/Community
tar xf community_images.tar.gz -C /home/emmys/Pictures/Community/
Вы можете легко запомнить его, если захотите передать tar в e X тракт a F ile
Примечание: Помните, что вы можете искать внутри страниц руководства с помощью ?
+ термин для поиска, а затем n
и N
, чтобы перейти к следующему или предыдущее вхождение искомого слова.
Запоминание всех флагов для 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.gz
с помощью
tar -xvzf fileName.tar.gz
Попробуйте распаковать с помощью
tar xf fileName.tar.gz
tar -xvf <.tar file> or <.tar.xz file>
tar -xzvf <.tar.gz file>
tar -xjvf <.tar.bz2 file>
[ CATATAN ]:
-v
Senaraikan fail yang diproses secara verbal. -z
Tapis arkib melalui gzip. -f
Gunakan arkib fail atau peranti ARCHIVE. -x
Ekstrak fail dari arkib. -j
bzip2. -xf
archive.tar # Ekstrak semua fail dari archive.tar
. Вы также можете сделать это на первом шаге:
gunzip community_images.tar.gz
Затем у вас будет файл: community_images.tar
Второй шаг:
tar -xvf community_images.tar
И файл * .tar будет извлечен.
tar xvf file.tar.gz
Любой удаленно современный версия tar должна автоматически определять, что архив сжат с помощью gzip, и добавлять за вас букву z.