Распаковать вложенные архивы linux

Распаковать вложенные архивы linux

Краткая памятка по работе с архиваторами (программами управления файловыми архивами) из консоли в Linux.

    В двух словах о самом формате tar

http://ru.wikipedia.org/wiki/Tar писал(а): . в настоящее время tar используется для хранения нескольких файлов внутри одного файла, для распространения программного обеспечения, а также по прямому назначению — для создания архива файловой системы.

где foo.tar имя которое будет присвоено полученному архиву, а «./» указание папки

А для распаковки этого архива будем использовать

-A, —catenate, —concatenate
склеить файлы tar в один архив

-c, —create
создать новый архив

-d, —diff, —compare
найти различия между архивом и файловой системой

—delete
удалить из архива (не применяется к магнитным лентам!)

-r, —append
добавить файлы в конец архива

-t, —list
показать содержимое архива

-u, —update
добавить только новые версии файлов файлов

-x, —extract, —get
извлечь файлы из архива

-j, —bzip2
используется для создания/распаковки .bz2 файлов

-z, —gzip, —ungzip
используется для создания/распаковки .gz файлов

-M, —multi-volume
создать/показать/распаковать многотомный архив

Другие не менее интересные опции этой очень важной команды можно найти в руководстве пользователя — man tar.

tar -czvf - --exclude=www/test --exclude='*.zip' /var/www/ | split -b 1024m - ./backup.tar.gz

(«-» после -czvf говорит tar’у выводить в stdout, чтобы потом split мог его разбить на части(а «-» в split говорит ему брать из stdin)) В результате будут созданы файлы backup.tar.gzaa, backup.tar.gzab, backup.tar.gzac . размер каждого 1024 Мб. Именно последние две буквы в названии архива .tar.gzaa, .tar.gzab и т.д., указывают на то, что он разбит на части.

Склеить все части можно командой

cat часть1 часть2 часть3 > архив.tar.gz
cat backup.tar.gzaa backup.tar.gzab backup.tar.gzac > backup.tar.gz
cat backup.tar.* > backup.tar.gz

в результате будут созданы файлы arch.7z.001 arch.7z.002 arch.7z.003 . размер каждого 100 Мб (опция -v100m).

Читайте также:  Удаление папки linux cmd

Чтобы распаковать многотомный архив arch.7z.001, достаточно поместить все части архива в текущую папку и дать команду

unrar e -p"Пароль" archive.rar

между вашим паролем и ключем -p не должно быть пробелов, в кавычки надо брать если в пароле используется например дефис или другой системный символ

создание и распаковка архива с паролем через 7zip

7za a -mhe=on -ms=on -p Documents.7z Documents/

Источник

unixforum.org

Распаковать множество архивов *.tar.gz (В папке больше 30 архивов. как все одним махом распаковать?)

Распаковать множество архивов *.tar.gz

Сообщение Stasroot1 » 04.01.2010 11:38

Скачал из инета кучу архивов. все лежат в одной папке. Надо распаковать все архивы одним махом в эту же папку, так чтобы: были архивы 1. 2. . 30 а стали архивы 1. 2. . 30 вместе с распакованными архивами разложенными по соответствующим папкам: папки: 1. 2. . 30.

Через графическую болочку такого сделать не получается, максимум что получается это распаковать два архива одним махом. Наверняка моя проблема решаема. Прошу подсказать.
Система SUSE11.2 КДЕ4,3,1

diesel Бывший модератор Сообщения: 5989 ОС: OS X, openSuSE, ROSA, Debian Контактная информация:

Re: Распаковать множество архивов *.tar.gz

Сообщение diesel » 04.01.2010 12:15

Re: Распаковать множество архивов *.tar.gz

Сообщение Stasroot1 » 04.01.2010 14:20

много буков — пугает малость. Это набор команд? Команда? Что то обобщенное но не совсем понятное. скорее всего правильнее будет man tar. 🙁

Minton Сообщения: 1588 Статус: openSUSE Localization Team ОС: openSUSE Tumbleweed x86-64

Re: Распаковать множество архивов *.tar.gz

Сообщение Minton » 04.01.2010 16:00

ls | #вывести список файлов
while read i; do #берём файлы по одному
mkdir $; #создаём каталог, одноимённый архиву
tar xzf $i -C $; #распаковываем данный архив
mv $i $; #перемещаем распакованное в каталог
done #всё 🙂

«Настоящие мужчины используют поиск» ©Goodvin

Re: Распаковать множество архивов *.tar.gz

Сообщение Makinos » 04.01.2010 18:42

«многабукафф ниасилил»
жесть.

diesel Бывший модератор Сообщения: 5989 ОС: OS X, openSuSE, ROSA, Debian Контактная информация:

Re: Распаковать множество архивов *.tar.gz

Сообщение diesel » 04.01.2010 23:15

ls | #вывести список файлов
while read i; do #берём файлы по одному
mkdir $; #создаём каталог, одноимённый архиву не совсем. создаем каталог такой же как архив, только без .tar.gz, если например архив был archive.tar.gz, то получим каталог archive
tar xzf $i -C $; #распаковываем данный архив в только что созданный каталог
mv $i $; #перемещаем распакованное архив в каталог
done #всё

