15 наиболее часто используемых команд tar в Linux. Должно быть, есть такие, которые вы никогда не использовали!
15 наиболее часто используемых команд tar в Linux. Должно быть, есть такие, которые вы никогда не использовали!
tar да Unix на основе Linux Один из наиболее часто используемых форматов архивирования файлов в системах.

Само название происходит отT ape AR chive,Потому что он был разработан для записи последовательных данных на ленточные устройства.,его иногда еще называют tarball

По умолчанию tar Только файлы Архив без сжатия, но используя определенные части, мы можем использовать разные методы сжатия для получения сжатого вывода, tar Утилиты обычно включены по умолчанию в большинство дистрибутивов Linux, а также с помощью различных инструментов и утилит в другие операционные системы, включая Windows и macOS) поддерживает сам формат.

В этой статье мы познакомимся с командой tar.

Итак, начнем…

1. Создать tar Архив

Чтобы создать простой несжатый архив, команда tar имеет следующий синтаксис:

Язык кода:javascript
копировать
$ tar cvf <tar-file-name> <files-to-archive>

Флаг c здесь обозначает создателя, v подробный вывод и указан f. tar Имя файла архива.

В соответствии с соглашением об указании расширения имени файла .tar.tar файл, подлежащий тарированию, может быть указан с использованием подстановочных знаков или одного или нескольких имен файлов/путей.

Например, у меня в каталоге есть три файла:

Язык кода:javascript
копировать
$ ls -l
total 12
-rw-r--r-- 1 wljslmz wljslmz 13 Sep 12 20:08 file1.txt
-rw-r--r-- 1 wljslmz wljslmz 19 Sep 12 20:08 file2.txt
-rw-r--r-- 1 wljslmz wljslmz 24 Sep 12 20:08 file3.txt
$

Я хочу создать tar, содержащий Архив всех трех файлов, я могу сделать это:

Язык кода:javascript
копировать
$ tar cvf archive.tar *
file1.txt
file2.txt
file3.txt
$ ls -l archive.tar
-rw-r--r-- 1 wljslmz wljslmz 10240 Sep 12 20:15 archive.tar
$

Я также могу указать в Архив только определенные файлы, например:

Язык кода:javascript
копировать
$ tar cvf archive1.tar file1.txt file2.txt
file1.txt
file2.txt
$ ls -l archive1.tar
-rw-r--r-- 1 wljslmz wljslmz 10240 Sep 12 20:15 archive1.tar
$

2. Создание сжатых файлов (GZ)

tar может не только файлы Архив,Их также можно сжать для экономии места.,Решение популярного формата сжатия дагунзип.,в целомда Представлено расширением.gzназад.tarили какtgz。

Мы можем использовать флаг z, чтобы указать файлы, которые нам нужно сжать с помощью Gunzip, вот пример:

Язык кода:javascript
копировать
$ tar cvzf archive.tar.gz file*
file1.txt
file2.txt
file3.txt
$ ls -l archive.tar archive.tar.gz
-rw-r--r-- 1 wljslmz wljslmz 10240 Sep 12 20:15 archive.tar
-rw-r--r-- 1 wljslmz wljslmz   188 Sep 12 20:21 archive.tar.gz
$

Вы можете заметить, что размер двух файлов Архива сильно различается.,Хотя все они содержат одни и те же три файла,этотда Благодаря использованию сжатия используя флаг z.

3. Создайте сжатые файлы. (BZ2)

tar поддерживает несколько других форматов сжатия,один из нихдаbz2илиbzip2в расширенииtar.bz2илииногда выражается какtbz2,Это может дать вам меньший размер Архива.,Но, в свою очередь, это будет потреблять больше процессора.,Поэтому процесс сжатия/распаковки может быть медленнее, чем у gzАрхив.

пример:

Язык кода:javascript
копировать
$ tar cvjf archive.tar.bz2 file*
file1.txt
file2.txt
file3.txt
$ ls -l archive.tar archive.tar.gz archive.tar.bz2
-rw-r--r-- 1 wljslmz wljslmz 10240 Sep 12 20:15 archive.tar
-rw-r--r-- 1 wljslmz wljslmz   212 Sep 12 20:25 archive.tar.bz2
-rw-r--r-- 1 wljslmz wljslmz   188 Sep 12 20:21 archive.tar.gz
$ file archive.tar*
archive.tar:     POSIX tar archive (GNU)
archive.tar.bz2: bzip2 compressed data, block size = 900k
archive.tar.gz:  gzip compressed data, from Unix, original size modulo 2^32 10240
$

