Deseja criar um arquivo tar fora do local em que os arquivos precisam residir?
Existem diversas formas de fazer isto.
Se for para ser criado localmente (= na mesma máquina):
tar czvf /path/to/destination/newfile.tar.gz ./SOURCEDIR_OR_FILES
Você pode adicionar arquivos ou diretórios adicionais ao tar no final desse comando.
Se for para ser criado remotamente (ou seja, você deseja criar o arquivo tar em um host remoto daquele que contém os dados a serem tarados):
tar czvf - ./SOURCEDIR_OR_FILES | ssh user@host 'cat > newfile.tar.gz'
A versão posterior é muito versátil. Por exemplo, você também pode "duplicar" um diretório + subdiretora usando a mesma técnica:
Duplique um diretório + subdivide para outro diretório local:
tar cf - ./SOURCEDIR_OR_FILES | ( cd LOCAL_DEST_DIR && tar xvf - )
Duplique um diretório + subdivide para outro diretório remoto:
tar cvf - ./SOURCEDIR_OR_FILES | ssh user@host 'cd REMOTE_DEST_DIR && tar xf - '
Solte o 'v' se você não precisar exibir arquivos como são tar-ed (ou não classificados): ele será muito mais rápido, mas não dirá muito, a menos que haja um erro.
Eu uso ". / ..." para a fonte forçar o tar a armazená-lo como um caminho RELATIVO. Em alguns casos, você deseja adicionar informações adicionais sobre o caminho:
Por exemplo, para tar os arquivos crontab, incluindo o arquivo em / etc, você pode:
cd / ; tar czf all_crons.tgz ./etc/*cron* ./var/spool/cron
Eu uso de propósito o caminho relativo: algumas versões antigas do tar pode ser arquivos perigosos e extrair com seu caminho GLOBAL original, o que significa que você pode fazer: cd /safedir ; tar xvf sometar
e tem os arquivos com nomes globais sobrescrever arquivos em seu caminho original, que está fora de / safedir e não por baixo! Muito perigoso e ainda possível, pois existem servidores de produção antigos por aí. É melhor ser usado para usar caminhos relativos o tempo todo, mesmo se você usar um tar mais recente.
cd /opt; tar zcf $HOME/junk.tar.gz junk
,.