rsync: jak wykonać bezpieczną 2-drożną synchronizację lokalnego <-> zdalnego webdav?

1

Mam dwa katalogi:

  • /Volumes/webdav/ - zamontowany zdalny dysk WebDAV
  • ~/files - kopia lokalna

Chciałbym wykonać między nimi synchronizację dwukierunkową (ręczną). Co ja robię:

$ rsync --exclude='.gitconfig' --exclude='*~' --exclude='.DS_Store' -varP ~/files/* /Volumes/webdav/ --delete

I odwrotnie (/ Volumes / webdav / * ~ / files /).

pytania

  1. Jaka jest różnica pomiędzy ~/files/ /Volumes/webdav/ i ~/files/* /Volumes/webdav/? W pierwszym przypadku dostaję:

    building file list ...
    4498 files to consider
    

    w sekundę:

    building file list ...
    1382 files to consider
    ...
    
  2. Dzienniki synchronizacji często pokazują coś takiego:

    building file list ...
    4498 files to consider
    .es/
    .es/�\#232а�\#200�\#202а Саи�\#206�\#202а.doc
           20480 100%    0.00kB/s    0:00:00 (xfer#1, to-check=4486/4498)
    .hb/
    .hb/25-512.png
           39036 100%    5.98MB/s    0:00:00 (xfer#2, to-check=4482/4498)
    .hb/icon-white-menu.png
            1546 100%    1.47MB/s    0:00:00 (xfer#3, to-check=4481/4498)
    .hb/icon-white.png
           26858 100%    0.00kB/s    0:00:00 (xfer#4, to-check=4480/4498)
    .pt/Untitled/
    .pt/session0/
    .pt/speed1/
    .pt/speed1/Session File Backups/
    .var/
    .var/DSC_6545.jpg
         4595455 100%   92.58MB/s    0:00:00 (xfer#7, to-check=4198/4498)
    .var/book_edit.pdf
    ...
    

    Tak więc rsync pokazuje pewien postęp w przesyłaniu plików, ale jeśli ponownie uruchomię polecenie, pokaże to samo - przeniesie te same pliki, przejdzie przez te same foldery itp. Czy rzeczywiście przenosi coś? Jeśli tak, dlaczego za każdym razem?

Dzięki.

user2734
źródło
Nie wyświetlasz pełnego ciągu znaków. Czy używasz -u? Czy rozdzielczość pliku jest taka sama na woluminie docelowym jak źródło? Czy używasz --modify-window?
AFH
Różnica pomiędzy ~/files/ i ~/files/* to, że drugi nie będzie obejmował ~/files/.*: rsync rekursja obejmuje wszystkie pliki w podkatalogu, w tym pliki kropek, ale za pomocą ~/files/* wyklucza pliki dot ~/files/ przed rekursja; pliki dot z kolejnych poziomów rekurencji będzie być uwzględnionym.
AFH
@AFH dziękuję! Pokazałem pełny ciąg w oryginalnej wiadomości: rsync --exclude='.gitconfig' --exclude='*~' --exclude='.DS_Store' -varP ~/files/* /Volumes/webdav/ --delete O rozdzielczości pliku: trudno mi powiedzieć, ponieważ jest to serwer WebDAV innej firmy. Po mojej stronie używam MacOS. Wypróbowałem też synchronizator plików Unison i również nie działa The contents of file have been modified during transfer, co może wskazywać na pewne problemy ze znacznikami czasu.
user2734
Zwykle używam ls --full-time porównać czasy, ale mam wrażenie, że opcja nie istnieje w OSX. Innym programem, który pokazuje czasy z rozdzielczością pikosekundową jest stat, które możesz wypróbować na dowolnym pliku i jego kopii zapasowej. W ten sposób dowiesz się, czy znaczniki czasu są identyczne, a jeśli nie, ile sekund należy użyć --modify-window: 1 lub 2 powinny być odpowiednie.
AFH