4. Разархивируйте все файлы

Используя опцию x, вы можете просто извлечь tar Архив (сжатый или несжатый),Следующий пример иллюстрирует его использование:

Язык кода:javascript
копировать
$ tar xvf archive.tar
file1.txt
file2.txt
file3.txt
$ ls -l
total 24
-rw-r--r-- 1 wljslmz wljslmz 10240 Sep 19 18:25 archive.tar
-rw-r--r-- 1 wljslmz wljslmz    13 Sep 12 20:08 file1.txt
-rw-r--r-- 1 wljslmz wljslmz    19 Sep 12 20:08 file2.txt
-rw-r--r-- 1 wljslmz wljslmz    24 Sep 12 20:08 file3.txt
$

Это работает для сжатого gz Архива:

Язык кода:javascript
копировать
$ tar xvf archive.tar.gz
file1.txt
file2.txt
file3.txt
$ ls -l
total 16
-rw-r--r-- 1 wljslmz wljslmz 188 Sep 19 18:27 archive.tar.gz
-rw-r--r-- 1 wljslmz wljslmz  13 Sep 12 20:08 file1.txt
-rw-r--r-- 1 wljslmz wljslmz  19 Sep 12 20:08 file2.txt
-rw-r--r-- 1 wljslmz wljslmz  24 Sep 12 20:08 file3.txt
$

Даже для bz2 сжатый Архив:

Язык кода:javascript
копировать
$ tar xvf archive.tar.bz2
file1.txt
file2.txt
file3.txt
$ ls -l
total 16
-rw-r--r-- 1 wljslmz wljslmz 212 Sep 19 18:31 archive.tar.bz2
-rw-r--r-- 1 wljslmz wljslmz  13 Sep 12 20:08 file1.txt
-rw-r--r-- 1 wljslmz wljslmz  19 Sep 12 20:08 file2.txt
-rw-r--r-- 1 wljslmz wljslmz  24 Sep 12 20:08 file3.txt
$

5. Список tar содержание

перечислить tar Архив для содержимого, вы можете использовать флаг t, как показано ниже:

Язык кода:javascript
копировать
$ tar tvf archive.tar.bz2
-rw-r--r-- wljslmz/wljslmz 13 2021-09-12 20:08 file1.txt
-rw-r--r-- wljslmz/wljslmz 19 2021-09-12 20:08 file2.txt
-rw-r--r-- wljslmz/wljslmz 24 2021-09-12 20:08 file3.txt
$

6. Разархивируйте определенные файлы

Из tar или tar.gz или tar.bz2 можно извлечь только один файл, указав имя файла как archive:

Язык кода:javascript
копировать
$ tar xvf archive.tar.bz2 file1.txt
file1.txt
$ ls -l
total 8
-rw-r--r-- 1 wljslmz wljslmz 212 Sep 19 18:31 archive.tar.bz2
-rw-r--r-- 1 wljslmz wljslmz  13 Sep 12 20:08 file1.txt
$

Аналогичным образом вы можете указать несколько имен файлов, разделенных пробелами, чтобы извлечь их все одновременно.

Язык кода:javascript
копировать
$ tar xvf archive.tar.bz2 file1.txt file3.txt
file1.txt
file3.txt
$ ls -l
total 12
-rw-r--r-- 1 wljslmz wljslmz 212 Sep 19 18:31 archive.tar.bz2
-rw-r--r-- 1 wljslmz wljslmz  13 Sep 12 20:08 file1.txt
-rw-r--r-- 1 wljslmz wljslmz  24 Sep 12 20:08 file3.txt
$

7. Используйте подстановочные знаки для распаковки.

Чтобы извлечь один или несколько ШАБЛОНОВ файлов с использованием подстановочных знаков, используйте флаг --wildcards:

Язык кода:javascript
копировать
$ tar xvf archive.tar.bz2 --wildcards "file*"
file1.txt
file2.txt
file3.txt
$ ls -l
total 16
-rw-r--r-- 1 wljslmz wljslmz 212 Sep 19 18:31 archive.tar.bz2
-rw-r--r-- 1 wljslmz wljslmz  13 Sep 12 20:08 file1.txt
-rw-r--r-- 1 wljslmz wljslmz  19 Sep 12 20:08 file2.txt
-rw-r--r-- 1 wljslmz wljslmz  24 Sep 12 20:08 file3.txt
$

