Ich habe kürzlich ein Nexus 4 gekauft und möchte meine Fotos von meinem vorherigen Gerät darauf übertragen. Mein vorheriges Android-Telefon verwendete den Standard-USB-Massenspeicher, der keine Probleme beim Hin- und Herkopieren verursachte, aber das Nexus 4 verwendet, wie viele andere moderne Android-Telefone, nehme ich an, stattdessen MTP, das die interessante Eigenschaft hat, das Kopieren des Originals zu verweigern Daten/Zeitstempel der Dateien, wobei stattdessen das Datum verwendet wird, an dem die Dateien kopiert werden.
Dies ist offensichtlich ein großer Mist, wenn es um Fotos geht; nicht nur, weil man das ursprüngliche Aufnahmedatum beim Surfen am Telefon nicht überprüfen kann, sondern auch, weil sie völlig unsortiert landen.
Gibt es eine Möglichkeit, Fotos auf ein Jelly Bean Android-Telefon zu übertragen, das keinen USB-Massenspeicher unterstützt, wobei die ursprünglichen Zeitstempel erhalten bleiben?
Dinge, die ich bisher ausprobiert habe:
Keiner von ihnen hat den Zeitstempel beibehalten, und das macht mich wahnsinnig.
(Außerdem bin ich noch nicht gerootet, aber wenn der einzig praktikable Weg Root erfordert, würde ich diese Antwort ebenfalls begrüßen.)
Sie können nicht, dies ist ein aktuelles Berechtigungsproblem ( Fehlerbericht hier ) des /sdcard-Ordners von Android 4.0+, wenn es nicht FAT32 (sondern FUSE) verwendet.
Grund: Es gibt einen Übergang von FAT32 zu einheitlichem Benutzerspeicher für Apps und Mediendaten (unter Verwendung von ext4) auf einem einzigen Dateisystem.
Wir haben es satt zu sehen, dass OEMs viele GB internen Speicher für Musik bereitstellen, während den Benutzern immer noch der Speicherplatz für Apps und Daten ausgeht. Mit diesem Ansatz können wir alles auf einem Volume zusammenführen, was viel besser ist.
-- Dan Morrill, Android-Ingenieur bei Google
Die alten FAT32-Eigenschaften werden mit einem FUSE-Layer emuliert, um mit bestehenden Apps kompatibel zu sein. Außerdem: /data/ und /sdcard auf Google-Geräten ab dem Nexus 7 verwenden nur eine einzige Partition (/data/media stellt den „sdcard“-Inhalt dar und wird mithilfe der FUSE-Schicht für Apps verfügbar gemacht).
Hier ist CyanogenMods Implementierung des FUSE-Treibers, wenn Sie daran interessiert sind, die Quelle zu sehen. Es sieht jedoch so aus, als ob das Setzen von Zeitstempelattributen implementiert ist.
EDIT: Es funktioniert nur mit root.
Genauer Grund: Alle Dateien gehören root.sdcard_rw (siehe hier ).
Ein Aufrufer ohne h uid=0 kann den utimensat() syscall nicht aufrufen , er schlägt bereits in der VFS-Schicht (EPERM) für andere Zeitstempel als den aktuellen fehl:
- die effektive Benutzer-ID des Aufrufers muss mit dem Besitzer der Datei übereinstimmen; oder
- Der Anrufer muss über die entsprechenden Berechtigungen verfügen.
Um eine andere Änderung vorzunehmen als beide Zeitstempel auf die aktuelle
Zeit zu setzen (dh times ist nicht NULL und beide tv_nsec-Felder sind nicht
UTIME_NOW und beide tv_nsec-Felder sind nicht UTIME_OMIT),
muss entweder Bedingung 2 oder 3 oben zutreffen.
Ich bin kürzlich auf einem Nexus 5 auf dieses Problem gestoßen und habe die meisten der hier aufgeführten Lösungen ohne Erfolg ausprobiert. In meinem Fall scheint es durch einen erkannten Fehler mit Standard-Android ( Quelle ) verursacht worden zu sein.
Meine Lösung war wie folgt: Ich habe Windows 8.1 verwendet, aber es gibt keinen Grund, warum dies nicht unter OSX/Linux funktionieren würde (auf dem Gerät ist jedoch Root erforderlich).
Erstellen Sie auf Ihrem PC ein .tar.gz-Archiv aller Dateien, die Sie übertragen möchten.
Übertragen Sie das Archiv per FTP auf das Gerät und stellen Sie dabei sicher, dass der MFMT-Befehl verwendet wird.
Extrahieren Sie auf dem Gerät das Archiv in einer Shell als root.
su
Befehl verwenden. Möglicherweise müssen Sie Zugriff gewähren, wenn SuperSU angezeigt wird.cd /sdcard/
tar -xvf ARCHIVE_NAME_HERE.tar.gz
DCIM/Camera
Verzeichnis überhaupt nicht in der Stock-Galerie-App angezeigt. Wenn Ihnen das passiert, empfehle ich Ihnen, die Dateien in ein anderes Verzeichnis zu extrahieren und die Dateien dann in Ihr Kameraverzeichnis zu verschieben (nicht zu kopieren) . Ich vermute, dass dies durch ein Berechtigungsproblem verursacht wird. Sie können das Terminal oder Ihren Dateimanager Ihrer Wahl verwenden, um die Dateien zu verschieben.Dadurch blieben alle Dateiattribute „Änderungsdatum“ intakt und alle Fotos blieben in der richtigen Reihenfolge, wenn sie in der Galerie-App angezeigt wurden.
Überprüfen Sie die EXIF-Daten und prüfen Sie, ob dort ein Zeitstempel vorhanden ist.
Wenn dies der Fall ist, können Sie mit Photo Date Correction den Zeitstempel der verpfuschten Datei mit dem EXIF-Zeitstempel überschreiben, wodurch Sie Ihre richtige Sortierung zurückerhalten.
Dies ist eine Frage, die mich sehr beschäftigt, wenn ich auf Geräte stoße, die nur über MTP, aber nicht über den Massenspeichermodus verfügen. Auch bei Mahn mache ich mir aus genau den gleichen Gründen Sorgen.
Nach einigen Tests habe ich eine temporäre Lösung gefunden, die möglicherweise den Zeitstempel beibehalten kann.
Es nutzt den externen SD-Karten- / OTG-Kartenleser und auch den cp-Befehl mit -a, der den Zeitstempel beibehalten kann. Die Voraussetzung ist jedoch, dass das Telefon gerootet sein muss.
Wie in einer anderen Antwort erwähnt, kann auf Geräten, die FUSE für die SD-Kartenemulation verwenden (z. B. moderne Nexus-Geräte), nur root die Zeitstempel von Dateien in /sdcard
. Da Dinge wie MTP und ADB nicht als Root ausgeführt werden, können Sie die Zeitstempel mit diesen Methoden nicht beibehalten. Wenn Ihr Gerät jedoch gerootet ist, können Sie die Zeitstempel anschließend in einem separaten Schritt korrigieren.
Beim Wiederherstellen einer vollständigen Sicherung /sdcard
von einem Linux-PC auf meinem Tablet habe ich diesen Befehl verwendet, um alle Zeitstempel nach dem Hochladen der Dateien mit zu korrigieren adb push
:
find . | while read file; do timestamp_stat=$(stat -c "%y" "$file"); timestamp=$(date +"%Y%m%d.%H%M%S" -d "$timestamp_stat"); echo "$timestamp: $file"; adb shell su -c "touch -t $timestamp \"/sdcard/$file\""; done
Dies sollte im Stammverzeichnis des Verzeichnisses auf dem PC ausgeführt werden, das dem /sdcard
auf dem Gerät entspricht. (Oder, wenn Sie etwas anderes als eine vollständige /sdcard
Sicherung hochgeladen haben, ändern Sie den Pfad im touch
Befehl gegen Ende. Sie sollten dies jedoch von dem Verzeichnis auf dem PC ausführen, das dem Verzeichnis im touch
Befehl entspricht.)
Es funktioniert so, dass es alle Dateien auf der PC-Seite durchgeht, den Zeitstempel von jeder erhält und einen touch
Befehl als root auf dem Gerät ausführt, um den Zeitstempel der entsprechenden Datei dort festzulegen.
su
Beachten Sie, dass dadurch für jede einzelne Datei ein separater Befehl ausgeführt wird. Wenn Sie die Protokollierung in Ihrem Root-Programm (z. B. SuperSU) aktiviert haben, sollten Sie dies möglicherweise deaktivieren, um zu vermeiden, dass eine große Anzahl von Protokolleinträgen erstellt wird. Und wenn Sie Ihr Gerät so konfiguriert haben, dass es bei jeder su
Anfrage zur Bestätigung auffordert, möchten Sie dies wahrscheinlich vorübergehend ändern. (Es könnte möglich sein, eine Variante zu entwickeln, die einen Strom von touch
Befehlen in eine einzelne Root-Shell auf dem Gerät leitet, aber die einfache Methode, dies zu tun, funktionierte nicht, als ich es versuchte, und ich wollte nicht ausgeben viel Zeit darauf.)
Ich habe dies erfolgreich auf einem Nexus 10 mit Android 5.1 verwendet.
Ich habe genau das gleiche Problem. Es scheint, dass es durch eine Sicherung auf dem Nexus 4 blockiert wird, auf dem Stock JellyBean 4.2.1 ausgeführt wird.
SYMLINKS:
/sdcard -> /storage/emulated/legacy
/storage/emulated/legacy -> /mnt/shell/emulated/0
MOUNT POINT:
/mnt/shell /dev/fuse /mnt/shell/emulated fuse \
rw,nosuid,nodev,relatime,user_id=****,group_id=****,default_permissions,allow_other 0 0
Diese Informationen wurden über eine Adb-Shell-Sitzung aufgenommen. Ich gehe davon aus, dass die Sicherung für alle Konten auf App-Ebene in der Mischung enthalten sein wird.
TL;DR So wie es aussieht, geht das nicht, ohne das Telefon zu rooten.
[old_pictures]$ for f in $(ls -1 * | sort -t _ -k 2); do adb push $f /storage/sdcard0/DCIM/Past/; sleep 3; done;
Wenn Sie diesen Weg gehen, führen Sie zuerst einen Test-Upload durch, um sicherzustellen, dass Sie zufrieden sind. Deaktivieren Sie außerdem den Google+ Instant Upload, wenn Sie gerade dabei sind, damit Sie keine "doppelten Uploads" erhalten.Wenn Sie die Google Foto-App verwenden und möchten, dass Ihre Datei in der richtigen Reihenfolge aufgelistet wird, gibt es eine Lösung.
Der Hintergrund des Problems
Dies ist ein Android-Bug. Es erlaubt Nicht-Root-Benutzern nicht, das Änderungsdatum von Dateien zu ändern ( https://code.google.com/p/android/issues/detail?id=18624 seit der Einführung von Multi-User / Sandbox mit FUSE-Dateisystem) . Und behält den Zeitstempel nicht bei, wenn Dateien mit dem MTP-Protokoll kopiert werden ( https://code.google.com/p/android/issues/detail?id=92635 ).
Die Problemumgehung für Google Foto-Benutzer
Fotos werden unter Verwendung der EXIF-Informationen geordnet, sofern verfügbar, sodass Sie einfach alle Arten verwenden können, ihnen die richtigen EXIF-Daten zuzuweisen. Jede Kamera sollte dies automatisch für Sie einstellen, stellen Sie einfach sicher, dass Datum und Uhrzeit korrekt sind.
Für Videos oder wenn Sie die EXIF-Daten nicht einstellen möchten, gehen Sie einfach auf https://photos.google.com/ und laden Sie Ihr Video / Ihre Fotos von dort hoch. Es behält den Änderungszeitstempel bei, den Sie auf Ihrem Computer haben, und da es mit Ihrem Gerät synchronisiert ist, sehen Sie das Foto in der App korrekt sortiert, sobald Sie mit dem Hochladen fertig sind.
Verwenden Sie ein Synchronisationstool wie zB FolderSync , das sich entsprechend um Zeitstempel kümmern sollte. Synchronisationswerkzeuge sollten darauf spezialisiert sein, alle Aspekte der wirklichen Aufrechterhaltung synchroner Kopien zu handhaben - natürlich einschließlich Zeitstempel.
BEWAHREN DES GEÄNDERTEN DATUMS AUF NEXUS-GERÄT --- KEIN ROOT ERFORDERLICH ---
Prost.. :)
es behält das Änderungsdatum bei. Ich weiß nicht, wie Droid Explorer das macht. aber es funktioniert einfach.
Stellen Sie sicher, dass USB-Debugging aktiviert ist, bevor Sie Droid Explorer verwenden.
ähm... es gibt allerdings eine Einschränkung... Droid Explorer kann nur Dateien übertragen, keine Ordner.
Verwenden Sie PTP anstelle von MTP, wenn Sie Ihr Telefon über USB anschließen. Es funktioniert für mich, ich verwende ein Samsung Note 4, das mit einem Ubuntu 14.04-Computer verbunden ist. Die Verbindung als PTP erlaubt jedoch nur das Kopieren von Bildern/Images. Alle anderen Methoden zum Kopieren von Dateien (Bluetooth, WIFI, Dateimanager) auf ein externes Laufwerk ändern das Datum.
Sie können adb verwenden
Aktivieren Sie den Entwicklermodus auf Mobilgeräten.
USG-Debugging auf Mobilgeräten aktivieren.
Installieren Sie ADB auf Ihrem Laptop.
Verbinden Sie Ihr Handy über USB mit Ihrem Laptop.
Öffnen Sie Ihr Laptop-Terminal und melden Sie sich mit den folgenden Befehlen bei Ihrem Handy an
Adb-Geräte Adb-Shell
Suchen Sie den genauen Pfad, in dem Sie Ihre Dateien ablegen möchten.
Beenden Sie die adb-Shell mit dem Befehl exit.
Verwenden Sie den folgenden Befehl, um Dateien von Ihrem Laptop auf Ihr Mobilgerät zu übertragen, ohne dass Metadaten (Erstellungs-/Änderungszeit) betroffen sind
adb push source_path target_mobile_path
Sie können Ordner und mehrere Dateien mit dem adb push
Befehl auf einmal übertragen.
Sie können das gleiche Verfahren und den gleichen Befehl verwenden adb pull source_mobile_path target_laptop_path
, um Dateien vom Handy auf den Laptop zu kopieren, ohne dass sich dies auf die Daten auswirkt.
Meine Lösung zum Beibehalten des Änderungsdatums während des Kopierens von Dateien auf einem Android-Gerät mit MTP:
Getestet auf LG G2 Stock (ohne Root), Andorid 4.4.2 und HTC One M7, Andorid 4.4.2:
Soweit ich sehen kann, sind die Änderungsdaten vollständig erhalten!
Backup-Lösung mit „SanDisk Memory Zone“, um das Zeitstempeldatum beizubehalten. Kopieren/Verschieben von Dateien von einem Android-Gerät auf eine externe SD-Karte – Getestet auf Samsung Note 2, Note 3 und Mini SIII
Sichern Sie einfach Ihre Fotodateien auf SDCard und verschieben Sie die Karte auf ein anderes Android-, PC-, Apple- oder anderes Gerät - wenn Sie sie nicht zum Sichern Ihrer Fotodateien verwenden, befolgen Sie diese einfachen 8-Schritte-Anweisungen.
Schnelle und einfache Lösung: Verwenden Sie einfach einen PC oder Mac, um die Dateien von der alten SD-Karte (oder PC) auf die neue SD-Karte zu kopieren. Verwenden Sie einen PC/Mac mit einem SD-Kartenleser/-schreiber (es gibt USB-zu-SD-Kartenkonverter), der die Karte als FAT32-USB-Speicher erkennt. Wenn Sie mit dem Kopieren fertig sind, legen Sie die neue Karte wieder in Ihr Telefon ein und starten Sie es neu.
Ich bin auf ein Moto X 2014 umgestiegen und hatte dieses Problem.
Ich habe auch viele Dinge ausprobiert, eine Lösung schien "Motorola Migrate" zu sein, um zwei Telefone mit WiFi zu synchronisieren (ein alter Lebkuchen-Backflip). In der Galerie war die Situation gut (auch im Detail), aber seltsamerweise wurde im Dateimanager das Datum geändert, und nach wenigen Stunden zeigte sogar die Galerie auch das Übertragungsdatum an.
Wenn die Dateien nicht zu viele sind, könnte die Problemumgehung manuell einzeln kopiert werden, wobei jedes Mal das Datum und die Uhrzeit auf dem Telefon geändert werden.
Ich habe ein Nexus 4 und hatte das gleiche Problem mit Zeitstempel und Fotos (tatsächlich allen Dateien).
Hier sind die Befehlszeilen (mit einem gerooteten Telefon), die ich dank eines Beitrags auf Ubuntu verwendet habe:
sudo apt-get install android-tools-adb
(auf Ubuntu, wenn Android SDK nicht installiert ist)
adb devices
cd /media/my_backup_folder_where_i_put_a_folder_with_all_my_data_named_"savandroid"_in_it
Um in meinen Ordner "backup" zu gehen, der den Ordner "savandroid" enthält
adb root
adb push savandroid /sdcard
Alle Dateien und Ordner, die sich in "saveandroid" befinden, werden an die SD-Karte gesendet, die gut mit allen korrekten Zeitstempeln funktioniert!
Hinweis : Auf Cyanogenmod musste ich root für "apps and adb" im Entwicklermenü auswählen. Standardmäßig ist es nur für Apps festgelegt.
Ich werde meine Lösung hinzufügen, die unter Ubuntu funktioniert hat
Installieren Sie zuerst simple-mtpfs und installieren Sie die Sicherung
cd ~
mkdir myphone
simple-mtpfs ~/myphone
Jetzt haben Sie Ihre Telefonordner in diesem Verzeichnis gemountet, Sie können rsync -t
, oder verwenden, cp -p
um die Bilder zu kopieren, und die erstellten/geänderten/zugegriffenen Zeiten werden nicht geändert.
Arbeite für mich :)
So kopieren Sie Dateien von Ihrem Android-Gerät auf Ihren PC unter Beibehaltung der Zeitstempel:
adb shell tar c -C /storage/emulated/0/XXX . | tar xv
So stellen Sie sie auf dem Android wieder her:
tar c . | adb shell tar xv -C /storage/emulated/0/XXX
Dies funktioniert, indem eine TAR-Datei innerhalb des Geräts erstellt wird, die sofort auf Ihrem Host extrahiert wird, und umgekehrt.
Das "v" zeigt den Namen der kopierten Datei an.
Dies setzt natürlich voraus, dass Sie „adb“ installiert haben, dass das Telefon USB-Debugging aktiviert hat und dass Sie das Debugging-Zertifikat bereits validiert haben.
sudo apt install adb
Probieren Sie die App "Bluetooth File Transfer" aus, sie behält das Änderungsdatum beim Verschieben bei. Und ich glaube auch mit kopieren, aber versuchen Sie es zuerst mit einer Datei / einem Ordner, um sicherzugehen. Es kann auch das andere Gerät über Bluebooth erkunden.
Verwenden Sie SyncMe Wireless und die Netzwerkfreigabe. Die Zeitstempel bleiben erhalten und die Synchronisierung ist schnell. Ich konnte ohne Computer in Kingston MobileLite Wireless in 20 Minuten auf SD-Karte sichern und sofort neu synchronisieren.
Chance
Mahn