Как извлечь один файл из tbz

Как извлечь один файл из tbz

У меня есть следующий архивный каталог:

itunes20140618.tbz

Я хочу извлечь из него один файл под названием:

itunes20140618/video

Как бы я это сделал?

Пока что я делаю

$ bzip2 -d /tmp/itunes20140618.tbz 

Но, похоже, он создает каталог tar всего. Как бы мне извлечь только один видеофайл?

В настоящее время, если я извлекаю один файл через tar, это занимает около 1 минуты, а затем «зависает» еще на 20 минут, пока не закончит чтение архива tar. Есть идеи, как это улучшить?

решение1

tar -xvjf itunes20140618.tbz itunes20140618/video

В данном случае этого должно быть достаточно, но если вам нужна дополнительная помощь, сделайте следующее:

info tar

Чтобы извлечь определенных членов архива, укажите их точные имена членов в качестве аргументов, как выводится --list (-t). Если вы по ошибке удалили один из файлов, которые вы поместили в архив collection.tar ранее (например, blues), вы можете извлечь его из архива, не изменяя структуру архива. Его содержимое будет идентично исходному файлу, bluesкоторый вы удалили.

Сначала убедитесь, что вы находитесь в practiceкаталоге, и перечислите файлы в каталоге. Теперь удалите файл, bluesи перечислите файлы в каталоге снова.

Теперь вы можете извлечь элемент bluesиз архивного файла `collection.tar' следующим образом:

 $ tar --extract --file=collection.tar blues

Если вы снова выведете список файлов в каталоге, вы увидите, что файл bluesбыл восстановлен с исходными разрешениями, временем изменения данных и владельцем. (Эти параметры будут идентичны тем, которые были у файла, когда вы изначально поместили его в архив; однако любые изменения, которые вы могли внести до удаления файла из файловой системы, _не_ будут внесены в элемент архива.) Архивный файл, collection.tar, такой же, как и до извлечения blues. Вы можете убедиться в этом, tar запустив --list (-t).

решение2

Архив, такой как .zip, .rarили .7zсостоит из множества файлов, объединенных вместе и сжатых. .tarАрхив состоит из множества файлов, объединенных вместе, но формат tar не включает никакого сжатия. Файл .gz, .bz2или .xz— это один сжатый файл. A .tar.gz, .tar.bz2, и т. д. — это сжатый архив; .tbz— это суффикс, который иногда используется вместо .tar.bz2, точно так же, как .tgzиногда используется вместо .tar.gz.

bzip2 -d /tmp/itunes20140618.tbzраспаковывает файл. У вас остается несжатый архив tar. bzip2не создает tar: он распаковывает то, что ему дано, и поскольку ему дан сжатый tar, на выходе получается несжатый tar. Вы можете распаковать полученный файл с помощью tar -xf /tmp/itunes20140618.tar. Чтобы извлечь только один файл, это tar -xf /tmp/itunes20140618.tar itunes20140618/video.

Достаточно новые версии tar для Linux, FreeBSD, MINIX3 и OSX автоматически обнаруживают сжатые архивы, поэтому вы можете вызывать tar изначально, не беспокоясь о сжатии, используемом в архиве:

tar xf itunes20140618.tbz itunes20140618/video

Более старые версии tar, а также многие современные системы, такие как OpenBSD, Solaris и Linux с BusyBox, по крайней мере, могут вызывать bzip2скрытые функции, даже если вам приходится явно сообщать им об этом с помощью соответствующей -jопции.

tar -xjf itunes20140618.tbz itunes20140618/video

Связанный контент