rsync nie działa między NTFS / FAT i EXT

14

Mam muzykę, którą odtwarzam w samochodzie, z pamięci USB FAT32. Folder, którego używam do umieszczania utworów, jest przechowywany na moim dysku twardym EXT4. Regularnie dodaję / usuwam / odtwarzam utwory, a czasem chcę rsynczmiany w pamięci USB. Ale z jakiegoś nieznanego powodu (może uprawnień?) rsyncKopiujesz wszystkie pliki za każdym razem, a nie tylko je zmieniasz. Dzwonię rsyncjak:

rsync -vrlptgD source dest

Jak mogę sprawić, by działał tak, jak chcę (tj. Wiedzieć, kiedy plik nie został zmieniony i nie kopiuj go)?

wim
źródło

Odpowiedzi:

18

Odpowiedź Javiera Rivery działa, ale rsync zajmuje dość długo sprawdzenie i porównanie wszystkich sum kontrolnych plików. Odkryłem, że użycie następującej opcji działało dla mnie lepiej:

rsync -rtv --modify-window=1 /source /dest

--modify-window=1Przełącznik pozwala na wariancji ± 1s na znaczniki czasu. Po włączeniu tej opcji porównywanie znaczników czasu będzie bardziej łagodne i pozwoli na sprawdzenie drobnych różnic czasowych między systemami plików NTFS / FAT i Unix.

Źródło (ger): http://www.kai-hildebrandt.de/tutorials/rsync.html

PS: Należy pamiętać, że DST spowoduje pełne przesyłanie plików dwa razy w roku. Zobacz tutaj, aby uzyskać szczegółowe informacje i możliwe rozwiązania.

Glutanimate
źródło
To jest świetne. Uznałem też, że opcja ta jest --iconvpomocna przy przechodzeniu ze źródłowego linuxa na dest MacOS
wim
2
Z jakiegoś powodu muszę użyć, modify-window=2ponieważ =1nadal kopiuje wszystkie pliki. Kopiowanie z NTFS do FAT32. Po tym jednak jest w porządku.
Luc
Dodałem --size-onlyflagę, aby pominąć pliki o dopasowanym rozmiarze
alexandre1985,
1
@ alexandre1985: Pominie pliki zmieniające ich zawartość, ale nie ich rozmiar. Powinieneś go używać tylko wtedy, gdy chcesz wykonać kopię zapasową plików, które zawsze zmieniają rozmiar, gdy zmieniają zawartość, np. Ponieważ dane są tylko do nich dołączane, ale nigdy nie są nadpisywane.
David Foerster,
11

Znaczniki czasu w FAT32 są zbyt różne od uniksowych, aby polegać na nich w celu sprawdzenia zmian plików, powinieneś również użyć przełącznika -c, to zmusi rsync do porównania wszystkich plików w celu wykrycia zmian zamiast polegania na znacznikach czasu. Będzie działać, ale działa wolniej.

Wreszcie, w twoim poleceniu jest kilka opcji, które nie mogą współpracować z systemami plików FAT32.

  • -l zachowa linki, FAT32 nie ma pojęcia o linkach
  • -p spróbuje zachować uprawnienia, ponownie brak uprawnień w FAT32
  • -t spróbuje zachować znaczniki czasu modyfikacji, na FAT32 jest tylko jeden znacznik czasu
  • -g spróbuje zachować własność grupy, ponownie nieobsługiwanej przez FAT32
  • -D spróbuje zachować specjalne pliki i urządzenia, teraz to, co tu jest.

Jak komentuje htorque, nieważne opcje cię nie skrzywdzą, po prostu nic nie zrobią. Ale musisz dodać przełącznik -c.

To:

rsync -vrc source dest

powinien działać (przynajmniej działa na moim komputerze).

Javier Rivera
źródło
3

Miałem podobny problem w OSX, a odpowiedź Glutanamate nie pomogła. Niektóre pliki różnią się o godzinę; może to być spowodowane tym, że stosunkowo często przekraczam strefy czasowe. Inne pliki są wyłączone o jeden dzień lub nawet miesiąc. Nie jestem pewien, dlaczego tak jest. Sprawdzanie sumy niektórych plików z bardzo różniącymi się znacznikami czasu pokazuje, że rzeczywiście są one identyczne.

W każdym razie wygląda na to, że --size-onlyopcja, która każe rsyncignorować znaczniki czasu, będzie działać dla moich celów. -c/ --checksum(jak wspomniał Javier) również działa, ale trwa nieco dłużej. Zmierzyłem czas i porównanie sum kontrolnych dla GB zajęło około minuty w podkatalogu, z którym pracuję. Oczywiście szybkość, z jaką to się dzieje, będzie zależała od najwolniejszego napędu w systemie; w moim przypadku jest to karta SD w moim telefonie. Było to jednak po tym, jak już trochę manipulowałem plikami (w tym sumowaniem), więc wiele plików mogło już zostać skopiowanych do pamięci podręcznej RAM.

intuicyjny
źródło
1

Powinieneś także unikać używania popularnej opcji -a. Moje zalecenie dotyczące FAT32 to

 rsync -vrc --delete --progress --no-p source  destination

--no-p: brak pozwolenia

- usuń: usuń niepasujące pliki i foldery w miejscu docelowym (jeśli naprawdę tego chcesz)

--progress: pokazuje postęp podczas transferu. Jest to dobre dla dużych plików.

Ahmad Yoosofan
źródło
1
Mam głos ode mnie, chociaż dodatkowo -vrcrobię to-vrcz
Antony,
0

To zbyt wiele flag (-vrlptgD), których używasz. Pamiętaj, że rsync jest narzędziem Linuksa i nie działa skutecznie z Fat32 i NTFS.

Trzeba będzie polować na sztuczki, aby móc z niego skorzystać.

Próbować:

rsync -rvh --size-only --progress --delete /path/to/ext4/ /path/to/fat32/

Więcej informacji tutaj

Raman Kathpalia
źródło