Часто при работе в консоли linux приходится создавать архивы, или наоборот распаковывать их. Эта статья — шпаргалка основных команд, используемых при работе с основными архиваторами.
Как создать или распаковать архивы tar, tar.gz, tar.bz2 в консоли Linux
Опции tar:
- c — создание нового архива (сокращение от create)
- v — выдача дополнительных сообщений в процессе работы программы
- f — создание файла на диске.
- z — использовать для сжатия GZip
- j — использовать для сжатия BZip2
- x — распаковать архив
Упаковка в архив файлов или папок
Упаковать файл или папку в архив tar
tar -cvf archive.tar file
С папкой всё аналогично:
tar -cvf archive.tar folder
Можно упаковать сразу несколько папок или файлов:
tar -cvf archive.tar file folder
Можно указать пути к папкам, или файлам, а также путь к файлу архива.
Обратите внимание, что в этом случае нужно добавить опцию -C, а далее слэш / с обоих сторон, отделённый пробелами. При этом путь к папке, которую архивируем, уже указываем без слэша в начале.
Без этой опции тоже будет работать, но tar постоянно будет ругаться вот так: tar: Removing leading `/’ from member names
tar -cvf /home/archive.tar -C / home/folder
При необходимости, можно исключить файлы или папки из архива. Например вот так, в архив не попадут все файлы из папок folder1 и folder3, при этом сами эти папки в архив попадут пустыми:
tar -cvf archive.tar folder --exclude={'*/folder1/*','*/folder2/*'}
А вот так, в архив не попадут и сами папки:
tar -cvf archive.tar folder --exclude={'*/folder1','*/folder2'}
Можно указывать полный путь к папке, которую нужно исключить:
tar -cvf archive.tar folder --exclude='folder/folder1'
Можно —exclude указывать несколько раз:
tar -cvf archive.tar folder --exclude='folder/folder1' --exclude='folder/folder2'
Можно исключить файлы или папки по маске:
tar -cvf archive.tar folder --exclude='sess_*'
Упаковать папку в архив и сразу отправить на удалённый сервер по ssh:
tar -cvf - folder | ssh root@192.168.1.1 "cat > /backup/archive.tar"
Упаковать файл или папку в архив tar.gz
Здесь всё те же команды, что и просто с tar, которые приведены выше, только добавляем в начале опцию z и имя создаваемого архива указываем с расширением .tar.gz:
tar -zcvf archive.tar.gz folder
Упаковать файл или папку в архив tar.bz2
Опять, всё тоже самое, что и в случаях выше, только уже указываем опцию j, и имя создаваемого архива указываем с расширением tar.bz2:
tar -jcvf archive.tar.bz2 folder
Как посмотреть содержимое архива
Всё просто, используем опцию t. Работает и с простыми архивами tar, и со сжатыми в tar.gz или tar.bz2:
tar -tf archive.tar
Как распаковать архивы tar, tar.gz, tar.bz2
Распаковать архив tar
tar -xvf archive.tar
Распаковать архив tar в определённую папку:
tar -xvf archive.tar -C /home/
Распаковать архив tar.gz
tar -xzvf archive.tar.gz
Распаковать архив tar.gz в определённую папку:
tar -xzvf archive.tar.gz -C /home/
Распаковать архив tar.bz2
tar -xjvf archive.tar.bz2
Распаковать архив tar.bz2 в определённую папку:
tar -xjvf archive.tar.bz2 -C /home/
Как создать или распаковать архивы zip в консоли Linux
Упаковка в архив файлов или папок
Упаковать файл в архив zip
zip archive.zip file
Упаковать папку в архив zip
При архивировании папки нужно добавить опцию -r, иначе в архив не попадут вложенные в папку другие папки и файлы:
zip -r archive.zip folder
Как распаковать архивы zip
unzip archive.zip
Если нужно распаковать архив zip в определённую папку, то нужно добавить опцию -d
unzip -d folder archive.zip