Lo mejor que hay es Duplicity. El único inconveniente es que no maneja enlaces duros.
Otra solución es Tartarus, que se puede canalizar a través de GPG y FTP/SSH directamente a un servidor de respaldo. Hace incrementales.
Aquí están las instrucciones de Tartarus, en alemán.
Creo que te gustará rsyncrypto.
Use rsyncrypto para encriptar archivos de su directorio de texto sin formato a su directorio encriptado y descifrar archivos de su directorio encriptado y su directorio de texto sin formato, usando claves que guarda localmente.
Use rsync para sincronizar entre su directorio encriptado y el host remoto.
La implementación de rsyncrypto que puede descargar ahora desde Sourceforge no solo maneja cambios en bytes, sino también inserciones y eliminaciones.
Con rsyncrypto, todas las claves de cifrado nunca abandonan la computadora local.
"El servidor remoto preferiblemente ni siquiera debería conocer la estructura del directorio"
En ese caso, querrás usar el --name-encrypt=map
opción. Eso hace que cada nombre de archivo cifrado sea una cadena aleatoria de caracteres y, de forma predeterminada, todos los nombres de archivo alterados se almacenan en un solo directorio. /P>
Relacionado:"¿Existe un sistema de control de versiones cifradas?"
En los últimos años, se ha desarrollado Rclone. Su lema es "rsync para almacenamiento en la nube", pero más allá de cosas como S3/Azure/Google/etc. proveedores de almacenamiento en la nube, también admite la sincronización entre objetivos locales y SSH/SFTP.
Cualquier "remoto" que configure, también puede agregar un envoltorio de cifrado a su alrededor. Esto actúa como el control remoto original, pero el contenido de todos sus archivos (y, opcionalmente, los nombres de los archivos) se cifran en el lado del cliente. El algoritmo está documentado y, en general, ha sido un proceso fluido en mi experiencia hasta ahora.