Как извлечь из tar-архива один или несколько файлов? 2
Рецепт был опубликован 25 января 2010 года в 12:00, а менялся 10 февраля 2020 года в 03:30.
Постоянная ссылка: http://www.nixp.ru/recipes/2.html
Порой из tar-архивов (.tar, .tar.gz, .tar.bz2) очень больших объемов требуется извлечь далеко не все содержимое, а лишь несколько определенных файлов. В таких случаях разархивировать исходный tar целиком нецелесообразно, поскольку не только потребует заметных ресурсов (в первую очередь, это нагрузка на диск), но и может занять продолжительное время.
Разумеется, авторы tar предусмотрели возможность извлечения из архива лишь указанных объектов. Все довольно тривиально — достаточно перечислить нужные файлы в качестве аргументов tar после самого имени архива. Например:
tar -xf archive.tar myfile1 dir2/myfile2
Эта команда извлечет из архива archive.tar файлы myfile1 и dir2/myfile2. В случае со сжатым архивом все делается аналогичным образом — добавляются соответствующие ключи: «z» для .gz (gzip) и «j» для .bz2 (bzip2).
Единственной сложностью может стать указание точного названия файла/полного пути к нему в архиве. Эту проблему можно решить с помощью функции просмотра дерева файлов/каталогов, хранящихся в архиве. Например, так:
tar -tf archive.tar
А для поиска нужного файла по части его названия/пути достаточно добавить через конвеер grep (или egrep) по вкусу.
Последние комментарии
- OlegL, 17 декабря в 15:00 → Перекличка 21
- REDkiy, 8 июня 2023 года в 9:09 → Как «замокать» файл для юниттеста в Python? 2
- fhunter, 29 ноября 2022 года в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
- Иванн, 9 апреля 2022 года в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
- Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1
Гениально, кэп! А можно было написать так:
«Как извлечь один или несколько файлов из tar-архива»
Прочитать tar(1).
Спасибо, КЭП! Весь man tar перерыл, нигде не нашёл!
Добрый вечер.
А мне вот такой файл извлеч надо:"Дел0 фин.мон.сообщения.doc »
Пишу:
tar xf mnt/HD_a2/Backup$/2/backup24122013.tar “mnt/HD_a2/Files$/Дел0 фин.мон.сообщения.doc»
А он мне в ответ: tar: mnt/HD_a2/Files$/Дел0 фин.мон.сообщения.doc: not found in archive
Врёт, есть такой файл. Как бы его уговорить отдать его?
Чо попроще, например
tar xf mnt/HD_a2/Backup$/2/backup24122013.tar mnt/HD_a2/Files$/osn.xls
отрабатывает.
попробуйте \ перед пробелом в пути поставить.
tar xf mnt/HD_a2/Backup$/2/backup24122013.tar “mnt/HD_a2/Files$/Дел0\ фин.мон.сообщения.doc»
вот примерно так.
Попробую непременно. Только случится это не очень скоро по понятным причинам.
Не сработало.
# tar xf mnt/HD_a2/Backup$/3/backup08012014.tar mnt/HD_a2/Files$/BAF/Бланк\ заявления\ Бирюкова\ А.Ф..doc
tar: mnt/HD_a2/Files$/BAF/Бланк заявления Бирюкова А.Ф..doc: not found in archive
Можно целиком извлечь каталог, в котором находится файл
/ # tar xf mnt/HD_a2/Backup$/3/backup08012014.tar mnt/HD_a2/Files$/BAF/*.doc -C/mnt/HD_a2/1
А Вот отдельный файлик никак.
Может есть альтернативные пути?
MC, вроде, может извлекать отдельные файлы. Да и нашему брату, испорченному виндой, оно привычнее. Только вот как его поставить?
Речь о дисковом массиве DNS-323.
DNS-323 он вроде бы на ARM проце?
Варианты: просто chroot собрать и поставить туда что-то вменяемое.
dns323.kood.org/howto:chroot_debian — Например, но я не тестировал то что по ссылке.
Вариант 2: вроде бы под DNS-323 есть пакетный менеджер, но когда я его мучал, у меня времени на раскопки не было.