Você está se limitando muito se limitar suas opções de protocolo ao FTP.
Idealmente, você só quer carregar os "bits" que foram alterados desde o último backup. O protocolo FTP não tem funcionalidade para fazer isso nativamente, então você precisaria de algum tipo de software em execução em seu escritório para identificar os "bits alterados" e enviar apenas essas alterações. Você poderia certamente implementar algo assim, mas acho que descobrirá que está limitado nas soluções disponíveis no mercado.
Você pode considerar algo que implementa o protocolo rsync, que permite que apenas os bits alterados de arquivos sejam enviados e cria essa lista de bits alterados com base na comparação das cópias locais e remotas dos arquivos.
Seu servidor Linux remoto pode hospedar um servidor rsync com bastante facilidade. A maioria das distribuições Linux tem um pacote interno para um servidor rsync. O acesso ao rsync deve ser realizado através de um mecanismo de transporte seguro, como uma VPN ou um túnel SSH.
No lado do Windows Server, você pode dar uma olhada em um dos pacotes abaixo.
Pessoalmente, eu observaria o rdiff-backup porque ele permite que você mantenha facilmente várias gerações de backups remotamente (diariamente, semanalmente, mensalmente, etc.).
Todas as implementações de rsync no Windows que eu conheço lidam com permissões de NTFS mal. Eu uso a maravilhosa ferramenta setacl da Helge Klein para despejar as permissões dos arquivos que estão sendo copiados para um arquivo dentro do conjunto de backup. No caso de um desastre, o setacl pode ser usado para restaurar as permissões.