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
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 ...
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.
~/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.
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.
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.
-u
? Czy rozdzielczość pliku jest taka sama na woluminie docelowym jak źródło? Czy używasz--modify-window
?