26 votos

¿Cómo puedo transferir fotos a mi dispositivo Android Jelly Bean conservando la marca de tiempo original?

Recientemente me he comprado un Nexus 4 y me gustaría transferir mis fotos de mi anterior dispositivo a él. Mi anterior teléfono Android utiliza el almacenamiento masivo USB estándar que dio 0 problemas para copiar de ida y vuelta cosas, pero el Nexus 4, al igual que muchos otros teléfonos Android modernos supongo, utiliza MTP en su lugar, que tiene la interesante característica de negarse a copiar las fechas / marcas de tiempo originales de los archivos, utilizando en su lugar la fecha en la que los archivos se están copiando.

Evidentemente, esto es un gran fastidio cuando se trata de fotos; no sólo porque uno no puede comprobar la fecha original en la que se tomó la foto mientras navega por el teléfono, sino también porque acaban completamente desordenadas.

¿Hay alguna forma de transferir fotos a un teléfono Android Jelly Bean que no sea compatible con el almacenamiento masivo USB conservando las marcas de tiempo originales?

Cosas que he probado hasta ahora:

  • Transferencia a través de USB MTP
  • ADB push (tanto carpetas completas como archivos individuales)
  • Transferencia vía SSH (usando SSHDroid + WinSCP)
  • Carga y descarga desde Dropbox
  • Transferir un archivo ZIP a través de MTP y descomprimir el archivo en el teléfono
  • Transferencia desde el otro teléfono vía bluetooth
  • QuickPic Función "Fijar la fecha".
  • Sincronización local
  • Corrección de la fecha de la foto
  • FTPSyncX
  • Señales de humo
  • Gritar al teléfono

Ninguno de ellos conservó la marca de tiempo, y esto me está volviendo loco.

(Además, aún no estoy rooteado, pero si la única forma viable requiere Root también agradecería esa respuesta).

0 votos

¿Adroide admite la descarga de archivos .tar? Si es así, tal vez podrías copiar un archivo .tar de las imágenes. No sé si el untaring cambiaría la marca de tiempo de los archivos individuales o no.

0 votos

@Chance lo intentó antes pero tampoco sirvió; el tema es que nada tiene privilegios para escribir la marca de tiempo por defecto, así que no se puede hacer nada más que rootear ahora mismo.

0 votos

También a todos los que han intervenido en esta pregunta: Gracias. Por la forma en que funcionan los sitios SE, sólo puedo aceptar una respuesta, pero todas las respuestas aquí ayudaron de una u otra manera.

10voto

ce4 Puntos 11180

No se puede, se trata de un problema de permisos actuales ( informe de errores aquí ) de la carpeta /sdcard de Android 4.0+ si no está usando FAT32 (sino FUSE).

Razón: Hay una transición de FAT32 a un almacenamiento de usuario unificado tanto para aplicaciones como para datos multimedia (usando ext4) en un único sistema de archivos.

Nos hemos cansado de ver que los OEM incluyen muchos GB de almacenamiento interno para la música, mientras los usuarios siguen quedándose sin espacio para las aplicaciones y los datos. Este enfoque nos permite fusionar todo en un solo volumen, lo que es mucho mejor.

-- Dan Morrill, ingeniero de Android en Google

Las antiguas propiedades de FAT32 se emulan mediante una capa FUSE para que sean compatibles con las aplicaciones existentes. Además: /data/ y /sdcard en los dispositivos de Google a partir del Nexus 7 utilizan una única partición (/data/media representa el contenido de la "sdcard" y se expone mediante la capa FUSE a las apps).

Aquí está la versión de CyanogenMod aplicación del controlador FUSE si estás interesado en ver la fuente. Parece que el establecimiento de atributos de marca de tiempo está implementado, sin embargo.

EDIT: Sólo funciona con Root.

La razón exacta: Todos los archivos son propiedad de Root.sdcard_rw (ver aquí ).

Una persona que llama sin uid=0 no puede llamar al utimensat() syscall , ya falla en la capa VFS (EPERM) para las marcas de tiempo que no sean las actuales:

  1. el ID de usuario efectivo de la persona que llama debe coincidir con el propietario del archivo; o
  2. la persona que llama debe tener los privilegios adecuados.

Para realizar cualquier cambio que no sea la fijación de ambas marcas de tiempo a la actual
tiempo (es decir, times no es NULL, y ambos campos tv_nsec no son
UTIME_NOW y ambos campos tv_nsec no son UTIME_OMIT), cualquier condición
2 o 3 anteriores deben aplicarse.

0 votos

