Verschieben Sie Dateien von Android, konfigurierbare Verzeichnisliste, Befehlszeile

Um auf meinem Android nicht zu knapp zu werden, verschiebe ich oft alle Bilder per USB auf meinen Desktop-Rechner. Ich mache es fast jeden Tag, da ich auch Angst habe, meine Bilder zu verlieren, wenn ich mein Handy fallen lasse.

Problem : Es dauert sehr lange, da verschiedene Android-Apps ihre Bilder in verschiedenen Ordnern ablegen (Stock-Kamera-App, Lieblings-Kamera-App, HDR-Kamera-App, Feinschmecker-Kamera-App sowie alle Messaging-Apps, die empfangene Bilder manchmal in ihrem eigenen Ordner speichern sogar Trennung zwischen Fotos und Videos).

Also suche ich nach einem Tool, das alle Bilder aus all diesen Ordnern verschieben würde.

Anforderungen:

  • Läuft auf aktuellem Linux
  • Kompatibel mit Android 7+
  • Befehlszeile, es sollte die Übertragungen durchführen, ohne zu fragen oder eine Benutzeroberfläche anzuzeigen, oder höchstens eine Desktop-Benachrichtigung, nachdem die Übertragung abgeschlossen ist
  • Open Source und kostenlos
  • Aufgrund eines begrenzten Datentarifs ist eine Internetübertragung keine Option, sie muss über USB erfolgen. Ich verbinde mich jeden Tag über USB, um das Gerät aufzuladen, also stört es mich nicht.

Es könnte mir erlauben, die Pfade zu konfigurieren, von denen Bilder verschoben werden sollen, oder es könnte aus den üblichen Ordnern herunterladen, in denen bekannte Apps ihre Bilder ablegen.

Antworten (2)

Was ist mit einem Shell-Skript, mit adb pulldem die Dateien abgerufen und nach erfolgreicher Übertragung ausgeführt werden adb shell 'rm <filespec>'? Sie können die Standorte einfach als Array zum Begehen einrichten.

Alternativ könnten Sie mit adbfs Ihr Gerät mounten und dann mit seinem Speicher umgehen, als wäre es lokal – so dass Ihnen alle Tools zur Verfügung stehen, um eine solche Aufgabe unter Linux auszuführen, wodurch die Aufgabe weniger fehleranfällig wird. Rohes Skelett:

# folders on your Android device, where they are mounted by adbfs:
declare -a SRCDIRS=(/mnt/android/folder1 /mnt/android/folder2)
# root folder on your Linux machine, where they should go to:
TARGETROOT="/home/nicolas/Pictures"

# Now move them over:
for sdir in $SRCDIRS; do
  for pic in $(ls -l $sdir); do
    mv "$pic" "$TARGETROOT/$(basename $sdir)"
  done
done

Dies sollte Ihre Anforderungen perfekt erfüllen:

  • Läuft unter Linux: Ja. Tatsächlich läuft überall Bash4+.
  • Befehlszeile: Ja.
  • Keine GUI, am besten gar keine Benachrichtigungen: Genau. Wenn Sie Benachrichtigungen wünschen, wäre dies jedoch möglich, indem Sie zB verwenden notify-send.
  • Open Source und kostenlos: Ja, beides.
  • Übertragung über USB: Ja. Könnte bei Bedarf jedoch über WLAN erfolgen, wenn Sie ADB über TCP konfigurieren.
  • Ermöglicht das Konfigurieren von Pfaden: Das ist sogar erforderlich 😁
Ich hatte über adb pull+rm nachgedacht, aber ich mache mir ein bisschen Sorgen um das Löschen von Dateien in Grenzfällen. adbfs hört sich gut an, werde ich ausprobieren!
Ich teile deine Bedenken. Deshalb habe ich adbfs empfohlen und den mvBefehl: source wird nur entfernt, wenn der Kopiervorgang erfolgreich war.
Ein Problem bei der adbfsVorgehensweise scheint zu sein, dass die Medien nicht vom Telefon gelöscht werden (auch nach einem Neustart sind die Bilder noch da). Vielleicht adbfsist schreibgeschützt?
@NicolasRaoul welche Android-Version hast du? Es gab tatsächlich ein Problem mit dem Schreibzugriff auf Android 7+, aber das sollte behoben werden (das Problem ist noch offen, Sie können es also überprüfen). Auf Android 6 (und niedriger) funktioniert es perfekt, lesen und schreiben.

Ich habe ein Tool dafür geschrieben, basierend auf Izzys Antwort:

https://github.com/nicolas-raoul/move-files-from-android

Es basiert auf adbfs, mountet die Android-Geräte und verschiebt dann alle gefundenen Dateien in directories.conf.

Open Source. Ziemlich schnell. Funktioniert mit Ubuntu 2018.04 und 2019.04, wahrscheinlich auch anderen.