Я думаю, что вы не можете использовать опцию -C
как вы предполагаете в этом вопросе.
Раздел 6.10.1 Changing the Working Directory
в руководстве по GNU для tar
описывает параметр -C
следующим образом:
Чтобы изменить рабочий каталог в середине списка имен файлов, либо в командной строке, либо в файле, указанном с помощью '--files-from' ('-T'), используйте '--directory' ('-C «). Это изменит рабочий каталог на указанный каталог после этой точки в списке.
‘--directory=directory’
‘-C directory’
Изменяет рабочий каталог в середине командной строки.
Например,
$ tar -c -f jams.tar grape prune -C food cherry
поместит файлы 'grape' и 'prune' из текущего каталога в архив 'jams.tar', а затем файл 'cherry' из каталога 'food'. Эта опция особенно полезна, когда у вас есть несколько широко разделенных файлов, которые вы хотите сохранить в одном архиве.
Обратите внимание, что файл 'cherry' записывается в архиве под точным названием 'cherry', а не 'food /cherry'. Таким образом, архив будет содержать три файла, которые, кажется, все пришли из одного каталога; если архив извлекается с помощью простого tar -extract, все три файла будут записаны в текущем каталоге.
На странице руководства есть еще несколько примеров ...
Обновить:
Я обычно не смешиваю файлы с разных путей в один tar-шар.
Тем не менее, если это то, что вы хотите, есть две вещи, которые можно сделать,
- Используйте опцию
-T
со списком каталогов / файлов, которые вы хотите упаковать вместе.
Это соберет все вещи вместе с дополнительными префиксами пути.
- Используйте опцию
-h
в каталоге 'link image'
(вы делаете один из них со скриптом для создания ссылок на интересующие вас файлы и каталоги в новом и пустом каталоге)
Опция -h
используемая в таком каталоге, создаст один tar-шар, который представляет макет файла в этом каталоге.