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


25

Recientemente compré un Nexus 4 y me gustaría transferirle mis fotos de mi dispositivo anterior. Mi teléfono Android anterior usaba el almacenamiento masivo USB estándar que daba 0 problemas para copiar cosas de un lado a otro, pero supongo que el Nexus 4, como muchos otros teléfonos Android modernos, usa MTP, que tiene la característica interesante de negarse a copiar el original fechas / marcas de tiempo de los archivos, utilizando en su lugar la fecha en que se copian los archivos.

Esto es obviamente un gran fastidio cuando se trata de fotos; no solo porque no se puede verificar la fecha original en la que se tomó la imagen mientras se navega por el teléfono, sino también porque terminan sin clasificar.

¿Hay alguna manera 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 a través de SSH (usando SSHDroid + WinSCP)
  • Carga y descarga desde Dropbox
  • Transfiere un archivo ZIP a través de MTP y descomprime el archivo en el teléfono
  • Transferencia desde el otro teléfono a través de bluetooth
  • Función de "fecha fija" de QuickPic
  • Sincronización local
  • Foto Fecha Corrección
  • FTPSyncX
  • Señales de humo
  • Gritando al teléfono

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

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


¿Android es compatible con la descompresión de archivos .tar? Si es así, tal vez podría copiar un archivo .tar de las imágenes. No sé si la descompresión cambiará la marca de tiempo de los archivos individuales o no.
Chance

@Chance intentó eso antes pero tampoco ayudó; El problema es que nada tiene privilegios para escribir la marca de tiempo de forma predeterminada, por lo que no hay nada que se pueda hacer excepto rootear en este momento.
Mahn

Además, a todos los que intervinieron en esta pregunta: Gracias. La forma en que funcionan los sitios SE solo puedo aceptar una respuesta, pero cada respuesta aquí ayudó de alguna manera.
Mahn

Respuestas:


10

No puede, este es un problema de permiso actual ( informe de errores aquí ) de la carpeta s / sdcard de Android 4.0 + si no está usando FAT32 (pero FUSE).

Motivo: hay una transición de FAT32 a almacenamiento de usuario unificado para aplicaciones y datos multimedia (usando ext4) en un solo sistema de archivos.

Nos cansamos de ver que los OEM incluyen muchos GB de almacenamiento interno para música, mientras que los usuarios aún se estaban quedando sin espacio para aplicaciones y datos. Este enfoque nos permite fusionar todo en un volumen, que es mucho mejor.

- Dan Morrill, ingeniero de Android en Google

Las antiguas propiedades de FAT32 se emulan utilizando una capa FUSE para que sea compatible con las aplicaciones existentes. Además: / data / y / sdcard en los dispositivos de Google que comienzan con el Nexus 7 usan una sola partición (/ data / media representa el contenido de "sdcard" y se expone usando la capa FUSE a las aplicaciones).

Aquí está la implementación de CyanogenMod del controlador FUSE si está interesado en ver la fuente. Sin embargo, parece que se implementan los atributos de marca de tiempo.

EDITAR: solo funciona con root.

Razón exacta: todos los archivos son propiedad de root.sdcard_rw (ver aquí ).

Una persona que llama sin uid = 0 no puede llamar a la llamada al sistema utimensat () , ya falla en la capa VFS (EPERM) para marcas de tiempo distintas de la actual:

  1. la identificación de usuario efectiva de la persona que llama debe coincidir con el propietario del archivo; o
  2. la persona que llama debe tener los privilegios apropiados.

Para realizar cualquier cambio que no sea establecer ambas marcas de tiempo en la
hora actual (es decir, las horas no son NULL, y ambos campos
tv_nsec no son UTIME_NOW y ambos campos tv_nsec no son UTIME_OMIT), se
deben aplicar las condiciones 2 o 3 anteriores.


Gracias por la información, esperemos que esto sea algo que Google pueda y esté dispuesto a abordar, porque hasta donde puedo decir, el problema no es la capa de fusibles o el protocolo mtp, sino los privilegios estrictos que se establecieron allí, que por el La forma parece ser bastante reciente (4.2.1?) ya que la aplicación Photo Date Correction publicada a continuación parecía funcionar con dispositivos más antiguos basados ​​en 4.0 fusibles / mtp como el nexo galaxy.
Mahn

