Chcę użyć rsync do wykonania kopii zapasowej mojego serwera Ubuntu z dyskiem znajdującym się na komputerze Mac. Ale nie działam poprawnie, ponieważ za każdym razem po ponownym uruchomieniu operacji rsync pliki ze znakami specjalnymi są najpierw usuwane, a następnie ponownie synchronizowane. Wygląda na to, że występuje problem z różnymi zestawami znaków.
Preferowanym rozwiązaniem wydaje się być użycie --iconv
opcji:
Możesz użyć opcji rsync --iconv do konwersji między UTF-8 NFC i NFD, przynajmniej jeśli korzystasz z komputera Mac. Istnieje specjalny zestaw znaków utf-8-mac, który oznacza UTF-8 NFD. Aby skopiować pliki z komputera Mac na serwer NAS, musisz uruchomić coś takiego:
rsync -a --iconv=utf-8-mac,utf-8 localdir/ mynas:remotedir/
Spowoduje to konwersję wszystkich lokalnych nazw plików z UTF-8 NFD na UTF-8 NFC na zdalnym serwerze. Zawartość plików nie zostanie zmieniona.
Dzięki @Jan zaktualizowałem moją wersję rsync na moim komputerze Mac z wersji 2.6.9. do 3.1.1. Nadal mnie tam nie ma, ponieważ otrzymuję kolejny błąd:
iconv_open("UTF-8", "utf-8-mac") failed
rsync error: requested action not supported (code 4) at rsync.c(118) [sender=3.0.9]
rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
rsync error: error in rsync protocol data stream (code 12) at io.c(226) [Receiver=3.1.1]
Nie mogę zrozumieć, dlaczego „żądane działanie nie jest obsługiwane”, ponieważ wydaje się, że wersja rsync na moim Ubuntu (12.04) jest po wersji 3.xx, a zatem powinna obsługiwać --iconv
opcję.
EDYCJA: Dodaję, że kiedy (na Macu, nota bene) inicjuję rsync Z Maca na Linuksa, wszystko działa doskonale:
rsync -av --delete --iconv=utf-8-mac,utf-8 localdir/ mynas:remotedir/
Ale przejście na drugą stronę z komputera Mac nie działa. O dziwo, testowanie w celu zainicjowania rsync z maszyny linuxowej wyświetla ten dziwny komunikat:
rsync: on remote machine: --iconv=UTF-8-MAC: unknown option
rsync error: syntax or usage error (code 1) at /SourceCache/rsync/rsync-45/rsync/main.c(1333) [server=2.6.9]
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(605) [sender=3.0.9]
w tym bardzo dziwne roszczenie [server=2.6.9]
, chociaż zaktualizowałem do wersji 3.1.1 na Macu. Z niektórych powodów wygląda na to, że moja maszyna linuxowa „widzi” tylko oryginalną wersję rsync na Macu.
Wszelkie sugestie dotyczące rozwiązania tego problemu?