Wie rsync auf Android


50

Wie kann ich eine Verbindung zu meinem Android-Gerät herstellen, um Musik (oder andere Dinge) zu synchronisieren?


Ich empfehle, dies zu bearbeiten, um genau zu erklären, welche Aktion diese Fehlermeldung erzeugt hat. (Wenn es sich beispielsweise um die Ausgabe eines Befehls handelt, können Sie den vollständigen Befehl einschließen.)
Eliah Kagan,

1
vielleicht interessant: Syncopoli
DJCrashdummy

@DJCrashdummy Wenn du deinen Kommentar als Antwort schreibst, werde ich darüber abstimmen.
Guettli

@guettli Ich habe dies nur als Kommentar geschrieben, da Syncopoli nur ein Rsync-Client ist (für den Moment ).
DJCrashdummy

Antworten:


50

Eigentlich mit Rsync über MTP / USB

Es ist einfacher, als alle sagen. Beachten Sie zunächst, dass GVFS beim Mounten des MTP-Mount unter verfügbar ist. Sie können dies erzwingen, indem Sie das Telefon in einem grafischen Dateibrowser (thunar / nautilus / etc) öffnen.

/run/user/$UID/gvfs

geh da rein. Vorausgesetzt, Sie haben ein MTP-Gerät, sollte dies funktionieren:

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

Finden Sie, wohin Sie die Dateien auch übertragen möchten, und synchronisieren Sie sie anschließend

$ 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/ ./

Rsync-Optionen

  • --inplace: Ich empfehle dringend die Verwendung, --inplaceohne die mtp die Datei neu kopieren und dann in die alte umbenennen möchte. Das kann dazu führen, dass die Datei zweimal auf die SD-Karte kopiert wird: einmal für die MTP-Übertragung auf die SD-Karte und ein anderes Mal, weil der MTP-Treiber möglicherweise (mv) nicht unterstützt, kann es sicherheitshalber (cp / rm) sein .
  • lese man rsync für eine Beschreibung --verbose, --progress, --recursiveaber sie sind ziemlich selbsterklärend.
  • --omit-dir-times --no-perms werden benötigt, weil mtp das nicht unterstützt.

3
Ich füge die folgenden Optionen hinzu --omit-dir-times --no-perms --ignore-existing. Rsync kann Verzeichnis-Zeitstempel nicht über MTP setzen. Ich bin mir ziemlich sicher, dass "keine Berechtigungen" die Standardeinstellung ist, aber ich möchte es angeben. Das Ignorieren vorhandener Dateien ermöglicht es, dort fortzufahren, wo es aufgehört hat.
Stephen Ostermiller

4
Warum --ignore-existing? Das ist nur Redundanz zu verlieren. Du könntest immer --size-onlydie Synchronisation auf die Verzeichnisliste reduzieren und nicht die Prüfsummen. Ich werde das --omit-dir-timesund hinzufügen, --no-permsweil das nützlich klingt, und ich erinnere mich an einen Fehler am Ende.
Evan Carroll

Rsync hat Probleme, Zeitstempel über MTP richtig für mich einzustellen, also ohne --ignore-existinges zu versuchen, alle Dateien zu synchronisieren. Ich mag deinen --size-onlyVorschlag. Ich werde es beim nächsten Mal versuchen.
Stephen Ostermiller

3
Ich benutze auch den abschließenden Schrägstrich am Ziel, damit ich keinen Stern an der Quelle verwenden muss:~/Videos/ ./
Stephen Ostermiller

Ich musste auch '--delete-after' hinzufügen, um Dateien zu löschen, die ich bereits aus dem Musikordner auf dem Computer entfernt hatte. Der vollständige Befehl lautet also: rsync --verbose --progress --omit-dir-times --no-perms --recursive --inplace --ignore-existing --delete-after / home / user / MUSIC /.
happyskeptic

39

Sshelper verwenden

Ich habe diese Lösung gefunden:

  • Installieren Sie sshelper auf dem Gerät (kein gerootetes Gerät erforderlich, erhältlich bei Google Play Market)
  • In meinem WLAN heißt das Gerät "android". Sie können aber die IP verwenden, wenn Sie dem Gerät keinen Hostnamen geben können.

Bearbeiten Sie die lokale ssh-config, um den Standard-Port für den Host "android" zu ändern.

.ssh/config
host android
    Port 2222
  • Starten Sie sshelper auf dem Gerät.
  • Verbinden Sie das Android-Gerät mit Ihrem WLAN.

rsync -rvlc Musik android: SDCardLink /

Aktualisieren Ich bevorzuge -rvlc, -ada Sie viele Warnungen erhalten, da das Festlegen von Berechtigungen und Zeitstempeln nicht funktioniert. Diese Option -cbeschleunigt die zweite Synchronisierung erheblich.

Ich bevorzuge -rvl --size-only, -ada Sie viele Warnungen erhalten, da das Festlegen von Berechtigungen und Zeitstempeln nicht funktioniert. Diese Option --size-onlybeschleunigt die zweite Synchronisierung erheblich.

Leider dauert es einige Zeit, bis Musik-Apps die neuen Dateien sehen. Ein Neustart des Geräts hilft.


13
Eine alternative Möglichkeit, rsync mit SSHelper zu verwenden, ohne .ssh / config ändern zu müssen: rsync -avz -e 'ssh -p 2222' Music android:SDCardLink/( stackoverflow.com/a/4630407/399105 )
bmaupin

1
@guettli was für -c Prüfsummenoption zum Synchronisieren von Musikdateien? Dies kann sich erheblich verlangsamen
EdiD

5
@guettli von rsync man: -c, --checksum. Ohne diese Option verwendet rsync eine "Schnellüberprüfung", die (standardmäßig) überprüft, ob die Größe und der Zeitpunkt der letzten Änderung der einzelnen Dateien zwischen dem Absender und dem Empfänger übereinstimmen. Diese Option ändert dies, um eine 128-Bit-Prüfsumme für jede Datei zu vergleichen, deren Größe übereinstimmt. Das Generieren der Prüfsumme bedeutet, dass beide Seiten viel Festplatten-E / A für das Lesen aller Daten in den Dateien bei der Übertragung aufwenden, was die Dinge erheblich verlangsamen kann.
EdiD

4
@guettli Ich denke das --size-onlywäre die schnellste Lösung. Allerdings ist es nicht so speichern , wie-c
NIELS

2
Ich habe USB-Tethering verwendet und viel schnellere Übertragungen erhalten. Der folgende Befehl hat bei mir funktioniert, nachdem ich SSHelp ausgeführt habe und die IP- 192.168.1.5Adresse jedes Mal anders angezeigt wird:rsync -avzhP --inplace --info=progress2 -e 'ssh -p 2222' 192.168.1.5:/storage/emulated/0/DCIM/Camera/ /home/username/path/to/pics/
Organic Addict

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.