Gracias por la información, esperemos que esto sea algo que google pueda y esté dispuesto a solucionar, porque por lo que veo el problema no es la capa fuse o el protocolo mtp, sino los privilegios estrictos que se establecieron allí, que por cierto parecen ser bastante recientes (¿4.2.1?) ya que la aplicación Photo Date Correction publicada más abajo sí parecía funcionar con dispositivos más antiguos, basados en fuse/mtp 4.0 como el galaxy nexus.

2 votos

Actualización para futuros lectores: esto sigue sin corregirse en 4.2.2.

2 votos

Actualización para más futuros lectores: sin arreglar en 6.0 marshmallow.

4voto

Ronald Wildenberg Puntos 18258

Comprueba los datos EXIF y mira si hay una marca de tiempo allí.

Si lo hay, Corrección de la fecha de la foto le permitirá sobrescribir la marca de tiempo del archivo estropeado con la EXIF, devolviéndole la clasificación adecuada.

0 votos

Nada. Los datos EXIF están ahí, y la aplicación informó de que había cambiado con éxito las marcas de tiempo cuando la utilicé, pero siguieron siendo las mismas; reinicié y borré la caché de la galería también, pero eso no ayudó. ¿La aplicación requiere Root? Parece como si hubiera algún tipo de protección de escritura en las marcas de tiempo que nada es capaz de superar.

4voto

Tomy Puntos 31

Esta es una pregunta que me preocupa mucho cuando me encuentro con dispositivos que sólo tienen MTP pero no el modo de almacenamiento masivo. También me preocupa por las mismas razones que a Mahn.

Después de algunas pruebas, he encontrado una solución temporal que tal vez pueda conservar la marca de tiempo.

Utiliza el lector externo de tarjetas sdcard / OTG y también el comando cp con -a la marca de tiempo se podrá conservar. Pero el requisito es que el teléfono tiene que ser rooteado.

  1. Primero copie los datos a la tarjeta SD.
  2. Léelo con la ranura para tarjetas de memoria / lector de tarjetas OTG
  3. utilizar el shell adb y adquirir el permiso Root (su)
  4. cp -a * los datos de la tarjeta a la memoria interna.

2voto

Turtle Puntos 21

Tengo exactamente el mismo problema. Parece que está siendo bloqueado por el fusible en el Nexus 4 corriendo Stock JellyBean 4.2.1.

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

Esa información fue tomada a través de una sesión de adb shell; supongo que ese fusible estará en la mezcla para todo cuentas a nivel de aplicación.

TL;DR Por lo que parece, no se puede hacer sin rootear el teléfono.

1 votos

Mi "solución" de momento es subir las fotos de los teléfonos pasados de una en una en orden cronológico, con pausas entre ellas, en un directorio diferente. Aquí está el shell de Linux script que estoy usando: [old_pictures]$ for f in $(ls -1 * | sort -t _ -k 2); do adb push $f /storage/sdcard0/DCIM/Past/; sleep 3; done; Si optas por esta vía, haz primero una subida de prueba para asegurarte de que estás satisfecho. Además, desactiva la carga instantánea de Google+ para que no se produzcan "subidas dobles".

0 votos

Gracias, eso ayuda; en cuanto a tu para script: tanto el mtp a través de Windows como el adb push me dejan caer la conexión después de los primeros mil archivos más o menos en mi caso, además de que algunos archivos terminan corruptos aleatoriamente, ¿estás viendo lo mismo? básicamente como lo describe este tema aquí: code.google.com/p/Android/issues/detail?id=35185 (quizás debería hacer una pregunta aparte, ya que esto no está directamente relacionado con las marcas de tiempo en sí. Sin embargo, tengo que amar a mtp)

1voto

Izzy Puntos 45544

Utiliza una herramienta de sincronización como por ejemplo FolderSync que debería ocuparse de las marcas de tiempo en consecuencia. Las herramientas de sincronización deberían estar especializadas en el manejo de todos los aspectos del mantenimiento real de las copias síncronas -- incluyendo las marcas de tiempo, por supuesto.

0 votos

He probado un par de herramientas de sincronización, pero ninguna ha sincronizado la marca de tiempo, porque supongo que hay algún tipo de protección. Sin embargo, gracias por la respuesta.

0 votos

¿Intentaste Prueba de FTPSyncX ? Tal vez no sea el aspecto más sofisticado (el desarrollador no es diseñador). Pero ya uso el Pro desde hace un año, y sincroniza bien las marcas de tiempo a través de SFTP/SSH (el único protocolo que uso - la aplicación puede manejar más).

0 votos

Lo comprobaré, pero teniendo en cuenta que SSHDroid no me ha funcionado supongo que tampoco conseguiré las marcas de tiempo con él.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X