Иногда вам нужно упаковать несколько файлов и/или каталогов в один файл. Легче передать один файл по сети и даже через USB-накопитель (создание тысяч файлов на флэш-памяти может быть медленным). В таких операционных системах, как Windows, это обычно делается путем архивирования в файлы .zip (архивирование) или .rar. В операционных системах *nix, таких как Linux, основной утилитой является «tar». Название этой команды происходит от Tape ARchive, поскольку изначально она была разработана для резервного копирования данных на магнитную ленту. В настоящее время его все еще можно использовать для этой цели, но в большинстве случаев это просто метод создания так называемых «архивов». Цель архивов — облегчить загрузку, выгрузку и перемещение данных или сохранение резервных копий.
1. Обратитесь к руководству по tar
У каждой команды в Linux есть справочная страница. Вы можете обратиться к руководству по tar, введя это в свой терминал:
man tar
Перемещайтесь по содержимому с помощью клавиш со стрелками, СТРАНИЦА ВВЕРХ а также ЛИСТАТЬ ВНИЗ. Нажимать д выйти из мануала.
2. Создайте архив каталогов
Создайте каталог с девятью пустыми файлами, чтобы вы могли протестировать команды tar:
mkdir $HOME/test9 && touch $HOME/test9/{1..9}
Теперь переключитесь в свой домашний каталог.
cd
Чтобы отправить содержимое каталога в файл tar:
tar -cvf test.tar test9
c
– означает создатьv
– подробный, выводит какой файл в данный момент добавлен в архив; полезно для длительных заданий, чтобы увидеть прогрессf
— указывает утилите создать tar-файл с указанным именем test.tar.
3. Добавьте содержимое в существующий архив
Создайте еще один каталог с пустыми файлами с именами от a до z:
mkdir $HOME/test-az && touch $HOME/test-az/{a..z}
Теперь добавьте его в уже существующий tar-архив (r
параметр):
tar -rvf test.tar test-az
Если вы откроете test.tar в графическом менеджере архивов, вы увидите следующее содержимое.
4. Список содержимого файла tar
Использовать -t
флаг, чтобы просмотреть содержимое файла tar.
tar -tf test.tar
5. Извлечь содержимое из архива
Содержимое будет извлечено в ваш текущий каталог. Создайте новый каталог, а затем переключитесь на него:
mkdir $HOME/test-extract && cd $HOME/test-extract
Теперь извлеките test.tar в текущий каталог:
tar -xvf $HOME/test.tar
6. Создайте сжатый архив (gzip)
Если вы собираетесь передавать tar-файл по сети, рекомендуется уменьшить его размер, чтобы увеличить скорость передачи. Вернитесь в свой домашний каталог.
cd
И создайте сжатый файл tar.
tar -cvzf test.tar.gz test9
Как видите, единственная разница заключается в добавлении z
параметр, который указывает tar использовать gzip для сжатия файла.
7. Создайте сжатый архив еще меньшего размера (bzip)
Вместо z
параметр, вы можете использовать j
сжать с помощью bzip.
tar -cvjf test.tar.bz test9
Это еще больше уменьшит размер файла, но сжатие и распаковка займет больше времени.
8. Извлеките один файл или каталог
Просто добавьте точное имя файла или каталога, как оно указано в tar-архиве:
tar -xvf test.tar test9/7
Это извлекает только test9/7
файл.
9. Извлекайте только те файлы/каталоги, которые соответствуют шаблону
Если вы хотите извлечь все файлы с расширением .jpg:
tar -xvf test.tar --wildcards '*.jpg'
10. Сохранить разрешения
Разрешения не важны при создании архивов из документов, изображений и подобных носителей. Но если вы создаете резервную копию своей системы, вы можете добавить p
параметр для сохранения прав доступа к файлам:
tar -cvpf test-permissions.tar test9
11. Удалить файлы или каталоги из архива
Работает только с несжатыми файлами tar.
tar -f test.tar --delete test-az
Это удалит каталог test-az из архива, включая содержащиеся в нем файлы. tar f test.tar --delete test-az/z
просто удалит файл «test-az/z».
12. Исключить файлы или каталоги из добавления в архив
tar -cvf test-exclude.tar --exclude test9/9 test9
Как видите, файл 9 был исключен из tar-архива. Можно добавить несколько параметров исключения: tar cvf test-exclude.tar --exclude test9/9 --exclude test9/8 test9
.
13. Оставайтесь в одной файловой системе
--one-file-system
можно добавить в команду, например tar -cvpzf backup.tar.gz --one-file-system /
.
Это создаст резервную копию вашей корневой файловой системы, за исключением других файловых систем, которые вы могли смонтировать в /home, /mnt, /media, /proc и так далее.
14. Сохраняйте расширенные атрибуты
Помимо прав доступа к файлам, некоторые дистрибутивы Linux также имеют расширенные атрибуты файлов. Чтобы сохранить их все, добавьте следующие параметры: --acls --selinux --xattrs
.
Пример команды:
tar -cvpzf backup.tar.gz --one-file-system --acls --selinux --xattrs /
15. Создайте новый каталог для извлеченных файлов
Обычно tar извлекается в ваш текущий каталог. Вы можете mkdir new_directory
а также cd new_directory
перед использованием tar, если каталог, в который вы хотите извлечь, еще не существует. Но поручить tar сделать все за вас более элегантно:
tar -xvf test.tar --one-top-level=new_directory
Вывод
Это наиболее часто используемые команды tar. Но утилита универсальна и может использоваться многими другими способами. Если вам не нравится читать руководства в терминале, вы можете найти HTML-версия руководства по tar легче просматривать.