Se o seu único acesso for via FTP, você pode querer olhar para lftp (deve estar na maioria das distros).
O lftp suporta novas tentativas automáticas de falha e também possui uma opção de espelhamento que soa como o que você deseja fazer.
Eu tenho cerca de 6 TB de arquivos que eu preciso mover de um servidor para outro. Eu fiz o meu melhor para movê-lo via FTP como abaixo, mas a conexão morre muito, e depois de uma certa quantidade de progresso, ele se desconecta antes mesmo de retomar arquivos em movimento de eu presumo demorar muito para comparar arquivos antes de realmente transferir Fora.
~/ncftp-3.2.3/bin/ncftpput -R -z -v -u "user" -p "password" upload.server.net /local/dir/ remote/dir/
Estou tentando fazer com que o servidor remoto me dê acesso com SSH para que eu possa configurar um rsync, mas há algo mais estável que eu possa fazer sobre o ftp, então talvez ele tente por conta própria continuar sem recomparando todas as listas de arquivos?
Se o seu único acesso for via FTP, você pode querer olhar para lftp (deve estar na maioria das distros).
O lftp suporta novas tentativas automáticas de falha e também possui uma opção de espelhamento que soa como o que você deseja fazer.
eu usaria o rsync. se a conexão cair, compararia a origem e o destino e sincronizaria de onde saiu (assumindo grande quantidade de arquivos pequenos para médios, e não 2 x 3 TB :)).
alternativamente inicie o apache e faça o seu diretório dir root e faça recursive wget, pode funcionar também, você só precisa dizer para ignorar arquivos que já existem localmente.
Você não diz quais são os limites para este projeto. Eu mesmo na minha situação faria isso fazendo o backup dos dados da fonte e restaurando-os para o destino usando meu software de backup.
Se você não pode fazer coisas assim, por que não tentar mover os dados em "lotes", se isso for possível, se os dados forem divididos em vários arquivos ou diretórios?