Как извлечь файл несколько раз из архива tar?

Вопрос или проблема

Я создал tar файл директории и затем извлек некоторые файлы с их именами, используя опцию v. Теперь, если я снова запускаю ту же команду, я все равно получаю тот же вывод. Почему так? Почему я могу извлечь файл снова, если он уже был извлечен?

Для справки, это была команда: tar xvf ../playground2.tar --wildcards 'home/me/playground/dir-*/file-A'. Я запустил ее второй раз, и она завершилась с тем же выводом!

Linux команда tar обозначает tape archive, которая используется для создания архива на ленте для резервного копирования (или файле) и также извлечения файлов из этого архива. В вашем случае это резервная копия, сохраненная в файл.

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

tar xvf ../playground2.tar --wildcards 'home/me/playground/dir-*/file-A' && rm ../playground2.tar

&& в вышеуказанной команде означает, что rm ../playground2.tar будет выполнено только если tar xvf ../playground2.tar --wildcards 'home/me/playground/dir-*/file-A' выполнится успешно, без ошибок.

GNU tar — это программа архивирования, предназначенная для сохранения нескольких файлов в одном файле (архиве) и для манипуляции такими архивами.

Опции, перечисленные в таблице ниже, показывают GNU tar, какую операцию он должен выполнить.

-A, –catenate, –concatenate Добавить архивы в конец другого архива.

-c, –create Создать новый архив.

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

–delete Удалить из архива.

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

-t, –list Показать содержимое архива.

–test-label Проверить метку тома архива и выйти.

-u, –update Добавить файлы, которые новее соответствующей копии в архиве.

-x, –extract, –get Извлечь файлы из архива. Это не удаляет его.

–usage Показать список доступных опций и выйти.

.

Ответ или решение

Теория:

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

Пример:

Вы используете команду tar xvf ../playground2.tar --wildcards 'home/me/playground/dir-*/file-A'. Здесь:

  • x означает извлечение;
  • v — это параметр для вывода подробной информации на экран;
  • f указывает, что далее следует имя файла (архива);
  • --wildcards позволяет использовать шаблоны для выбора файлов.

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

Применение:

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

tar xvf ../playground2.tar --wildcards 'home/me/playground/dir-*/file-A' && rm ../playground2.tar

Символ && в данном контексте гарантирует, что команда rm будет выполнена только если команда tar завершилась успешно.

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

Оцените материал
Добавить комментарий

Капча загружается...