tl;dr
rsync
and zu verwendengvfs
Kann ich irgendetwas tun?
Ganze Geschichte
Ich möchte Daten von meinem Android-basierten Telefon (derzeit 5.1.1) sichern. Ich möchte keine WiFi-basierten instabilen und unsicheren Hackerlösungen mit SSH und Server hier und Client dort verwenden (Sie nennen es - eigentlich hat Samsungs sehr unzuverlässige kies
Software mich so denken lassen).
Inzwischen habe ich ein aktuelles Linux Mint (18.2) verwendet, mit dem ich versucht habe, Daten vom Telefon auszulesen, rsync
und der gemappte Speicher, gvfs
der kläglich gescheitert ist (Berechtigungsprobleme, instabile Verbindung).
Ich möchte skripten, welche Verzeichnisse ich sichere und diesen Prozess so weit wie möglich automatisieren. Kann ich Android als eine Art virtuelles Gerät fungieren lassen, Windows/Linux
das eine Art dateibasierten Zugriff ermöglicht? Oder ein per USB-Kabel angeschlossener Web-DAV-Server? Bitte auch keine kostenlosen Cloud-Lösungen (Google, OneDrive, Dropbox)!
Ich danke Ihnen für Ihre Hilfe.
Wie meistens: Fehler in Schicht 8 des OSI-Modells. Hier ist, was ich getan habe und was ich hätte tun sollen:
Was ich getan habe
Ich habe mein externes Ziellaufwerk mit gemountet sudo
(bisher nichts falsch) und root
habe daher nur Schreibberechtigungen, rsync
konnte nichts tun (was schließlich Sinn macht) - selbst wenn es mit ausgeführt wird sudo
. Wo genau der Fehler war, bin ich mir nicht ganz sicher, aber konzentrieren wir uns darauf
Was ich hätte tun sollen
chown
es für Ihren designierten Benutzer (oder Gruppe oder beides)rsync
Ich habe ein kleines Skript erstellt, um das Finden des gvfs
Pfads zu automatisieren und rsync auf ein externes Laufwerk zu synchronisieren:
#!/bin/bash
PHONE_VENDOR=0000 # your phone vendor here!
USERID=1 # your user ID here - possibly `id -u`
PHONE_BUS=\`echo $(lsusb -d ${PHONE_VENDOR}:) | cut -d' ' -f 2\`
PHONE_BUS=${PHONE_BUS}%2C
PHONE_BUS=${PHONE_BUS}\`echo $(lsusb -d ${PHONE_VENDOR}:) | cut -d' ' -f 4 | cut -b 1-3` #extract vendor ID from lsusb
SOURCEBASE=/run/${USERID}/gvfs/mtp\:host\=%5Busb%3A${PHONE_BUS}%5D
TARGETBASE= # your target base path here
rsync -a --progress ${SOURCEBASE} ${TARGETBASE} # your rsync commands here
Ich weiß nicht, ob sich etwas ändert (oder dieses Skript funktioniert), wenn ein fstab
Eintrag angewendet und dann über die Shell gemountet wird, ohne sich auf die GUI-Tools zu verlassen.
Dies funktioniert für mich und bietet eine nette Möglichkeit, Inhalte von Android-Telefonen zu sichern, ohne ganze SD-Karten oder interne Speicherplätze zu kopieren.
UPDATE - Erster richtiger Versuch
Während der Ausführung rsync
begannen I/O-Fehler zu werfen, wahrscheinlich weil der Prozess im Allgemeinen sehr lange dauerte (ungefähr 50 GB zum Synchronisieren). Ich fange jetzt neu an.
Es kann eine gute Idee sein, eine Grundlage zu schaffen, indem Sie zunächst alle Dateien manuell kopieren und alle weiteren Synchronisierungsvorgänge mit rsync
.
UPDATE - Zweiter Versuch
Es kommt also vor, dass diese Menge für einen Versuch zu viel ist. Vielleicht ist das auch mein beschissenes Smartphone. Im Allgemeinen funktioniert es und nach dem ersten anfänglichen Laden wird es in Ordnung sein, denke ich.
Bienen
Bienen
Bienen
bash.d