Eu acho que você não pode usar a opção -C
como você presume nesta pergunta.
A seção 6.10.1 Changing the Working Directory
no manual GNU para tar
descreve a opção -C
como essa,
To change the working directory in the middle of a list of file names, either on the command line or in a file specified using ‘--files-from’ (‘-T’), use ‘--directory’ (‘-C’). This will change the working directory to the specified directory after that point in the list.
‘--directory=directory’
‘-C directory’
Changes the working directory in the middle of a command line.
For example,
$ tar -c -f jams.tar grape prune -C food cherry
will place the files ‘grape’ and ‘prune’ from the current directory into the archive ‘jams.tar’, followed by the file ‘cherry’ from the directory ‘food’. This option is especially useful when you have several widely separated files that you want to store in the same archive.
Note that the file ‘cherry’ is recorded in the archive under the precise name ‘cherry’, not ‘food/cherry’. Thus, the archive will contain three files that all appear to have come from the same directory; if the archive is extracted with plain ‘tar --extract’, all three files will be written in the current directory.
Existem mais alguns exemplos na página de manual ...
Atualização:
Eu geralmente não misturo arquivos de caminhos diferentes em uma única tarball.
No entanto, se é isso que você deseja, há duas coisas que podem ser feitas,
- Use a opção
-T
com uma lista de diretórios / arquivos que você deseja compactar juntos.
Isso reunirá todas as coisas junto com prefixos de caminho extras. - Use a opção
-h
em um diretório "link image"
(você faz um daqueles com um script para criar links para arquivos e diretórios de interesse em um diretório novo e vazio)
A opção-h
usada em tal diretório criará uma única tarball que representa o layout do arquivo nesse diretório.