1. Problemy ze znakami specjalnymi w nazwach plików
Czy w nazwach plików są jakieś znaki specjalne? W zależności od systemu plików, w którym zapisujesz te pliki, mogą one nie pozwalać na przykład poprzedzać plików kropką ( .
).
2. Problemy z czasami modyfikacji rsync i webdav2
Natrafiłem na ten post na blogu, w którym opisany jest problem z rsync
czasem zapisu / śledzenia modyfikacji pliku w katalogach box.com zamontowanych w webdav2.
Problem pojawia się w następujący sposób w zamontowanym systemie plików:
david@sydney:~/Pictures$ ls -l /mnt/box/bwca/08/09/IMG_3084.CR2
-rw-r--r-- 1 david david 12564061 Aug 14 16:08 /mnt/box/bwca/08/09/IMG_3084.CR2
david@sydney:~/Pictures$ ls -l 2012/08/09/IMG_3084.CR2
-rw-rw-r-- 1 david david 12564061 Aug 9 13:00 2012/08/09/IMG_3084.CR2
Ten sam artykuł pokazał obejście:
$ rsync -avhP --size-only --bwlimit=64 2012/08 /mnt/box/bwca/
Jest to OK sposób użycia rsync
, ale teraz porównuje tylko pliki na podstawie ich rozmiaru, a nie ich sumy kontrolne.
3. Problemy z davfs2 (WebDAV)
Natknąłem się na ten wątek: rsync przez davfs2? na forum WebDAV (davfs) na stronie sourceforge. Ktoś pytał o podobną sytuację, w której chcieli użyć WebDAV do zamontowania dostawcy pamięci masowej online i wykonania rsync do zamontowanej pamięci masowej za pośrednictwem WebDAV. To właśnie powiedział jeden z programistów (Werner Baumann) WebDAV na ten temat .
fragment odpowiedzi Wernera
davfs2 prześle tylko pełne pliki. Nie jest w stanie wykonywać czynności przyrostowych, które zwykle wykonuje rsync, a to sprawia, że rsync jest bardzo wydajny.
davfs2 używa lokalnej pamięci podręcznej na dysku. Dzięki temu będzie bardziej responsywny, a Twoja aplikacja również powinna na tym skorzystać. Ale potrzebuje do tego lokalnego miejsca na dysku. Powinieneś zezwolić na duży rozmiar pamięci podręcznej, aby rsync mógł wykonywać większość swojej pracy z lokalną pamięcią podręczną, a davfs2 prześle większość plików w tle, gdy rsync już się zakończy.
Werner sugeruje, co następuje
W tym przypadku może to być wadą. Gdy rsync odczytuje plik na zdalnym hoście, musi on zostać najpierw przesłany przez davfs2 do lokalnej pamięci podręcznej (jeśli jeszcze go nie ma). Może to spowodować, że proces będzie naprawdę i niepotrzebnie powolny. Ponieważ rsync działa tylko jako wyrafinowany program kopiujący w twoim przypadku, może być lepiej użyć cp. cp ma opcje (-u) do kopiowania tylko plików nowszych niż te w systemie plików davfs2 (= smartdrive) i nie musiałby czytać plików, a jedynie odczytywał metadane plików, takie jak mtime.
Polecenie takie jak „cp -pru directory / to / backup dav /” może wykonać zadanie. Nie pobiera plików (tak jak rsync może, ale nie jestem pewien) (spójrz na instrukcje cp i rsync).
Opcje?
Tak jak sugeruje @Anthon, możesz użyć cp -u
metody do skopiowania plików. Zdając sobie sprawę, że ta metoda uwzględnia jedynie rozmiar pliku jako czynnik porównawczy, więc nie jest całkowicie niezawodna.
Nie należy używać niczego, co tylko wygląda czasami modyfikacji przy porównywaniu plików cp -pru
. Werner wyjaśnia dlaczego w tym wątku :
fragment dotyczący problemu z czasami modyfikacji
Po odmontowaniu systemu plików davfs2 i zamontowaniu go później, czasy plików mogły ulec zmianie w zależności od informacji o czasie z serwera. Narzędzia takie jak cp -pu i rsync nie mogą polegać na tych czasach w celu ustalenia, które pliki uległy zmianie.
Biorąc pod uwagę różne problemy związane z czasami modyfikacji, lepsze wydaje się podejście wykorzystujące sumy kontrolne:
$ rsync -avvz --omit-dir-times --checksum --human-readable --progress <local dir> <remote dir>
--max-size=250M --exclude '.*'
. Jestem pewien, żecp
można to zrobić ... może przez przesłanie wyników find do cp? Ale nie wiem jeszcze, jak to zrobić. Jeśli wymyślimy rozwiązanie, spróbujęcp -ru
. Dzięki