Эффективные способы исключения полных путей в архивировании Tar

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

Метод 1: использование параметра --transform
Опция --transformпозволяет применить преобразование к именам файлов или каталогов перед добавлением их в архив. Вы можете использовать эту опцию, чтобы исключить полные пути. Вот пример:

tar --transform 's/.*\///' -cvf archive.tar /path/to/directory

Объяснение:

  • --transform 's/.*\///'определяет преобразование с использованием регулярного выражения. Он сопоставляет все до последней косой черты (/) и заменяет ее пустой строкой, фактически исключая полные пути.
  • -cсоздает новый архив.
  • -vвключает подробный режим для отображения файлов, добавляемых в архив.
  • -f archive.tarуказывает имя выходного файла.
  • /path/to/directory— путь к каталогу, который вы хотите заархивировать.

Метод 2: использование параметра --exclude
Опция --excludeпозволяет указать шаблоны файлов и каталогов, которые необходимо исключить из архива. Объединив ее с командой find, вы можете исключить полные пути. Вот пример:

find /path/to/directory -type f -print | tar -cvf archive.tar --exclude='*/*'

Объяснение:

  • find /path/to/directory -type f -printперечисляет все файлы в указанном каталоге.
  • tar -cvf archive.tar --exclude='*/*'создает архив и исключает файлы с полными путями. Шаблон --exclude='*/*'исключает любой файл, в имени которого есть косая черта (/).

Метод 3: использование параметра --anchored
Опция --anchoredуказывает tarрассматривать шаблоны как привязанные. Комбинируя его с параметром --exclude, вы можете исключить полные пути. Вот пример:

tar --anchored --exclude='*/*' -cvf archive.tar /path/to/directory

Объяснение:

  • --anchoredуказывает, что шаблоны, указанные в --exclude, должны соответствовать всему пути.
  • --exclude='*/*'исключает любой файл, в имени которого есть косая черта (/).
  • -cсоздает новый архив.
  • -vвключает подробный режим для отображения файлов, добавляемых в архив.
  • -f archive.tarуказывает имя выходного файла.
  • /path/to/directory— путь к каталогу, который вы хотите заархивировать.

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

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