Eu sugeriria usar o rsync para fazer esse tipo de transferência. Ele pode usar ssh
para criptografar o tráfego (para que você não precise usar uma VPN separada), compacta o fluxo (que pode ser bastante eficaz dependendo do tipo de dados) e pode reiniciar as transferências se elas falharem uma soma de verificação contínua para ver o paradeiro de uma transferência falhada e de onde começar novamente.
Eu uso o seguinte que incorpora o acima (como o cliente rsync na minha / maioria das máquinas usam ssh por padrão):
rsync -avz <local file> username@hostname:/path/where/to/place/file/<remote file>
Você pode usar --progress
para ver no terminal como a transferência está progredindo. Normalmente, o ssh está dentro e usa a máquina local rsync
client, mas também há um daemon rsync. Eu nunca usei isso, mas vale a pena investigar se você quer um daemon real parecido com ftpd
.
Como ele usa o SSH, você também pode alterar as portas que ele usa se os firewalls bloqueá-los. ou seja, você não precisa ter o ssh escutando na porta 22 (na verdade, não evito pessoas aleatórias na internet verificando meu SSH).
Geralmente é usado em sistemas Unix (que inclui Macs), mas você pode instalá-lo com o Cygwin também se você precisa usá-lo no Windows.
Se você quer um serviço real, eu uso rsync.net que, obviamente, fornece armazenamento para o qual você pode facilmente sincronizar os dados. Eles têm um centro de dados europeu na Suécia que se encaixam em seus propósitos e não limitam as velocidades de tráfego de entrada / saída (apesar de verificar as letras pequenas).