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.)
@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
--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.
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 /
AktualizacjaI 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.
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
3
Kopię zapasową rsync dla Androida można skonfigurować do synchronizacji w odwrotnej kolejności, czyli z hosta Linux na urządzenie z Androidem.
Za pomocą LlamaLab Automate można skonfigurować urządzenie z Androidem tak, aby automatycznie rsync działało w określonych warunkach, np .:
o 5 rano
gdy telefon jest podłączony do określonego Wi-Fi, oraz
Odpowiedzi:
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)
idź tam. Zakładając, że masz jedno urządzenie mtp, powinno to działać:
Znajdź, gdzie chcesz przesłać pliki, a następnie zsynchronizuj je z nimi
Opcje Rsync
--inplace
: Zdecydowanie sugeruję użycie,--inplace
bez 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 .--verbose
,--progress
,--recursive
ale są całkiem wymaga dokumentowania.--omit-dir-times
--no-perms
są wymagane, ponieważ mtp tego nie obsługuje.źródło
--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.--ignore-existing
? To po prostu traci nadmiarowość. Zawsze możesz--size-only
zmniejszyć synchronizację do listy katalogów, a nie sum kontrolnych. Dodam--omit-dir-times
i,--no-perms
ponieważ to brzmi użytecznie, i wydaje mi się, że pamiętam błąd na końcu na ten temat.--ignore-existing
próby synchronizacji wszystkich plików. Podoba mi się twoja--size-only
sugestia. Spróbuję zamiast tego następnym razem.~/Videos/ ./
Korzystanie z sshelper
Znalazłem to rozwiązanie:
Edytuj lokalny ssh-config, aby zmienić domyślny port dla hosta „android”
Aktualizacja
I preferują-rvlc
do-a
ponieważ można uzyskać wiele ostrzeżeń od ustawiania uprawnień oraz znaczniki czasu nie działa. Ta opcja-c
znacznie przyspiesza drugą synchronizację.I preferują
-rvl --size-only
do-a
ponieważ można uzyskać wiele ostrzeżeń od ustawiania uprawnień oraz znaczniki czasu nie działa. Ta opcja--size-only
znacznie przyspiesza drugą synchronizację.Niestety aplikacje muzyczne potrzebują trochę czasu, aby zobaczyć nowe pliki. Ponowne uruchomienie urządzenia pomaga.
źródło
rsync -avz -e 'ssh -p 2222' Music android:SDCardLink/
( stackoverflow.com/a/4630407/399105 )--size-only
byłoby to najszybsze rozwiązanie. Nie jest to jednak tak bezpieczne, jak-c
192.168.1.5
któ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/
Kopię zapasową rsync dla Androida można skonfigurować do synchronizacji w odwrotnej kolejności, czyli z hosta Linux na urządzenie z Androidem.
Za pomocą LlamaLab Automate można skonfigurować urządzenie z Androidem tak, aby automatycznie rsync działało w określonych warunkach, np .:
źródło