Читайте также:  Линукс командная строка командные файлы

чтобы посмотреть что происходит на самом деле, вы можете пред каждой командой в цикле поставить echo:

ls | while read i; do echo mkdir $; echo tar xzf $i -C $; echo mv $i $; done

(потом, если команды делают то что требуется, и в именах архивов нет пробелов, просто можно сделать pipe в shell:

ls | while read i; do echo mkdir $; echo tar xzf $i -C $; echo mv $i $; done | sh

Minton Сообщения: 1588 Статус: openSUSE Localization Team ОС: openSUSE Tumbleweed x86-64

Re: Распаковать множество архивов *.tar.gz

Сообщение Minton » 05.01.2010 00:12

«Настоящие мужчины используют поиск» ©Goodvin

Re: Распаковать множество архивов *.tar.gz

Сообщение Stasroot1 » 05.01.2010 09:05

«многабукафф ниасилил»
жесть.

Придираешся к Русскому языку в моем исполнении. Нет чтобы по делу написать что нибудь. а про то что много буковок, ну так как было так и написал.

Остальным спасибо за разъяснения!

ls | while read i; do echo mkdir $; echo tar xzf $i -C $; echo mv $i $; done | sh

делает практически почти так как нужно. Было в папке: «архив.tar.gz»
Стало в папке «папка «архив»» а в папке «папка «архив»» лежит сам «архив.tar.gz» простите за каламбур. а надо чтобы стало так:
НАДО: в папке: файл: «архив.tar.gz» и папка: «папка «архив»».

Хотя и тот вариант что вы мне уже разжевали тоже очень даже не плох! И самое главное выполняется на кучу порядков быстрее чем если все ручками разархивировать по одному/два через графический интерфейс! Еще рас спасибо! И. может это в общий FAQ? Я так понимаю универсальная для всех Линуксов команда.

SLEDopit Модератор Сообщения: 4814 Статус: фанат консоли (= ОС: GNU/Debian, RHEL

Re: Распаковать множество архивов *.tar.gz

Сообщение SLEDopit » 05.01.2010 11:30

слишком специфический вопрос. я сколько пользуюсь компьютером, мне такая конструкция ни разу не пригодилась.
и после нелубокого изучения bash scripting’a такая строка пишется за полминуты.

UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don’t do mistakes, the more bugs are in your code.

Читайте также:  Связь android и linux

Источник

Одновременное разархивирование нескольких файлов в Linux

Иногда нужно разархивировать сразу несколько файлов в формате zip и rar, находящихся в одной папке. В пользовательском интерфейсе Ubuntu это довольно просто: нужно просто выбрать все файлы, которые вы хотите разархивировать, щелкнуть на них правой кнопкой мыши и использовать опцию Extract, чтобы разархивировать их все. Все становится действительно сложнее, когда мы хотим выполнить ту же задачу из командной строки. Это может оказаться довольно утомительным и нелогичным — извлекать файлы один за другим, набирая команды для извлечения одного за другим. Вот здесь-то и пригодится цикл for в Bash. Он позволяет выполнять несколько одинаковых операций одновременно.

Linux

В этой статье описывается, как использовать цикл for для извлечения нескольких файлов следующего типа с помощью командной строки Ubuntu:

Распаковка нескольких ZIP файлов одновременно

Предположим, что папка, в нашем случае папка «zip_files», содержит несколько заархивированных файлов, и мы хотим извлечь их одновременно.

Вот как можно использовать цикл for, чтобы упростить задачу:

for z in *.zip do unzip $z; done

Вот как можно выполнить ту же задачу с помощью одной единственной команды:

for z in *.zip; do unzip "$z"; done

Одновременное извлечение нескольких файлов tar.xz

Предположим, что папка содержит несколько файлов tar.xz, и мы хотим извлечь их одновременно.

Вот как можно использовать цикл for, чтобы упростить задачу:

for z in *.tar.xz do tar -xf $z; done

А вот как можно выполнить ту же задачу с помощью одной команды:

for z in *.tar.xz; do tar -xf "$z"; done

Разархивирование нескольких RAR файлов одновременно

Используйте следующую команду, чтобы разархивировать несколько файлов rar одновременно.

for z in *.rar do unrar e $z; done
for f in *.rar; do unrar e "$f"; done

Одновременная распаковка нескольких файлов 7z

Используйте следующую команду для одновременного извлечения нескольких файлов 7z.

for z in *.7z do 7z e $z; done
for z in *.7z; do 7z e "$z"; done

Используя цикл Bash for, вы можете легко выполнить задачу по распаковке нескольких сжатых файлов одновременно. Этот небольшой навык, которому вы научились в этой статье, особенно удобен, когда нам нужно распаковать сотни сжатых файлов одновременно. Вы можете использовать цикл for не только для распаковки файлов, но и для других подобных задач, которые занимают больше времени, если выполнять их по одному.

Похожие записи:

Источник

Оцените статью
Adblock
detector