Como posso copiar um arquivo entre o servidor usando o bsdtar?

3

Estou procurando a maneira mais rápida de copiar um arquivo entre 2 servidores linux usando o bsdtar.

Com tar normal, eu faria algo como:

ssh root@remote 'tar -cz -C /my/path/ big_file.txt' | tar -zxv

No entanto, apenas substituir "tar" por "bsdtar" parece não funcionar.

Então, minhas perguntas são:

  1. Como eu faria isso com o bsdtar?
  2. Em vez de usar o gzip, gostaria de usar algo que possa usar vários núcleos para compactar / descompactar, como o pbzip2. Como eu iria canalizar isso?
  3. Eu quero que o arquivo "big_file.txt" seja chamado de "hello_world.txt" no servidor de destino sem usar um arquivo temporário com renomeação. Como?

UPDATE 1:

Eu mesmo resolvi o número 1:

ssh root@localhost 'bsdtar -cz -f - -C /my/path/ big_file.txt' | tar -zxv

UPDATE 2:

Eu mesmo resolvi o número 3:

ssh root@localhost 'bsdtar -cz -f - -C /my/path/ big_file.txt' | tar -zxv -O > test.txt
    
por Daniele Testa 01.05.2013 / 23:51

1 resposta

2

Existem muitas variações na sintaxe do comando tar . O padrão GNU tar é ler o arquivo na entrada padrão e gravar o arquivo na saída padrão, mas muitas outras versões são padronizadas para um dispositivo de fita. Passe o sinalizador f (com ou sem um traço - acho que as versões BSD também suportam) com o argumento - para indicar stdin ou stdout.

Se você quiser usar um programa diferente de (de) compressão, não diga tar para comprimir, e insira o (de) programa de compressão explicitamente.

Para renomear o arquivo, use a opção -s , se a sua versão de tar oferecer suporte a ele (é semelhante à opção -s de pax e à opção --transform do GNU tar).

ssh root@remote 'cd /my/path && bsdtar cf - -s '/big_file\.txt$/hello.txt/' big_file.txt | pbzip2' | pbzip2 -d | tar xf -

Se você estiver copiando apenas um único arquivo, não há sentido em usar o tar, a menos que você deseje preservar metadados e queira usar um programa de compactação personalizado.

scp -C -p root@remote:/my/path/hello.txt big_file.txt
    
por 02.05.2013 / 01:43

Tags