como copiar & gzip arquivos individualmente por ssh

3

Gostaria de transferir um diretório com arquivos descomprimidos usando ssh, gzipando-os individualmente ao longo do caminho. Alguém pode recomendar um oneliner simples para conseguir isso?

por exemplo,

fileA.ext - > ssh / pipe - > fileA.ext.gz

Eu tenho pipado tar sobre ssh com compressão, mas os arquivos não são comprimidos no final do pipe. Nesse caso, gostaria que eles ficassem comprimidos.

A compactação antecipada seria possível, mas exigiria espaço localmente ou exigiria uma conexão por arquivo (?)

Existem mais de 6000 arquivos, e eu prefiro uma solução em que todos os arquivos possam ser transferidos usando uma única conexão (embora eu use chaves para autenticação!)

    
por grojo 07.04.2011 / 23:16

4 respostas

6

Suponho que você prefira gzip-los primeiro, depois enviá-los.

cat dafile | gzip -c | ssh remote "cat > dafile"

Repita com a construção de loop relevante. Por exemplo,

find -type f | while read fname ; do cat $fname | gzip -c | ssh remote "cat > $fname" ; done

... ou algo nesse sentido. Precisa configurar o acesso pkey, ou este será um exercício massivo de senha e velocidade.

EDITAR:

Sobre o assunto de uma única conexão, veja man ssh_config ControlMaster. Isso significa que você economizará a sobrecarga de negociação de 5999 dessas 6000 sessões de SSH.

EDIT2:

Haha! Eu ganho!

tar zcf - /dir/of/files | ssh remote "tar zxf - --to-command=mygzip.sh"

mygzip.sh, presente na máquina remota, é assim:

#!/bin/sh
mkdir -p "$(dirname $TAR_FILENAME)"
gzip -c > "${TAR_FILENAME}.gz"
    
por 07.04.2011 / 23:22
4

O GNU Parallel pode fazer isso facilmente:

find . -type f | parallel "gzip -c {} | ssh server \"cat>{}.gz\""

que, no entanto, também encontrará e enviará arquivos em diretórios abaixo do diretório inicial.

ou alternadamente se você quiser enviar apenas todos os arquivos regulares em um único diretório:

parallel "gzip -c {} | ssh server \"cat>{}.gz\"" ::: *
    
por 08.04.2011 / 03:04
0

Todo mundo tem seus próprios truques para lidar com arquivos sem SCP. Aqui o meu (não usa SSH), link

Em segundo lugar, se você insistir em usar o SSH, talvez queira adicionar '-c arcfour' ao seu SSH.

HTH

    
por 08.04.2011 / 10:27
0

Você deve conferir esta página.

Compara o tempo de execução para este tipo de transferência de arquivos usando scp, tar + ssh e tar + nc com e sem compactação ssh ou gzip.

Além de fornecer várias opções para concluir sua tarefa, os resultados são interessantes.

    
por 18.08.2011 / 00:51

Tags