
Tengo una carpeta local que quiero sincronizar con un servidor webdav. Hay muchos archivos en mi carpeta y los necesitaría después de editar algunos archivos o agregar/eliminar carpetas para poder sincronizar los cambios con el servidor webdav ignorando lo que hay en el servidor y usando siempre mis archivos. ¿Existe algún script o herramienta que pueda usar desde la línea de comandos para hacer eso?
Y montar el recurso no es una solución.
Respuesta1
WebDav-sync es un programa java diseñado para este propósito.http://www.re.be/webdav_sync/index.xhtml
Respuesta2
mkdir /volumes/web_dav/
mount_webdav -s -i https://<web_dav_domain_name:port>/ /volumes/web_dav/
rsync -rvz /your_directory/ /volumes/web_dav/
umount /volumes/web_dav/
Respuesta3
El uso de rsync en una unidad webdav montada puede perder su eficiencia de respaldo incremental. El algoritmo de suma de comprobación en rsync hace que los archivos remotos (completos o parciales) se descarguen y almacenen localmente, lo que puede desperdiciar ancho de banda de descarga.
Una solución no perfecta es utilizar la bandera "--size-only" para guardar bw:
rsync -ahvP --size-only /your/source/path /your/webdav_mount/path/
No funcionará si los archivos se actualizan pero aún tienen el mismo tamaño.
Respuesta4
Parece que una solución rápida para realizar dicha sincronización unidireccional es reutilizar y modificar el script que propuse como respuesta.aquísimplemente agregando algo como test -d "$src" && echo "rmcol \"$src\"";
justo después de la línea con un solo corchete de apertura.
Tenga en cuenta que esto implica retransmitir todo el contenido cada vez, así que utilícelo sólo para directorios "pequeños"; de lo contrario, la solución recurriendo al montaje y uso rsync
sería mucho más adecuada.