로컬 폴더를 webdav와 동기화할 수 있는 스크립트나 명령줄 도구가 있습니까?

로컬 폴더를 webdav와 동기화할 수 있는 스크립트나 명령줄 도구가 있습니까?

webdav 서버와 동기화하려는 로컬 폴더가 있습니다. 내 폴더에 많은 파일이 있고 서버에 있는 파일을 무시하고 항상 내 파일을 사용하면서 변경 사항을 webdav 서버에 동기화할 수 있으려면 일부 파일을 편집하거나 폴더를 추가/제거한 후에 해당 파일이 필요합니다. 이를 수행하기 위해 명령줄에서 사용할 수 있는 스크립트나 도구가 있습니까?

그리고 리소스를 탑재하는 것은 해결책이 아닙니다.

답변1

WebDav-sync는 이러한 목적으로 설계된 Java 프로그램입니다.http://www.re.be/webdav_sync/index.xhtml

답변2

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/

답변3

마운트된 webdav 드라이브에서 rsync를 사용하면 증분 백업 효율성이 떨어질 수 있습니다. rsync의 체크섬 알고리즘은 원격 파일(전체 또는 일부)을 로컬로 다운로드하고 저장하도록 만든 다음 다운로드 대역폭을 낭비할 수 있습니다.

완벽하지 않은 해결책은 "--size-only" 플래그를 사용하여 bw를 저장하는 것입니다.

rsync -ahvP --size-only /your/source/path /your/webdav_mount/path/

파일이 업데이트되었지만 크기가 여전히 동일한 경우에는 작동하지 않습니다.

답변4

이러한 단방향 동기화를 수행하는 빠른 해결책은 답변으로 제안한 스크립트를 재사용하고 수정하는 것 같습니다.여기test -d "$src" && echo "rmcol \"$src\"";단일 여는 괄호를 사용하여 줄 바로 뒤에 다음과 같은 것을 추가하면 됩니다 .

여기에는 매번 모든 내용을 다시 전송하는 작업이 포함되므로 "작은" 디렉토리에만 사용하십시오. 그렇지 않으면 마운트하고 사용하는 솔루션이 rsync훨씬 더 적절할 것입니다.

관련 정보