Ответ 1
Используйте -C
, чтобы указать каталог, из которого файлы выглядят так, как вы хотите, и затем укажите файлы, как видно из этого каталога:
tar -cvzf test.tar.gz -C /home/path test
Когда я пытаюсь сжать файлы и каталоги с помощью tar
с использованием абсолютных путей, абсолютный путь сохраняется в результирующем сжатом файле. Мне нужно использовать абсолютные пути, чтобы сообщить tar
, где находится папка, которую я хочу сжать, но я хочу, чтобы она сжимала эту папку, а не весь путь.
Например, tar -cvzf test.tar.gz /home/path/test
- где я хочу сжать папку test
. Однако то, что я на самом деле заканчиваю сжиманием, /home/path/test
. Есть ли что-то, что можно сделать, чтобы избежать этого? Я пробовал играть с операндом -C безрезультатно.
Используйте -C
, чтобы указать каталог, из которого файлы выглядят так, как вы хотите, и затем укажите файлы, как видно из этого каталога:
tar -cvzf test.tar.gz -C /home/path test
Это уродливо... но оно работает...
У меня была такая же проблема, но с несколькими папками, я просто хотел сфотографировать все файлы. Вы можете использовать опцию "transform" для передачи выражения sed и... он работает как ожидалось.
это выражение:
's/.*\///g'
(удалить все до '/')
Это последняя команда:
tar --transform 's/.*\///g' -zcvf tarballName.tgz */*/*.info
пример с несколькими каталогами
tar cvzf my.tar.gz example.zip -C dir1 files_under_dir1 -C dir2 files_under_dir2
файлы под dir 1/2 не должны иметь путь.