Gerätedetails
Moto X Play - Android 6.0.1, gerootet (systemloses Root)
Samsung 64 GB externe SD-Karte
San Disk 128 GB USB - wurde mit FAT 32 geliefert, das auf exFAT umformatiert wurde, da ich Ordner > 4 GB auf externer SD habe
Anwendungsfall
Synchronisieren Sie den gesamten Inhalt von ext SD auf USB (Synchronisation in eine Richtung ohne Löschen des Inhalts der SD-Karte) nach wöchentlichem Zeitplan / bei Bedarf als inkrementelles Backup ohne Verwendung eines PCs (ich habe einen, aber Gründe, ihn nicht zu verwenden, sind nicht relevant)
Andere Details
USB-Laufwerk vom Gerät erkannt, korrekt verbunden mit Standard-OTG ( Einstellungen → Speicher & USB )
Busbox installiert. Es wurde mit ROM Toolbox Pro gebündelt. Ich habe es nicht direkt verwendet. Wenn eine andere Busy-Box installiert werden soll, ist das in Ordnung, solange es nicht zu Konflikten kommt
Befestigungspunkte wie unten
Dinge ausprobiert
Erfolglose App-Suche – Ich konnte keine App finden, die dies kann ( Folder Sync behauptet, aber es kann USB nicht sehen)
Nach Alternativen googeln
Die MacroDroid-Automatisierung schlägt fehl, da die App USB nicht sehen kann (im App-Forum angesprochen)
Frage: Wie kann ich das tun? Ich bin offen für alle Mittel
Bitte beachten Sie, dass ich beabsichtige, ein Kopfgeld von 100 zu platzieren . Jede Antwort, die die Anforderungen erfüllt, bevor ich ein Kopfgeld poste, wird auf ähnliche Weise vergeben (ich kann das Posten des Kopfgelds verzögern, um sicherzustellen, dass ich eine Lösung bekomme).
Bitte vermeiden Sie Lösungen, die
nicht getestet - es sollte auf Ihrem Gerät und Ihrer USB-Konfiguration getestet worden sein, um es glaubwürdig zu machen
Beteiligen Sie den PC, laden Sie ihn in die Cloud hoch, übertragen Sie ihn auf einen Remote-Server usw
Verweise auf Behauptungen aus zweifelhaften Quellen, die nicht verifiziert werden können
Einbeziehung der Verwendung von Dateimanagern (ich hatte gemischte Ergebnisse mit diesen, aber das ist eine andere Frage)
Das Ziel des Obigen ist nicht, von Lösungen abzuhalten, sondern von frivolen Versuchen abzuhalten. Wenn Klarheit benötigt wird, fragen Sie bitte
Ich habe diesen Bedarf im Chat besprochen, und einige potenzielle Lösungskandidaten waren BusyBox rsync
und Tasker . Ich weiß nichts über diese Mittel, also geben Sie bitte vollständige Details an . Da es sich (fast) um eine Prämienfrage handelt, erwarte ich, dass ich sie sofort erfolgreich implementieren kann, ohne nach Klärungen zu suchen.
(Da es sich um ein gerootetes Gerät mit systemlosem Root handelt, sind Lösungen mit Root in Ordnung. Wenn das Betriebssystem jedoch auf irgendeine Weise geändert werden soll, markieren Sie dies bitte, da systemless dies nicht zulässt, obwohl es eine Problemumgehung gibt.)
Ich bin zeitlich knapp bemessen und muss das so schnell wie möglich zum Laufen bringen
Da wir die Lösung, die Sie jetzt im Chat verwenden, herausgefunden haben, sollte diese Antwort "wird getestet", "ohne PC oder Dateimanager" und "auf verifizierte Quellen angewiesen" entsprechen. Obwohl in der Zwischenzeit eine andere rsync
Antwort gepostet wurde, haben Sie mich gebeten, auch unsere Lösung vorzustellen – also los geht’s:
Dazu rsync
kann der Befehl verwendet werden. Unter Berücksichtigung aller Ihrer Anforderungen (einschließlich der später im Chat erwähnten) würde die Befehlszeile wie folgt aussehen:
rsync -a --delete /mnt/sdcard /mnt/usb
Erläuterungen zum Befehl:
rsync
offensichtlich ist die ausführbare Datei/der Befehl-a
steht für "archivieren", dh alle Attribute behalten. Dies umfasst das rekursive Kopieren von Inhalten (Verzeichnisse, Unterverzeichnisse, Dateien), das Beibehalten von Dateistempeln und Eigentumsrechten (letzteres erfordert normalerweise root), das Beibehalten von Berechtigungen usw. Weitere Informationen finden Sie unter Was ist der Archivmodus in rsync? auf unserer Schwesterseite.--delete
sorgt dafür, Dateien auf dem Ziel (hier: ) zu entfernen, die auf der Quelle (hier: ) /mnt/usb
nicht/mehr vorhanden sind/mnt/sdcard
/mnt/sdcard
) und das Ziel, in das kopiert werden soll ( /mnt/usb
). Beachten Sie, dass wir beide als Verzeichnisse angegeben haben, sodass alle Inhalte, auch versteckte Dateien, ebenfalls enthalten sein sollten (letzteres wäre nicht, wenn wir eine Maske wie verwendet hätten /mnt/sdcard/*
). /mnt/sdcard
Symlink wie im Beispiel), oder es könnte einfach den Symlink kopieren und denken, das ist alles, was Sie wollten :)Vielleicht möchten Sie das Obige zuerst an einer kleinen Quelle ausprobieren, um zu sehen, wie es funktioniert.
Nun, da das „Wie“ abgedeckt ist, bleibt die Frage: Wo ist rsync
? Es ist normalerweise nicht auf dem Gerät vorinstalliert, und die meisten Busyboxes scheinen es auch nicht zu enthalten. Es gab einmal eine App im Playstore namens rsync backup for Android , aber sie ist nicht mehr da. Wie dieses Wikirsync
zeigt, können Sie die Binärdatei direkt von hier herunterladen ¹, dann auf Ihr Android-Gerät übertragen und installieren. Angenommen, Sie haben die Binärdatei nach geschoben /mnt/sdcard
:
su
mount -o remount,rw /system
cd /system/xbin
cp /mnt/sdcard/rsync .
chmod 755 /system/xbin/rsync
chown root.shell /system/xbin/rsync
mount -o remount,ro /system
Das obige sollte entweder in einer Terminal-App oder über erfolgen adb shell
.
Das erledigt und erfolgreich von einem Shell-Prompt aus getestet, bleibt die Frage der Automatisierung . Ich weiß, dass der Tasker Shell-Befehle als root ausführen kann (früher ging das einfach, indem man ihnen einfach ein Ausrufezeichen voranstellte, heute gibt es vielleicht sogar eine Checkbox dafür – ich habe das eine Weile nicht überprüft), aber Ihr Macrodroid könnte das auch liefern. Alternativ können Sie es auf Unix/Linux-Weise tun und Cron verwenden, das von Busybox bereitgestellt wird; Einzelheiten finden Sie unter: Wie verwende ich crontab in Android?
Siehe auch:
¹ Natürlich können Sie auch versuchen, die Original-App auf Seiten wie APKMirror oder ApkPure zu finden, oder die App von hier herunterladen – aber dann mussten Sie diese App zuerst installieren und anschließend die Binärdatei aus ihrem Datenverzeichnis holen /data/data/eu.kowalczuk.rsync4android/files/rsync
– was ich finde a etwas unpraktisch ;)
rsync
die Pro-Version davon (ich habe dem Entwickler eine E-Mail geschickt und ihn gebeten, sie hinzuzufügen), also bleibt kein Wahl, aber andere Mittel (übrigens konnte die App auf den genannten Websites nicht finden) 2. Automatisierung der Ausführung von Befehlen bei Bedarf / Zeitplan erfolgreich. Anleitung hierrsync
auch unter Windows hinzuzufügen, wie Sie es für Linux getan haben - ich habe Referenzen gesehen. Wird später mehr hinzufügen, wenn es den Lesern helfen kannrsync
und mit Izzy zu teilen, und er nahm das in seine Antwort auf. In Fußnoten. Es kann gelernt werden, aber zu einem späteren Zeitpunkt, wenn es die Zeit erlaubt.Seien Sie vorgewarnt. Ich werde Ihnen keine vollständigen Details liefern, vor allem, weil das, wonach Sie fragen, so unspezifisch und widerlich ist, dass die Prämie für diese Frage es nicht wert ist, die Zeit zu verbringen, um eine Lösung für Sie zu testen, zu der ich keine Möglichkeit habe Garantie funktioniert auf Ihrem Gerät. Sie können meinen Rat entweder ignorieren und leiden oder Schwierigkeiten durch kritisches Denken und Google erklären. Wenn Ihnen diese Optionen nicht gefallen, können Sie jederzeit ein iPhone kaufen. Sie sind für Leute gedacht, die etwas wollen, das "einfach funktioniert". Wenn Sie keine Zeit haben, eine Lösung zu recherchieren oder zu optimieren, die für Sie funktioniert, ist Android möglicherweise nicht das Richtige für Sie.
Es gibt eine Vielzahl von Möglichkeiten, das zu erreichen, was Sie zu tun versuchen. Die einfachste und zuverlässigste Methode ist wohl die Verwendung von Software, die standardmäßig auf den meisten Android-Geräten zu finden ist, worauf ich mich konzentrieren werde. Da Sie versuchen, etwas regelmäßig auszuführen, würde ich sagen, dass die beste Lösung darin besteht, cron
. In diesem Sinne werfen Sie einen Blick auf diesen StackOverflow -Thread, da er spezifisch für die Ausführung auf Android ist. Damit wir alle auf derselben Seite sind, ist cron ein Job-Scheduler, der auf den meisten (allen?) Unix-ähnlichen Betriebssystemen verfügbar ist, einschließlich Android. Da Sie nicht im Detail darauf eingegangen sind, wann genau dieser Job wöchentlich gestartet werden soll, überlasse ich es Ihnen, die crontab zu konfigurieren (die im Internet gut dokumentiert ist undist nicht schwer ).
Dies kümmert sich um die Planung von allem, aber der nächste Schritt besteht darin, herauszufinden, wie Sie alles sichern möchten, was eine sehr wichtige Frage ist, bei der Sie sich schmerzlich unklar waren. Möchten Sie einfach neue/geänderte Daten von der externen SD-Karte auf das Flash-Laufwerk kopieren oder möchten Sie vollständige Backups der SD-Karte, die nach Datum auf dem Flash-Laufwerk gespeichert sind? Dies sind Fragen, die Sie selbst klären müssen, bevor Sie das Internet um Rat fragen.
Ohne zu wissen, was genau Sie hier erreichen wollen, gehe ich davon aus, dass das erste Szenario am besten funktioniert. Da Sie Daten auf Dateiebene (im Gegensatz zu Blockebene) kopieren, rsync
ist dies hier wahrscheinlich die beste Wahl. Es ist sehr vielseitig und sollte sofort einsatzbereit sein, ohne konfiguriert werden zu müssen. Sie sollten es bereits verfügbar haben, und wenn Sie es nicht haben, können Sie es einfach über Busybox erhalten.
Unter der Annahme, dass die Einhängepunkte gleich bleiben, wäre der Befehl, den ich verwenden würde, um dies zu erreichen: rsync -rlpt /mnt/media_rw/0000-0000 /mnt/media_rw/E82C-B290
. Der Einfachheit halber habe ich eine Einführung in die von mir verwendeten Flaggen unten eingefügt:
-r, --rekursive Rekursion in Verzeichnisse
-l, --links kopiert Symlinks als Symlinks
-p, --perms behält Berechtigungen bei
-t, --times behält Änderungszeiten bei
Es gibt auch das -a
Flag (kurz für archive mode ), aber es macht in dieser Situation eine Menge anderen unnötigen Mist, wie das Synchronisieren von uid/gid. In den meisten Backup-Szenarien wäre die Verwendung -a
sinnvoll, da Sie den Besitz behalten möchten, wenn Sie aus Ihren Backups wiederherstellen müssen. Externer SD-Speicher verwendet jedoch FAT für sein Dateisystem, das keine Unix-Dateiberechtigungen unterstützt. Dateien auf Ihrer externen SD-Karte haben zwar einen Eigentümer-/Gruppensatz, sie werden jedoch statisch vom Betriebssystem festgelegt. Wenn Sie versuchen, sie zu ändern, bin ich mir ziemlich sicher, dass Sie einen Fehler erhalten oder es stillschweigend im Hintergrund fehlschlägt. Die von mir verwendeten Flags machen diesen Prozess viel effizienter, aber wenn Sie aus irgendeinem Grund möchten, dass rsync all diese zusätzlichen Dinge synchronisiert, verwenden Sie stattdessen das Archivmodus-Flag.
Jetzt, wo wir den Befehl haben, den Sie ausführen müssen, müssen Sie nur noch crontab konfigurieren und diesen rsync
Befehl ausführen lassen. Dies ist keine sehr elegante Lösung, aber es wird funktionieren. Wenn Sie eine Art Protokollierung einrichten möchten ( Mike Rubel hat viel Arbeit geleistet, von der Sie sich inspirieren lassen könnten ), könnten Sie ein Shell-Skript schreiben, es in den internen Speicher Ihres Telefons legen und stattdessen das Shell-Skript von cron ausführen lassen der rsync
Befehl.
Um alles außerhalb von Cron manuell zu sichern, können Sie diesen rsync-Befehl mit ConnectBot oder einer anderen App ausführen, die Ihnen Shell-Zugriff gewährt. Wenn Sie dies häufig tun möchten, ist es möglicherweise schneller, den Befehl in eine Datei (z. B. backupsd
) zu chmod +x
schreiben und ihn in einen Ordner zu stecken, der sich auch im Systempfad befindet (z. B. /system/bin). Auf diese Weise können Sie backupsd
anstelle von eingeben rsync -rlpt /mnt/media_rw/0000-0000 /mnt/media_rw/E82C-B290
.
-rlpt
Verwenden Sie anstelle von einfach -a
(Archivmodus), das impliziert alle anderen Schalter :)-a
sofort nach der Zusammenfassung der von mir verwendeten Flags verwendet habe, und es dem OP überlassen, zu entscheiden. Offensichtlich denken große Geister gleich.
Dan Brown
Dan Brown