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

Ich habe eine Reihe von Fotos auf meinem Samsung Galaxy Tab mit 3.2, die ich über USB auf meinen Hauptcomputer mit Linux kopieren möchte, damit ich sie mit GIMP und anderen Elektrowerkzeugen bearbeiten kann. Obwohl dies wie eine einfache und übliche Sache erscheint, habe ich nach stundenlangem Googeln und Experimentieren keine Möglichkeit gefunden, dies zu tun.

Einige Antworten und Artikel, die bereits da draußen sind, gehen von der Existenz einer SD-Karte aus, die ich nicht habe (AFIK), erwähnen Verzeichnisse mit dem Namen / dcim oder / emmc (sp?), beinhalten nur Windows-Software wie Kies oder beziehen sich auf einige spezialisierte Problem hier nicht relevant.

Ich dachte, ich könnte mit adb im Dateisystem des Galaxy Tab herumstöbern, fand aber keinen Platz für .jpg oder andere Bilddateien, von denen ich mindestens 30 oder so haben sollte. Wenn ich den Pfad wüsste, könnte ich einfach einen Adb-Pull durchführen, um meine Fotos zu erhalten.

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

Nur um das klarzustellen, meine Fotos existieren auf dem Tablet. Als normaler Endbenutzer kann ich sie alle in der Galerie sehen. Ich habe das richtige USB-Kabel und adb läuft gut.

Antworten (4)

Ich nehme an, Sie haben ein Galaxy Tab mit Honeycomb und keinen SD-Kartensteckplatz, aber 16/32 GB internen Speicher. In Honeycomb wird anstelle des USB-Massenspeichers der MTP-Modus (Windows Media Transfer Protocol) verwendet. Deshalb funktioniert es bei dir vielleicht nicht.

Lesen Sie zuerst hier, 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 über ADB meiner Meinung nach auf Galeriedateien in /mnt/sdcard/. Der sdcardOrdner sollte auch dann vorhanden sein, wenn Sie keinen SD-Kartensteckplatz haben. Kamerafotos wären im /DCIMOrdner.

Vollständige Schritte wären (falls jemand braucht) -

adb shell
cd /mnt/sdcard/DCIM/

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

Es gibt ein /mnt, aber überhaupt nichts darin. Für mich ist dieses mythische SD-Kartenverzeichnis so real wie Einhörner!
Vielen Dank für den Hinweis auf eine schnelle Möglichkeit, den Geräteinhalt zu durchsuchen. :-) Es war ein schneller Adb-Pull später, um zu bekommen, was ich brauchte! Vielen Dank!

Ich habe ein kleines Skript geschrieben, um dies für mich zu tun, das Dateien nach dem Ziehen 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 $dirdarin angegebene Verzeichnis ausgeführt wird $DIRSund beim ersten Fehler endet.

Dadurch breakwird die Verarbeitung im Fehlerfall verhindert, sodass das Skript beim ersten Fehler beendet wird.

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

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

Es tut, was auf der Dose steht – listet alle JPEG-Dateien auf, die sich unter befinden $dir. Dadurch wird 2>/dev/nulldie No such file or directoryFehlermeldung ausgeblendet, die sonst angezeigt würde, wenn solche Dateien nicht vorhanden sind.

Die Ausgabe von lswird weitergeleitet an - die als Platzhalter xargsgesetzten Argumente , als Trennzeichen und verarbeitet Dateien einzeln. Die Befehlszeile, die zum Verarbeiten jeder Datei verwendet wird, folgt:{}\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' -- {}

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

Der erste Befehl lädt die Datei herunter:

adb pull -a "$1"

Wenn das gelingt, entfernt der zweite Befehl die Datei vom Android-Gerät:

adb shell rm "\"$1\""

Das zusätzliche Anführungszeichen ist notwendig, damit Dateinamen, die Leerzeichen enthalten, richtig in die adb shell. Wenn dieser Befehl erfolgreich ist, teilt der letzte Befehl dem Gerät mit, dass die Datei verschwunden ist:

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

Erneut wird eine Quotierung 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 255für den Fall, dass einer der adbBefehle fehlschlägt. Dies hat eine besondere Bedeutung für xargsund bewirkt, dass es beendet wird, ohne weitere Dateien zu verarbeiten.

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

Wenn Sie Ihre Dateien nicht einfach mit ADB auf /mnt/sdcard finden können (was, wie Sameer erwähnt, dort sein sollte, auch wenn Sie keine externe SD-Karte haben), finden Sie 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-Kennung für das Gerät hinzufügen .udev

Wirklich? Ich habe mein Gerät über USB angeschlossen und "es hat gerade funktioniert" (TM). Ich verwende Ubuntu 10.4
Ich habe selbst noch nie eine Verbindung gesehen, ohne das manuelle Hinzufügen durchzuführen. War es ein Tablet? Es könnte sich über USB anders identifizieren als ein Telefon, oder der Hersteller könnte es optimiert haben.
Ja, ein Asus TF-101 mit 3.2 und 4.0.x. Aber mein Telefon (LG Optimus One) verbindet sich auch, solange USB-Debugging in den Einstellungen aktiviert ist.
Jetzt, wo ich darüber nachdenke, hat die Acer Aconia nicht "einfach funktioniert", also kann es herstellerabhängig sein.

Ich glaube nicht, dass das Dateisystem auf Android-Tabs 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 es auf dem Acer Iconia meines Vaters /sdcard (IIRC) ist.

Nach einem schnellen Google scheint es, dass Galaxy Tab-Fotos in /sdcard/DCIM/Camera/ oder /Data/DCIM/Camera/ für den internen Speicher oder vielleicht /sdcard/external_sd/DCIM/Camera/ gespeichert werden, wenn die 'externe' SD-Karte verwendet wird .

Ich würde mit einem Dateimanager auf Ihrem Gerät (oder ADB) nach diesen drei Ordnern suchen und sie dann mit ADB wie beschrieben abrufen, sobald Sie Ihre Fotos gefunden haben.