2
Actualización para futuros lectores: esto permanece sin corregir en 4.2.2.
Mahn

2
Actualización para aún más lectores futuros: sin reparar en 6.0 malvavisco.
Mahn

6

Recientemente me encontré con este problema en un Nexus 5 y probé la mayoría de las soluciones enumeradas aquí sin suerte. En mi caso, parece ser causado por un error reconocido con Android stock ( fuente ).

Mi solución fue la siguiente: utilicé Windows 8.1, pero no hay razón para que esto no funcione en OSX / Linux (sin embargo, se requiere root en el dispositivo).

  1. En su PC, cree un archivo .tar.gz de todos los archivos que desea transferir.

    • Utilicé 7zip para esto: vale la pena mencionarlo en Windows, primero deberá crear el archivo .tar y luego aplicar la compresión .gz.
  2. Transfiera el archivo al dispositivo mediante FTP, asegurándose de que se utiliza el comando MFMT.

    • El servidor FTP admite MFMT en el lado del dispositivo. Simplemente instale y habilite, no se necesita configuración adicional.
    • En la PC, utilicé Filezilla : debe asegurarse de que Transferir> Conservar marcas de tiempo de los archivos transferidos esté marcado.
  3. En el dispositivo, extraiga el archivo en un shell como root.

    • Con el emulador de terminal , primero asegúrese de tener acceso a la raíz mediante el sucomando. Es posible que deba otorgar acceso si aparece SuperSU.
    • Navegue al directorio que ahora contiene el archivo .tar.gz con el comando cd, por ejemplo: cd /sdcard/
    • Extraiga el archivo usando lo siguiente: tar -xvf ARCHIVE_NAME_HERE.tar.gz
    • Nota: Por alguna razón, cuando extraje directamente al DCIM/Cameradirectorio, las imágenes no se muestran en absoluto en la aplicación de la galería de valores. Si esto le sucede, le sugiero que extraiga a un directorio diferente y luego mueva (no copie) los archivos al directorio de su cámara. Sospecho que esto es causado por un problema de permisos. Puede usar el terminal o el administrador de archivos que prefiera para mover los archivos.
  4. Reiniciar por si acaso.

Esto permitió que todos los atributos de "fecha de modificación" de los archivos permanecieran intactos, y dejó todas las fotos en el orden correcto cuando se vieron en la aplicación de la galería.


No aparecen en la galería debido al índice de medios. No reconoce la operación de su terminal, pero si usa una aplicación de administrador de archivos, informa los nuevos archivos movidos al índice y ahora se encuentran nuevamente. ¿Estás seguro de que la parte ftp es realmente necesaria? Me pregunto porque el ftp no puede cambiar los archivos que están dentro del tar, entonces, ¿por qué debería ser importante?
mgutt

@mgutt Supongo que tienes razón acerca de que la parte FTP no es necesaria. ¡Estaba juntando información de otras soluciones de sugerencias y esto fue lo que terminó funcionando para mí!
rmorrin

4

Verifique los datos EXIF ​​y vea si hay una marca de tiempo allí.

Si lo hay, Photo Date Correction le permitirá sobrescribir la marca de tiempo del archivo fallido con la EXIF, devolviéndole la clasificación adecuada.


Nada. Los datos EXIF ​​están ahí, y la aplicación informó haber cambiado con éxito las marcas de tiempo cuando los usé, pero se mantuvieron igual; Reinicié y eliminé el 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 contra escritura en las marcas de tiempo que nada puede superar.
Mahn

4

Esta es una pregunta que realmente me preocupa mucho cuando encuentro dispositivos que solo tienen MTP pero no el modo de almacenamiento masivo. También tengo preocupaciones al respecto con exactamente las mismas razones con Mahn.

Después de algunas pruebas, he encontrado una solución temporal que puede preservar la marca de tiempo.

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

  1. Primero copie los datos a la tarjeta SD.
  2. Léalo con la ranura para tarjeta de memoria / lector de tarjetas OTG
  3. usa adb shell y adquiere permiso de root (su)
  4. cp -a * los datos de la tarjeta a la memoria interna.

4

