При работе с командой 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, вы можете эффективно сохранить относительная структура каталогов. Поэкспериментируйте с этими методами, чтобы найти тот, который лучше всего соответствует вашим требованиям.
Помните, что архивирование файлов без полных путей может оказаться полезным, если вы хотите поддерживать чистоту и порядок в архиве.