Isso deve ser muito simples para especialistas aqui.
Eu tenho uma conta Linux com cota de disco do usuário de apenas 6 GB. Há algumas pastas de dados /opt
com cerca de 3 GB de dados quando compactado aparece 1 GB. Existem alguns links simbólicos dentro data-folder
. Normalmente, para fazer um backup do trabalho, eu costumava fazer o seguinte.
cp -rvfL /opt/data-folder ~/
cd ~/
tar -zcvf data-folder.tar.gz data-folder
rm -rvf data-folder
Agora eu já consumi 2,5 GB na minha cota de disco do usuário, tenho apenas espaço suficiente para copiar arquivos para minha casa, mas não para tar
ela novamente.
Existe alguma maneira de tar e copiar a pasta com um único comando, digamos, usando um pipe.
PS Não consigo entrar /opt
porque só tenho acesso de leitura /opt
.
cd /opt; tar zcf $HOME/junk.tar.gz junk
,.Respostas:
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):
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):
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:
Duplique um diretório + subdivide para outro diretório remoto:
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:
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.fonte
-cvf
vez decvf
, outros não reconhecerão o-
estilo. Ez
costumava significar "compactar com 'compactar'", mas no tar 'recente' significa "compactar com gzip". Você pode saber que a compressão é usado em um arquivo com:file zefile
. E, em seguida, renomeá-lo em conformidade (se o seu uso tarcompress
, deve melhor ser renomeado .tar.Z não .tar.gz)Use a
-h
opção tar. Na página do manual:então você pode usar
tar -zcvfh data-folder.tar.gz /opt/data-folder
fonte
bsdtar
em vez disso, oupax
(cd /opt && pax -Lw data-folder | gzip > ~/data-folder.tar.gz
) que detectar os loopstar -rf <tarfilename> <filename>
para adicionar ao arquivo tar existente.