Jak synchronizować rsync z Androidem


50

Jak mogę połączyć się z moim urządzeniem z Androidem w celu rsync muzyki (lub innych rzeczy)?


Zalecam edycję tego, aby dokładnie wyjaśnić, jakie działanie spowodowało ten komunikat o błędzie. (Na przykład, jeśli jest to wynik polecenia, możesz dołączyć pełne polecenie.)
— Eliah Kagan,

1
może interesujące: Syncopoli
— DJCrashdummy

@DJCrashdummy, jeśli napiszesz komentarz jako odpowiedź, podniosę głos.
— guettli

@ guettli napisałem to tylko jako komentarz, ponieważ Syncopoli jest tylko klientem rsync (na razie).
— DJCrashdummy

Odpowiedzi:


50

Właściwie używając rsync przez MTP / usb

To łatwiejsze niż wszyscy mówią, po pierwsze zauważ, że kiedy GVFS montuje MTP, będzie on dostępny pod. Możesz to wymusić, otwierając telefon w graficznej przeglądarce plików (thunar / nautilus / etc)

/run/user/$UID/gvfs

idź tam. Zakładając, że masz jedno urządzenie mtp, powinno to działać:

$ cd /run/user/$UID/gvfs/mtp*

Znajdź, gdzie chcesz przesłać pliki, a następnie zsynchronizuj je z nimi

$ cd SanDisk\ SD\ card/Movies/

$ pwd # prints "/run/user/1000/gvfs/mtp:host=%5Busb%3A003%2C096%5D/SanDisk SD card/Movies"

$ rsync --verbose --progress --omit-dir-times --no-perms --recursive --inplace ~/Videos/ ./

Opcje Rsync

  • --inplace: Zdecydowanie sugeruję użycie, --inplacebez którego mtp może chcieć skopiować nowy plik, a następnie zmienić jego nazwę na stary. Może to skutkować dwukrotnym skopiowaniem pliku na kartę SD: raz w celu przesłania mtp na kartę SD, a innym razem, ponieważ sterownik MTP może nie obsługiwać (mv), może (cp / rm) pod maską być bezpieczny .
  • czytaj man rsync dla opisu --verbose, --progress, --recursiveale są całkiem wymaga dokumentowania.
  • --omit-dir-times --no-perms są wymagane, ponieważ mtp tego nie obsługuje.

3
Dodaję następujące opcje --omit-dir-times --no-perms --ignore-existing. Rsync nie ustawia znaczników czasu katalogu przez MTP. Jestem prawie pewien, że „brak uprawnień” jest domyślny, ale lubię to określać. Ignorowanie istniejących plików pozwala na wybranie tam, gdzie zostało przerwane.
— Stephen Ostermiller

4
Dlaczego --ignore-existing? To po prostu traci nadmiarowość. Zawsze możesz --size-onlyzmniejszyć synchronizację do listy katalogów, a nie sum kontrolnych. Dodam --omit-dir-timesi, --no-permsponieważ to brzmi użytecznie, i wydaje mi się, że pamiętam błąd na końcu na ten temat.
— Evan Carroll,

Rsync ma problemy z ustawieniem dla mnie znaczników czasu przez MTP, więc bez --ignore-existingpróby synchronizacji wszystkich plików. Podoba mi się twoja --size-onlysugestia. Spróbuję zamiast tego następnym razem.
— Stephen Ostermiller

3
Używam również wstawić ukośnik na miejscu docelowym, więc nie muszę używać gwiazdki na źródle:~/Videos/ ./
— Stephen Ostermiller

Musiałem także dodać „--delete-after”, aby usunąć pliki, które już usunąłem z folderu muzycznego na komputerze. Zatem pełne polecenie to: rsync --verbose --progress --omit-dir-times --no-perms --recursive --inplace --ignore-istniejący --delete-after / home / user / MUSIC /.
— happyskeptic

39

Korzystanie z sshelper

Znalazłem to rozwiązanie:

  • Zainstaluj sshelper na urządzeniu (nie wymaga rootowania , dostępne z Google Play Market)
  • W mojej sieci WLAN urządzenie nazywa się „android”. Ale możesz użyć adresu IP, jeśli nie możesz nadać urządzeniu nazwy hosta.

Edytuj lokalny ssh-config, aby zmienić domyślny port dla hosta „android”

.ssh/config
host android
    Port 2222
  • Uruchom sshelper na urządzeniu.
  • Podłącz urządzenie z Androidem do sieci WLAN.

rsync -rvlc Muzyka Android: SDCardLink /

Aktualizacja I preferują -rvlcdo -aponieważ można uzyskać wiele ostrzeżeń od ustawiania uprawnień oraz znaczniki czasu nie działa. Ta opcja -cznacznie przyspiesza drugą synchronizację.

I preferują -rvl --size-onlydo -aponieważ można uzyskać wiele ostrzeżeń od ustawiania uprawnień oraz znaczniki czasu nie działa. Ta opcja --size-onlyznacznie przyspiesza drugą synchronizację.

Niestety aplikacje muzyczne potrzebują trochę czasu, aby zobaczyć nowe pliki. Ponowne uruchomienie urządzenia pomaga.


13
Alternatywny sposób użycia rsync z SSHelper bez konieczności modyfikacji .ssh / config: rsync -avz -e 'ssh -p 2222' Music android:SDCardLink/( stackoverflow.com/a/4630407/399105 )
— bmaupin 20.01.2014

1
@ guettli jaka opcja sumy kontrolnej -c do synchronizacji plików muzycznych? może to znacznie spowolnić
— EdiD

5
@guettli z rsync man: -c, --checksum. Bez tej opcji rsync używa „szybkiej kontroli”, która (domyślnie) sprawdza, czy rozmiar każdego pliku i czas ostatniej modyfikacji są zgodne między nadawcą a odbiorcą. Ta opcja zmienia to, aby porównać 128-bitową sumę kontrolną dla każdego pliku o dopasowanym rozmiarze. Generowanie sumy kontrolnej oznacza, że ​​obie strony spędzą dużo dysku we / wy na odczyt wszystkich danych w plikach w transferze, co może znacznie spowolnić.
— EdiD

4
@ guettli Myślę, że --size-onlybyłoby to najszybsze rozwiązanie. Nie jest to jednak tak bezpieczne, jak-c
— niels,

2
Użyłem modemu USB i uzyskałem znacznie szybsze transfery. Następujące polecenie działało dla mnie po uruchomieniu SSHelp i pokazuje IP, 192.168.1.5które mogą być inne za każdym razem:rsync -avzhP --inplace --info=progress2 -e 'ssh -p 2222' 192.168.1.5:/storage/emulated/0/DCIM/Camera/ /home/username/path/to/pics/
— Organiczny Uzależniony

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.