8. Добавьте файлы в Архив.

Новые файлы можно добавить/присоединить к существующему несжатому архиву, используя r или --append для обозначения нового имени файла или шаблона подстановочных знаков (помните, что это работает только с несжатыми файлами .tar, а не со сжатым форматом tar.gz или tar.bz2):

Язык кода:javascript
копировать
$ tar rvf archive.tar file-new*
file-new.txt
file-new2.txt
$ tar tvf archive.tar
-rw-r--r-- wljslmz/wljslmz 13 2021-09-12 20:08 file1.txt
-rw-r--r-- wljslmz/wljslmz 19 2021-09-12 20:08 file2.txt
-rw-r--r-- wljslmz/wljslmz 24 2021-09-12 20:08 file3.txt
-rw-r--r-- wljslmz/wljslmz 15 2021-09-19 18:59 file2.txt
-rw-r--r-- wljslmz/wljslmz 10 2021-09-19 18:58 file4.txt
-rw-r--r-- wljslmz/wljslmz  9 2021-09-19 19:10 file-new.txt
-rw-r--r-- wljslmz/wljslmz  9 2021-09-19 19:10 file-new2.txt
$

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

9. Удалить файлы из Архива

Вы можете использовать флаг --delete, как показано ниже, из tar Удалить определенные файлы в Архив (сравнить файлы до удаления и после удаления) tar список):

Язык кода:javascript
копировать
$ tar tvf archive.tar
-rw-r--r-- wljslmz/wljslmz 13 2021-09-12 20:08 file1.txt
-rw-r--r-- wljslmz/wljslmz 19 2021-09-12 20:08 file2.txt
-rw-r--r-- wljslmz/wljslmz 24 2021-09-12 20:08 file3.txt
-rw-r--r-- wljslmz/wljslmz 15 2021-09-19 18:59 file2.txt
-rw-r--r-- wljslmz/wljslmz 10 2021-09-19 18:58 file4.txt
-rw-r--r-- wljslmz/wljslmz  9 2021-09-19 19:10 file-new.txt
-rw-r--r-- wljslmz/wljslmz  9 2021-09-19 19:10 file-new2.txt
$ tar --delete -f archive.tar file-new.txt file-new2.txt
$ tar tvf archive.tar
-rw-r--r-- wljslmz/wljslmz 13 2021-09-12 20:08 file1.txt
-rw-r--r-- wljslmz/wljslmz 19 2021-09-12 20:08 file2.txt
-rw-r--r-- wljslmz/wljslmz 24 2021-09-12 20:08 file3.txt
-rw-r--r-- wljslmz/wljslmz 15 2021-09-19 18:59 file2.txt
-rw-r--r-- wljslmz/wljslmz 10 2021-09-19 18:58 file4.txt
$

Опять же, это работает только с несжатыми файлами. tarball,Для сжатия Архивформат не удастся。

10. Создайте с помощью проверки

Создав несжатый файл tar, вы можете проверить содержимое Архива, используя следующий флаг W:

Язык кода:javascript
копировать
$ tar cvfW archive.tar file*.txt
file1.txt
file2.txt
file3.txt
Verify file1.txt
Verify file2.txt
Verify file3.txt
$

Это нельзя использовать с флагом сжатия, хотя вы можете заархивировать созданный файл позже с помощью gzip или других инструментов.

11. Разархивируйте tar в папку.

Если вы хотите tarball содержаниеразвязать Заархивировать в определенную папку бездатекущий каталог,Пожалуйста, используйте флаг -C с путем к каталогу,Как показано ниже:

Язык кода:javascript
копировать
$ tar xvf archive.tar -C new-directory/
file1.txt
file2.txt
file3.txt
file2.txt
file4.txt
$ ls -l new-directory/
total 16
-rw-r--r-- 1 wljslmz wljslmz 13 Sep 12 20:08 file1.txt
-rw-r--r-- 1 wljslmz wljslmz 15 Sep 19 18:59 file2.txt
-rw-r--r-- 1 wljslmz wljslmz 24 Sep 12 20:08 file3.txt
-rw-r--r-- 1 wljslmz wljslmz 10 Sep 19 18:58 file4.txt
$

