Respostas:
Uma palavra: rsync
.
Observe que, se você estiver em um link lento ou o servidor estiver sobrecarregado, a ferramenta usada para copiar não será o gargalo e qualquer forma de cópia ficará lenta de qualquer maneira.
Isso deve fornecer o uso básico para copiar entre o computador local e o servidor remoto: http://oreilly.com/pub/h/38
Para copiar do computador local para um servidor remoto (é necessário substituir os caminhos, nome de usuário e endereço do host, é claro):
rsync -avz -e ssh /path/on/local/computer remoteuser@remotehost.somewhere.example.com:/path/on/server
-a
arquivo-v
detalhado-z
comprimir-e ssh
"use um túnel SSH"Para copiar na outra direção, alterne os caminhos (primeiro é de , segundo é para ):
rsync -avz -e ssh remoteuser@remotehost.somewhere.example.com:/path/on/server /path/on/local/computer
Mas o rsync é útil mesmo para copiar coisas no mesmo servidor:
rsync -av /path-to/copy/from /path_to/copy/to
-z
para copiar ou copiar LAN dentro de uma máquina; teste com e sem -z
cópia na Internet (um ou outro pode ser mais rápido, dependendo de muitas coisas).
-e ssh
agora é o padrão para hosts remotos, portanto, não é necessário passar a opção explicitamente.
Outra palavra: scp
scp /path/on/local/computer remoteuser@remotehost.somewhere.example.com:/path/on/server
Para ofertas únicas, o scp é útil. Se houver muitos arquivos, o rsync é uma boa ideia. Se uma conexão cair, o rsync poderá continuar de onde parou.
Eu sabia que o rsync tinha compressão ( -z
), e acabei de aprender que o scp também ( -C
).
Na sua configuração, o rsync provavelmente é suficiente ... mas, por exemplo, se houver muitos arquivos pequenos, pode ser mais rápido tar os arquivos primeiro do que transferi-los e depois via rsync. Isso ocorre porque a transferência das permissões do proprietário, de data e hora, é um pouco mais pesada que o próprio arquivo, se o arquivo for pequeno. O Tar mesclará todas essas informações em um arquivo e o rsync copiará blocos maiores.
Ou melhor ainda, se nenhuma segurança for necessária, use tar e nc:
No destino, prepare um daemon de recebimento, descompacte e descompacte:
nc -l -p 12345 | pigz -d | tar xvf -
Na fonte, tar tudo, compactar em paralelo e enviá-lo para o destino:
tar cvf - ./ | pigz | nc host 12345
-z
opção de cópia local, uma vez que adiciona uma sobrecarga desnecessária. IMHO, você só deve usar-z
ao usar o rsync em um link de rede lento. Se copiar grandes quantidades de dados acima de 100Base-T, você pode ficar bem sem-z
. Com uma conexão de rede rápida, o uso de compactação pode atrelar sua CPU e causar outros processos de fome.