Wie kopiere ich alle Fotos in der Galerie auf einen Linux-Desktop?

7

Auf meinem Samsung Galaxy Tab mit Version 3.2 befinden sich einige Fotos, die ich über USB auf meinen Hauptcomputer unter Linux kopieren möchte, damit ich sie mit GIMP und anderen Elektrowerkzeugen bearbeiten kann. Obwohl dies eine einfache und übliche Sache zu sein scheint, habe ich nach stundenlangem Googeln und Experimentieren keine Möglichkeit gefunden, dies zu tun.

Einige Antworten und Artikel, die es bereits gibt, gehen davon aus, dass es eine SD-Karte gibt, die ich nicht habe (AFIK), Verzeichnisse mit dem Namen / dcim oder / emmc (sp?) Erwähnen, nur Windows-Software wie Kies verwenden oder sich auf eine spezialisierte Software beziehen Problem hier nicht relevant.

Ich dachte, ich könnte mit adb im Dateisystem des Galaxy Tab stöbern, fand aber keinen Platz für JPG- oder andere Bilddateien, von denen ich mindestens 30 oder so haben sollte. Wenn ich den Weg kennen würde, könnte ich einfach einen ADB-Pull machen, um meine Fotos zu bekommen.

Wenn es möglich ist, bevorzuge ich adb pull, da es automatisiert werden kann, aber ich frage mich auch, wie normale Leute, die Nontechies, ihre Fotos von ihren Tablets bekommen. Ich habe über MTP gelesen und festgestellt, dass die Vorgehensweise des USB-Massenspeichergeräts mit dem Galaxy Tab (oder etwas Samsung?) Nicht funktioniert.

Um ganz klar zu sein, meine Fotos existieren auf dem Tablet. Ich kann sie alle in der Galerie als regulären Endbenutzer sehen. Ich habe das richtige USB-Kabel und ADB läuft gut.

DarenW
quelle

Antworten:

6

Ich gehe davon aus, dass Sie Galaxy Tab mit Honeycomb haben und keinen SD-Kartensteckplatz haben, sondern 16/32 GB internen Speicher. In Honeycomb wird anstelle des USB-Massenspeichers der MTP-Modus (Windows Media Transfer Protocol) verwendet. Deshalb funktioniert es vielleicht nicht für Sie.

Lesen Sie hier zuerst, was MTP ist und warum es jetzt von OEMs verwendet wird. MTP und ICS . Auch diese Frage sollte nützlich sein - Android Stack Exchange - Kann ich den MTP-Modus deaktivieren und nur eine normale USB-Verbindung haben?

Haben Sie versucht, die MTP-Unterstützung für Linux zu aktivieren? Dies sind die Schritte für eine Ubuntu-Distribution - Anleitung zum Einrichten von MTP .

Alternativ können Sie meiner Meinung nach über ADB auf Galeriedateien in zugreifen /mnt/sdcard/. Der sdcardOrdner sollte auch dann vorhanden sein, wenn Sie keinen SD-Kartensteckplatz haben. Kamerafotos würden sich im /DCIMOrdner befinden.

Volle Schritte wären (wenn jemand braucht) -

adb shell
cd /mnt/sdcard/DCIM/

Sie können überprüfen, welche Ordner hier vorhanden sind und ob Ihre Mediendateien hier vorhanden sind oder nicht.

Sameer Sharma
quelle
Es ist ein / mnt, aber überhaupt nichts drin. Für mich ist dieses mythische SD-Kartenverzeichnis so real wie Einhörner!
DarenW
Vielen Dank für den Hinweis auf eine schnelle Möglichkeit, den Geräteinhalt zu durchsuchen. :-) Es war ein kurzer ADB-Zug später, um das zu bekommen, was ich brauchte! Vielen Dank!
Norman H
1

Ich habe dazu ein kleines Skript geschrieben, das Dateien nach dem Abrufen vom Gerät löscht:

#!/bin/sh
cleanup() {
    [[ -n "$dest" ]] && cd "$OLDPWD" && rmdir --ignore-fail-on-non-empty "$dest"
}
trap cleanup EXIT

DIRS=( /storage/emulated/0/DCIM/Camera
       /storage/emulated/0/Pictures/Office\ Lens )
dest=$(mktemp -d -p .) && cd $dest
echo output directory: $(pwd)
for dir in "${DIRS[@]}"
do
    echo downloading from $dir
    adb shell ls "'$dir'/*.jpg" 2>/dev/null | xargs -I{} -n 1 -d '\n' sh -c 'adb pull -a "$1" && adb shell rm "\"$1\"" && adb shell am broadcast -a android.intent.action.MEDIA_SCANNER_SCAN_FILE -d \"file://$1\" || exit 255' -- {} || break
done

Der Hauptprozess ist eine Schleife, die einmal für jedes $dirangegebene Verzeichnis ausgeführt wird und $DIRSbeim ersten Fehler endet.

Die breakVerhindert die Verarbeitung im Fall eines Fehlers , so dass das Script beendet auf dem ersten Fehler.