12. Используйте флаги различий

Вы можете использовать --diff или dflag найти tar Любые изменения между файлами в файловой системе и файлами в файловой системе.,этотдапример,Этот пример сравнения запускается один раз, когда файлы внутри и снаружи tar одинаковы. После обновления файла,Запустите его еще раз, чтобы увидеть разницу в результатах.

Язык кода:javascript
копировать
$ tar dvf archive.tar file4.txt
file4.txt
$
$ echo newline > file4.txt
$
$ tar dvf archive.tar file4.txt
file4.txt
file4.txt: Mod time differs
file4.txt: Size differs
$

13. Исключить файлы

При создании tar-архива может возникнуть необходимость исключить определенные файлы, это можно сделать с помощью флага --exclude.

Язык кода:javascript
копировать
$ tar --exclude="dir/file2.txt" --exclude="dir/file-new*.txt" -cvzf archive.tar.gz dir/
dir/
dir/file1.txt
dir/file3.txt
$ ls -l dir
total 24
-rw-r--r-- 1 wljslmz wljslmz 9 Sep 19 19:10 file-new.txt
-rw-r--r-- 1 wljslmz wljslmz 9 Sep 19 19:10 file-new2.txt
-rw-r--r-- 1 wljslmz wljslmz 5 Sep 19 19:20 file-new3.txt
-rw-r--r-- 1 wljslmz wljslmz 5 Sep 19 19:27 file1.txt
-rw-r--r-- 1 wljslmz wljslmz 6 Sep 19 19:27 file2.txt
-rw-r--r-- 1 wljslmz wljslmz 8 Sep 19 19:27 file3.txt
$ tar tvf archive.tar.gz
drwxr-xr-x wljslmz/wljslmz 0 2021-09-19 19:30 dir/
-rw-r--r-- wljslmz/wljslmz 5 2021-09-19 19:27 dir/file1.txt
-rw-r--r-- wljslmz/wljslmz 8 2021-09-19 19:27 dir/file3.txt
$

Как видно из приведенного выше вывода, мы можем указать флаг --exclude несколько раз, чтобы указать несколько имен файлов или шаблонов в условии AND. Обратите внимание, что из шести файлов в каталоге dir в приведенном выше примере только два файла подходят для включения в archive.at.gz.

14. Просмотр tar содержаниеразмер

Мы можем получить сжатие, используя следующую команду tar Архивсодержаниеизразмер:

Язык кода:javascript
копировать
$ tar tvf archive.tar.gz
-rw-r--r-- wljslmz/wljslmz 13 2021-09-12 20:08 file1.txt
-rw-r--r-- wljslmz/wljslmz 19 2021-09-12 20:08 file2.txt
-rw-r--r-- wljslmz/wljslmz 24 2021-09-12 20:08 file3.txt
$ tar -xzf archive.tar.gz --to-stdout|wc -c
56
$

bz2Архив похож:

Язык кода:javascript
копировать
$ tar tvf archive.tar.bz2
-rw-r--r-- wljslmz/wljslmz 13 2021-09-12 20:08 file1.txt
-rw-r--r-- wljslmz/wljslmz 19 2021-09-12 20:08 file2.txt
-rw-r--r-- wljslmz/wljslmz 24 2021-09-12 20:08 file3.txt
$ tar -xjf archive.tar.bz2 --to-stdout|wc -c
56
$

15. Сохраните разрешения

По умолчанию Команда tar сохраняет права доступа к файлам и каталогам, которые она архивирует, хотя вы можете явно указать те же права. Флаг using-p или --preserve-permissions выглядит следующим образом:

Язык кода:javascript
копировать
$ tar cvpzf archive.tar.gz *.txt
file1.txt
file2.txt
file3.txt
$

Подвести итог

tar уже давно Полезная утилита для Unix/Linux систем,В основном используется для задач архивирования и резервного копирования.,через некоторое время,Утилита разработала множество опций,Его можно использовать для решения задач от простых до сложных.,помещениеда Вы знаете, что он предлагает。

В этой статье объясняются некоторые основные операции, которые можно выполнить с помощью команды tar, и показано, как она может помочь вам в выполнении повседневных задач системного администрирования.

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose