
Tenho uma pasta local que desejo sincronizar com um servidor webdav. Há muitos arquivos na minha pasta e eu precisaria disso depois de editar alguns arquivos ou adicionar/remover pasta para poder sincronizar as alterações com o servidor webdav ignorando o que está no servidor e sempre usando meus arquivos. Existe algum script ou ferramenta que eu possa usar na linha de comando para fazer isso?
E montar o recurso não é solução.
Responder1
WebDav-sync é um programa java desenvolvido para essa finalidade.http://www.re.be/webdav_sync/index.xhtml
Responder2
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/
Responder3
Usar o rsync em uma unidade webdav montada pode perder sua eficiência de backup incremental. O algoritmo de soma de verificação no rsync faz com que arquivos remotos (completos ou parciais) sejam baixados e armazenados localmente, podendo desperdiçar largura de banda de download.
Uma solução não perfeita é usar o sinalizador "--size-only" para salvar bw:
rsync -ahvP --size-only /your/source/path /your/webdav_mount/path/
Não funcionará se os arquivos forem atualizados, mas ainda tiverem os mesmos tamanhos.
Responder4
Parece que uma solução rápida para realizar essa sincronização unidirecional é reutilizar e modificar o script que propus como respostaaquiapenas adicionando algo como test -d "$src" && echo "rmcol \"$src\"";
logo após a linha com um único colchete de abertura.
Observe que isso envolve retransmitir todo o conteúdo de cada vez, portanto use-o apenas para diretórios "pequenos"; caso contrário, a solução que recorre à montagem e utilização rsync
seria muito mais adequada.