Como se mencionó en otra respuesta, en los dispositivos que usan FUSE para la emulación de la tarjeta SD (como los dispositivos Nexus modernos), solo la raíz puede cambiar las marcas de tiempo de los archivos /sdcard. Dado que cosas como MTP y ADB no se ejecutan como root, no puede conservar las marcas de tiempo con estos métodos. Sin embargo, si su dispositivo está rooteado, puede corregir las marcas de tiempo con un paso separado después.

Mientras restauraba una copia de seguridad completa de /sdcarduna PC con Linux en mi tableta, utilicé este comando para corregir todas las marcas de tiempo después de cargar los archivos con 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

Esto debe ejecutarse desde la raíz del directorio en la PC que corresponde al /sdcarddispositivo. (O, si cargó algo que no sea una /sdcardcopia de seguridad completa , cambie la ruta en el touchcomando cerca del final. Pero debe ejecutar esto desde cualquier directorio en la PC que corresponda al directorio en el touchcomando).

La forma en que funciona es que revisa todos los archivos en el lado de la PC, obtiene la marca de tiempo de cada uno y ejecuta un touchcomando como root en el dispositivo para establecer allí la marca de tiempo del archivo correspondiente.

Tenga en cuenta que esto ejecutará un sucomando separado para cada archivo individual. Si tiene habilitado el registro en su programa raíz (por ejemplo, SuperSU), puede deshabilitarlo para evitar producir grandes cantidades de entradas de registro. Y si tiene su dispositivo configurado para solicitar confirmación en cada susolicitud, probablemente quiera cambiarlo temporalmente. (Puede ser posible encontrar una variación que canalice una secuencia de touchcomandos en un único shell raíz en el dispositivo, pero la forma directa de hacerlo no funcionó cuando lo probé, y no quería gastar mucho tiempo en eso)

He usado esto con éxito en un Nexus 10 con Android 5.1.


2

Tengo exactamente el mismo problema. Parece que está siendo bloqueado por un fusible en el Nexus 4 que ejecuta 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 adb shell; Supongo que el fusible estará en la mezcla para todas las cuentas de nivel de aplicación.

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


1
Mi "solución" por el momento es cargar imágenes de teléfonos anteriores de una en una en orden cronológico, con pausas intermedias, en un directorio diferente. Aquí está el script de shell de Linux 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 sigues esta ruta, primero realiza una carga de prueba para asegurarte de que estás satisfecho. Además, deshabilite la Carga instantánea de Google+ mientras lo hace para que no reciba "cargas dobles".
Tortuga

Gracias, eso ayuda; como su script: tanto mtp a través de windows como adb push me cortan 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 al azar, ¿está viendo lo mismo? básicamente como se describe este problema aquí: code.google.com/p/android/issues/detail?id=35185 (tal vez debería hacer una pregunta por separado, ya que esto no está directamente relacionado con las marcas de tiempo en sí. Sin embargo, debo amar el mtp)
Mahn

2

Si usa la aplicación Google Photo y desea que su archivo aparezca en el orden correcto, hay una solución.

El trasfondo del problema

Este es un error de Android. No permite a los usuarios no root cambiar la fecha de modificación de los archivos ( https://code.google.com/p/android/issues/detail?id=18624 desde la introducción de multiusuario / sandbox con el sistema de archivos FUSE) . Y no conserva la marca de tiempo al copiar archivos con el protocolo MTP ( https://code.google.com/p/android/issues/detail?id=92635 ).

La solución para los usuarios de Google Photo

Las fotos se ordenan utilizando la información EXIF ​​si está disponible, por lo que puede usar cualquier forma de establecerles los datos EXIF ​​correctos. Cualquier cámara debe configurarlo automáticamente, solo asegúrese de que la fecha / hora sea correcta.

Para videos o si no desea configurar los datos EXIF, simplemente vaya a https://photos.google.com/ y cargue sus videos / fotos desde allí. Conserva la marca de tiempo de modificación que tiene en su computadora y, dado que está sincronizada con su dispositivo, verá la foto en la aplicación, ordenada correctamente, tan pronto como haya terminado con la carga.


1

Utilice una herramienta de sincronización como, por ejemplo , FolderSync , que debe tener en cuenta 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, incluidas las marcas de tiempo, por supuesto.


Probé un par de herramientas de sincronización, pero ninguna sincronizó la marca de tiempo, porque supongo que hay algún tipo de protección. Gracias por la respuesta sin embargo.
Mahn

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

Lo comprobaré, pero teniendo en cuenta que SSHDroid no funcionó para mí, supongo que tampoco obtendré las marcas de tiempo.
Mahn

Casi apuesto a que lo hará. Todavía recuerdo lo difícil que fue esa parte para el desarrollador: nos sentamos horas en Skype discutiendo el problema :) Hubo ese problema de tiempo feo en Windows, que a veces informaba cosas mal ... Oh, obteniendo OT :) Simplemente inténtalo, no puede doler, ¿verdad? Y háganos saber cómo funcionó ...
Izzy