Die Schleife führt einen zusammengesetzten Befehl für jedes Verzeichnis aus, das in $DIRSals aufgeführt ist $dir. Das erste Stück ist unkompliziert:

ls "'$dir'/*.jpg" 2>/dev/null

Es macht das, was es verspricht - listet alle JPEG-Dateien auf, die sich unter befinden $dir. Das 2>/dev/nullverbirgt die No such file or directoryFehlermeldung, die sonst angezeigt würde, wenn keine solchen Dateien vorhanden wären.

Die Ausgabe von lswird weitergeleitet in xargs- die Argumente, die {}als Platzhalter, \nals Trennzeichen festgelegt sind, und verarbeitet Dateien nacheinander. Die Befehlszeile zur Verarbeitung jeder Datei lautet wie folgt:

sh -c 'adb pull -a "$1" && adb shell rm "\"$1\"" && adb shell am broadcast -a android.intent.action.MEDIA_SCANNER_SCAN_FILE -d \"file://$1\" || exit 255' -- {}

Dies ist selbst ein zusammengesetzter Befehl aus drei adbBefehlen, die von einer shShell ausgeführt werden , die die Datei als Argument ( $1) erhält, das durch ihren {}Platzhalter angegeben wird .

Der erste Befehl lädt die Datei herunter:

adb pull -a "$1"

Wenn dies erfolgreich ist, entfernt der zweite Befehl die Datei vom Android-Gerät:

adb shell rm "\"$1\""

Das zusätzliche Anführungszeichen ist erforderlich, damit Dateinamen, die Leerzeichen enthalten, ordnungsgemäß an das übergeben werden adb shell. Wenn dieser Befehl erfolgreich ist, teilt der letzte Befehl dem Gerät mit, dass die Datei nicht mehr vorhanden ist:

adb shell am broadcast -a android.intent.action.MEDIA_SCANNER_SCAN_FILE -d \"file://$1\"

Es wird erneut ein Angebot beantragt adb shell. Dieser Schritt ist erforderlich, um die in der Galerie- App aufgelisteten Bilder zu aktualisieren (andernfalls werden sie möglicherweise zwischengespeichert und weiterhin angezeigt).

Der zusammengesetzte Befehl endet mit exit 255dem Fall, dass einer der adbBefehle fehlschlägt. Dies hat eine besondere Bedeutung xargsund führt dazu, dass es beendet wird, ohne dass weitere Dateien verarbeitet werden.

Dies ist ein schnelles und schmutziges Skript - es könnte wahrscheinlich verbessert werden, aber hoffentlich ist es hilfreich, wie es ist.

Sternenhimmel
quelle
0

Wenn Sie Ihre Dateien mit ADB auf / mnt / sdcard nicht leicht finden können (wie Sameer erwähnt, sollte dies auch dann der Fall sein, wenn Sie keine externe SD-Karte haben), ist es möglicherweise einfacher, eine lokale Datei zu verwenden Explorer zum Suchen / Verwalten Ihrer Bilder. Bei vielen Distributionen (wie Ubuntu) müssen Sie nach der Installation von ADB manuell eine USB-udev ID für das Gerät hinzufügen .

Logos
quelle
"Ja wirklich?" Ich habe mein Gerät über USB angeschlossen und "es hat gerade funktioniert" (TM). Ich verwende Ubuntu 10.4
CjS
Ich habe noch nie eine Verbindung gesehen, ohne das manuelle Hinzufügen selbst durchgeführt zu haben. War es eine Tablette? Es könnte sich über USB anders identifizieren als ein Telefon, oder der Hersteller hätte es optimieren können.
Logos
Ja, ein Asus TF-101 mit 3.2 und 4.0.x. Mein Telefon (LG Optimus One) stellt jedoch auch eine Verbindung her, solange das USB-Debugging in den Einstellungen aktiviert ist.
CjS
Jetzt, wo ich darüber nachdenke, hat das Acer Aconia nicht "nur funktioniert", so dass es möglicherweise vom Hersteller abhängig ist.
CjS
0

Ich denke nicht, dass das Dateisystem auf Android-Registerkarten universell ist.

Ich habe nicht mit dem Galaxy Tab gespielt, aber auf meinem Asus TF101 befindet sich der interne Speicher unter / mnt / sdcard, während er auf dem Acer Iconia meines Vaters / sdcard (IIRC) ist.

Aus einer schnellen Google- Suche geht hervor, dass Galaxy Tab-Fotos in / sdcard / DCIM / Camera / oder / Data / DCIM / Camera / zur internen Speicherung oder möglicherweise / sdcard / external_sd / DCIM / Camera / gespeichert sind, wenn die 'externe' SD-Karte verwendet wird .

Ich würde diese drei Ordner mithilfe eines Dateimanagers auf Ihrem Gerät (oder ADB) suchen und sie dann mit ADB wie beschrieben abrufen, sobald Sie Ihre Fotos gefunden haben.

CjS
quelle