Alguém pode me dizer se é possível canalizar | isso sem ter que criar um arquivo físico em qualquer lugar entre A e B.tar.gz?
Isto é o que estou tentando fazer:
- Arquivo A
- Renomeie A para B
- Tar B.tar
- gzip -9 B.tar.gz
Então, por exemplo:
cp A B | tar cvf - B | gzip -9 B.tar.gz
cp A B
?mv
.A
aB
primeira.Respostas:
Os exemplos a seguir podem ser usados para evitar a criação de arquivos intermediários:
alcatrão com gzip:
tar cf - A | gzip -9 > B.tar.gz
gzip sem alcatrão:
gzip -9c A > B.gz
alcatrão sem gzip:
tar cf B.tar A
Renomear (mover)
A
para oB
primeiro não faz sentido para mim. Se isso for pretendido, basta colocar ummv A B &&
antes de qualquer um dos comandos acima e trocarA
comB
ele.Exemplo com tar e gzip:
mv A B && tar cf - B | gzip -9 > B.tar.gz
fonte
Depende da sua versão do tar
Se você possui a versão que suporta transformações de membros (--transform ou --xform), pode simplesmente fazer
o | gzip -9> B.tar.gz pode ser evitado se o seu tar suportar a opção -z
Se sua versão do tar não suportar --transform, você deverá copiar o arquivo primeiro, por exemplo,
No entanto, se você estiver compactando apenas um arquivo, por que não pular a parte do alcatrão todos juntos?
fonte
Se você estiver usando
cp
para fazer uma cópia com um nome / local diferente, inclua o nome do caminho completo / final desejado ao criar o arquivo .gzip completo:fonte
tar -czf - some-folder > some-archive.tar.gz
?