Nada. FTPSyncX Trial como cliente en el teléfono, freeSSHd como servidor en mi computadora portátil, puedo conectar y sincronizar archivos a través de STP / SSH, pero la marca de tiempo de las imágenes transferidas al teléfono todavía se sobrescribe a la fecha actual.
Mahn

1

FECHA DE CONSERVACIÓN MODIFICADA EN EL DISPOSITIVO NEXUS --- NO SE NECESITA RAÍZ ---

  • De Android a PC: use MTP
  • De PC a Android: use Droid Explorer

saludos .. :)

conserva la fecha de modificación. No sé cómo lo hace Droid Explorer. Pero simplemente funciona.

asegúrese de que la depuración de USB esté marcada antes de usar Droid Explorer.

um ... aunque hay una limitación ... Droid Explorer solo puede transferir archivos, no carpetas.

  • con Droid Explorer, copie archivos en el teléfono Android en alguna carpeta específica
  • luego, con el administrador de archivos dentro de Android, mueva esos archivos a la carpeta que queramos, no use la copia porque la copia alterará la fecha de modificación mientras que el corte no.

Droid Explorer requiere ROOT, ¿no?
AntonK

@AntonK Sí Droid Explorer necesita Root para preservar la marca de tiempo. Si Root no está disponible, sobrescribirá la fecha: maxrev.de/…
mgutt

1

Use PTP en lugar de MTP cuando conecte su teléfono por USB. A mí me funciona, utilizo un Samsung Note 4 conectado a la máquina Ubuntu 14.04. Sin embargo, conectarse como PTP solo permite copiar imágenes / imágenes. Todos los demás métodos para copiar archivos (bluetooth, WIFI, administrador de archivos) en una unidad externa cambiarán la fecha.


