rsync
Eu usaria rsync antes de usar ftp ou tftp.
Mais opções e (na minha experiência) transferência mais confiável.
Eu preciso transferir arquivos de um servidor CentOS para outro. Transferirá arquivos de 5MB a cada 10 minutos. Não precisa de criptografia.
O que é fácil para a rápida transferência de arquivos?
Existe algo mais simples que o ftp?
Obrigado!
tar sobre o ssh está bem, mas tar sobre o TCP via netcat é o mais baixo possível! Se isso é uma coisa de uma vez, dê uma chance a isso:
No receptor:
nc -l -p 8989 | tar x
No remetente:
tar cf - /source-path | nc (receiving host ip address) 8989
Se isso é algo que você fará regularmente, provavelmente usaria o rsync.
Duas pessoas mencionaram tar sobre ssh, mas não disseram como fazê-lo. Para o registro, o procedimento básico é executar:
tar cf - files... | ssh remotehost 'cd /destination && tar xvf -'
Ou, se você quiser iniciar as transferências do terminal de recebimento:
ssh remotehost 'cd /source && tar cf - files' | tar xvf -
A vantagem de se fazer isso da solução netcat da Evan é que tudo pode ser iniciado a partir de um computador; você não precisa coordenar duas invocações do netcat. Se você precisar que isso seja executado automaticamente, você pode configurar uma chave ssh que permita fazer conexões sem uma frase secreta e usar essa chave para essas conexões.
ssh tem uma opção -C para comprimir seu fluxo de dados, ou você pode usar a capacidade de compactação integrada do GNU tar:
tar zcf - files... | ssh remotehost 'cd /destination && tar xzvf -'
O rsync é outra opção, mas seu ponto strong está na atualização de arquivos que já existem no terminal de recebimento. Descobri que é mais lento que scp ou tar / ssh ao usá-lo para transferir arquivos que ainda não existem no outro lado.
Eu usaria scp
ou tar
over ssh
, honestamente. A criptografia reduz a velocidade, mas a facilidade de configuração e uso, confiabilidade e (subjetivamente, é claro) a familiaridade me deixam disposto a receber o hit, a menos que eu realmente precise dessa velocidade.
Você pode acelerar a transferência ssh dizendo a ela para usar uma codificação mais rápida que a padrão, também. O padrão é geralmente 3des
e normalmente você pode fazer -c des
, então obviamente será mais rápido, e -c blowfish
é representado tão rápido quanto, embora eu não tenha testado com exatidão.
(Nos tempos do SSHv1, você poderia fazer -c none
, mas acho que alguém decidiu que era um juju ruim.)
Se você tiver que passar pelo scp / ssh, minhas experiências mostram que a codificação mais rápida habilitada por padrão atualmente é a RC4. Você especifica a cifra via ' -c arcfour ' no seu comando ssh / scp:
para cópia inicial:
scp -c arcfour -r foo/ desthost:/destdir
para atualizações:
rsync -e 'ssh -c arcfour' -r foo/ desthost:/destdir
O rsync é um bom caminho a percorrer, porque se você estiver transferindo os mesmos arquivos mais de uma vez, isso acelerará a cópia, como mostra esta citação da página man.
rsync is a program that behaves in much the same way that rcp does, but
has many more options and uses the rsync remote-update protocol to
greatly speed up file transfers when the destination file is being
updated.
The rsync remote-update protocol allows rsync to transfer just the dif-
ferences between two sets of files across the network connection, using
an efficient checksum-search algorithm described in the technical
report that accompanies this package.
O FTP é bastante simples, mas uma maneira ainda mais simples pode ser criar um compartilhamento NFS em uma máquina e montá-lo na outra. Então, copiar os arquivos consistirá em fazer um cp de um diretório para outro.
Se você quer velocidade, você pode usar netcat e tar. Será mais rápido que ssh, rsync ou scp em uma rede local onde a criptografia não é uma preocupação. Google "netcat tar".
nc -l -p 7878 | tar -C /target/dir -xzf -
tar -cz /source/dir | nc DestinationServer 7878
Isso obviamente requer que o netcat esteja realmente instalado. Google "netcat tar" para mais informações.
Eu acredito que você já resolveu seu problema mas no caso de seu ssh funcionar em outra porta (não na porta padrão 22) você pode usar isto
rsync -avz --rsh='ssh -pXXXXX' /local/dir/ [email protected]:/remote/dir
Nota: - substitua XXXXX pelo seu número de porta - substitua 192.16.1.2 pelo IP do servidor remoto correto
Tags linux file-transfer