Unix tar: не сохранять структуру каталогов - программирование

Unix tar: не сохранять структуру каталогов

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

Например, tar -cvzf test.tar.gz /home/path/test - где я хочу сжать папку test. Однако то, что я на самом деле заканчиваю сжиманием, /home/path/test. Есть ли что-то, что можно сделать, чтобы избежать этого? Я пробовал играть с операндом -C безрезультатно.

4b9b3361

Ответ 1

Используйте -C, чтобы указать каталог, из которого файлы выглядят так, как вы хотите, и затем укажите файлы, как видно из этого каталога:

tar -cvzf test.tar.gz -C /home/path test

Ответ 2

Это уродливо... но оно работает...

У меня была такая же проблема, но с несколькими папками, я просто хотел сфотографировать все файлы. Вы можете использовать опцию "transform" для передачи выражения sed и... он работает как ожидалось.

это выражение:

's/.*\///g' (удалить все до '/')

Это последняя команда:

tar --transform 's/.*\///g' -zcvf tarballName.tgz */*/*.info

Ответ 3

пример с несколькими каталогами

tar cvzf my.tar.gz example.zip -C dir1 files_under_dir1 -C dir2 files_under_dir2

файлы под dir 1/2 не должны иметь путь.