Probé eso con Windows 10 y una Nota 3 usando CM 12.1 (Android 5.1.1). Moví los archivos (la única forma en que Windows permite la conservación) pero no conservó las marcas de tiempo. :(
mgutt

0

Mi solución para preservar la fecha de modificación durante la copia de archivos en un dispositivo Android con MTP:

Probado en las existencias de LG G2 (sin root), Andorid 4.4.2 y HTC one M7, Andorid 4.4.2:

  1. Red compartida de la carpeta para copiar en la computadora (Win 8)
  2. Use SyncMe Wireless para copiar archivos de la computadora al dispositivo

Por lo que puedo ver, ¡las fechas de modificación están completamente preservadas!


0

Solución de respaldo usando "SanDisk Memory Zone" para preservar la fecha de la marca de tiempo. copiar / mover archivos desde un dispositivo Android a una tarjeta SD externa - Probado en Samsung Note 2, Note 3 y Mini SIII

Simplemente haga una copia de seguridad de sus archivos de fotos en la tarjeta SD y mueva la tarjeta a otro Android, PC, Apple u otro dispositivo; si no se usa para hacer una copia de seguridad de sus archivos de fotos, siga estas sencillas instrucciones de 8 pasos "

  1. Busque en Google Play e instale "SanDisk Memory Zone".
  2. Inicie la aplicación y espere a que termine el archivo de índice.
  3. Seleccione Copia de seguridad / Restaurar y cambie o marque la configuración.
  4. Seleccione el destino de la tarjeta de memoria y qué copia de seguridad (contactos, sms, fotos, música, etc.).
  5. Verifique la capacidad requerida y disponible, y continúe con el botón CONTINUAR.
  6. Espere a que se complete la copia de seguridad.
  7. Ahora tiene una copia de los archivos en su tarjeta SD en ".memoryzone_backup / files / 1"
  8. Ahora puede mover los archivos de su tarjeta SD como fotos a su Windows, Linux u otro dispositivo Android conservando la marca de tiempo original.

copiar archivos a tarjetas SD externas no causa el problema con la marca de tiempo de modificación
AntonK

0

Solución rápida y fácil: simplemente use una PC o Mac para copiar los archivos de la tarjeta SD (o PC) anterior a la nueva tarjeta SD. Use una PC / Mac con un lector / grabador de tarjeta SD (hay convertidores de tarjeta USB a SD) que ve la tarjeta como un almacenamiento USB FAT32. Cuando termine de copiar, vuelva a insertar la nueva tarjeta en su teléfono y reinicie.


0

Me mudé a un Moto X 2014 y tuve este problema.

Intenté muchas cosas también, una solución parecía ser "Motorola Migrate" para sincronizar con WiFi dos teléfonos (un antiguo backflip de pan de jengibre). En la galería, la situación era buena (incluso en detalles), pero extrañamente en el administrador de archivos la fecha cambió, y después de unas horas incluso la galería también mostró la fecha de transferencia.

La solución alternativa, si los archivos no son demasiados, podría copiarse manualmente uno por uno, cambiando cada vez la fecha y la hora en el teléfono.


0

Tengo un Nexus 4 y tuve el mismo problema con la marca de tiempo y las fotos (de hecho, todos los archivos).

Aquí están las líneas de comando (con un teléfono rooteado) que utilicé, gracias a una publicación en Ubuntu:

sudo apt-get install android-tools-adb

(en Ubuntu si Android SDK no está instalado)

adb devices
cd /media/my_backup_folder_where_i_put_a_folder_with_all_my_data_named_"savandroid"_in_it

Para ir a mi carpeta "copia de seguridad" que contiene la carpeta "savandroid"

adb root
adb push savandroid /sdcard

Todos los archivos y carpetas que se encuentran en "saveandroid" se envían a la tarjeta SD funcionó muy bien con todas las marcas de tiempo correctas.

Nota : En Cyanogenmod tuve que seleccionar root para "aplicaciones y adb" en el menú de desarrolladores. Por defecto, solo se configura en las aplicaciones.


0

Agregaré mi solución que funcionó en Ubuntu

Primero instale simple-mtpfs e instale el fusible

cd ~
mkdir myphone
simple-mtpfs ~/myphone

Ahora que tiene las carpetas de su teléfono montadas en este directorio, puede usarlas rsync -to cp -pcopiar las imágenes y los tiempos creados / modificados / accedidos no cambiarán.

Trabaja para mi :)


En el terminal, mientras está montado con simple-mtpfs, las marcas de tiempo aparecen como preservadas. Pero al acceder a los archivos en el teléfono, las marcas de tiempo parecen haberse restablecido.
Teresa e Junior

0

Para copiar archivos de su Android a su PC manteniendo las marcas de tiempo:

adb shell tar c -C /storage/emulated/0/XXX . | tar xv

Para restaurarlos de nuevo a Android:

tar c . | adb shell tar xv -C  /storage/emulated/0/XXX 

Esto funciona creando un archivo tar dentro del dispositivo, que se extrae inmediatamente en su host, y viceversa.

La "v" le permite ver el nombre del archivo que se está copiando.

Por supuesto, esto supone que tiene "adb" instalado, que el teléfono tiene habilitada la depuración USB y que ya ha validado el certificado de depuración.

sudo apt install adb

-1

Pruebe la aplicación "Transferencia de archivos Bluetooth", conserva la fecha de modificación con el movimiento. Y creo que con la copia también, pero primero intente con un archivo / carpeta para asegurarse. También puede explorar el otro dispositivo a través de bluebooth.


Proporcionar un enlace a las aplicaciones que recomiende hará que esta sea una respuesta más útil.
eldarerathis

-1

Use SyncMe Wireless y la red compartida. Las marcas de tiempo se conservan y la sincronización es rápida. Pude hacer una copia de seguridad sin una computadora en la tarjeta SD en Kingston MobileLite Wireless en 20 minutos, volver a sincronizar instantáneamente.


¿Puedes vincular esta aplicación?
Matthew leyó el

Solo pude encontrar el enlace para SyncMe Wireless , pero no "Network share", a menos que realmente quisieras decir que es una aplicación única. También proporcione un breve resumen de la aplicación y los pasos para hacerlo si es posible.
Andrew T.
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.