¿Cómo cambio la fecha de modificación de un archivo, específicamente PNGs, en Android sin ser root?
Total Commander no pudo hacerlo con un error de permiso Acceso denegado
.
¿Cómo cambio la fecha de modificación de un archivo, específicamente PNGs, en Android sin ser root?
Total Commander no pudo hacerlo con un error de permiso Acceso denegado
.
RESPUESTA BREVE:
Simplemente puedes touch
el archivo o proporcionar cualquier fecha y hora en el pasado o futuro:
~$ touch /sdcard/test_file
~# debugfs -R 'stat media/0/test_file' /dev/block/bootdevice/by-name/userdata | grep crtime:
crtime: 0x5c926e0d:2d61b810 -- Mié Mar 20 21:45:01 2019
~$ touch -d '2009-2-13 14:32:55' /sdcard/test_file
~$ stat /sdcard/test_file
[...]
Acceso: 2009-02-13 14:32:55.000000000 +0000
Modificar: 2009-02-13 14:32:55.000000000 +0000
Cambio: 2019-03-20 21:45:38.067021025 +0000
Creación: -
Algunos exploradores de archivos como MiXplorer también tienen opciones para cambiar la Hora de Modificación.
No necesitas privilegios de superusuario para cambiar mtime
. Solo el archivo debe ser escribible por tu ID de usuario (aplicación en caso de Android).
DETALLES:
touch
utiliza utimensat para actualizar la hora de acceso (atime
) y modificación (mtime
) siempre que el sistema de archivos admita que las marcas de tiempo se guarden en un inode junto con los datos del archivo.
La hora de creación (btime
/crtime
) - una parte del estado de archivo extendido que requiere al menos un tamaño de inode de 256 bytes - no está estandarizada, por lo que raramente es compatible con los sistemas de archivos. En los comandos anteriores, se utiliza debugfs
con privilegios de root para obtener la hora de creación del archivo en ext4
porque algunas binarios de stat
no se han actualizado para usar todavía statx (requiere al menos Kernel de Linux 4.11), por lo que btime
aparece vacío.
Tanto btime
como la hora de cambio (ctime
; hora de modificación de inode/metadatos) se supone que deben ser manejados por el sistema, no simplemente modificables por el usuario.
Dado que Android está basado en Linux, hereda el concepto de inode y marcas de tiempo del mundo UNIX. Los sistemas de archivos comunes de Linux como ext4
y f2fs
admiten marcas de tiempo, incluidos los sistemas de archivos emulados utilizados por Android en tarjetas SD. Otros sistemas operativos y sistemas de archivos tienen conceptos similares con terminologías ligeramente diferentes. Por ejemplo, en NTFS
de Windows, la hora de "MFT Entry Modified" es muy similar a la hora de ctime
de UNIX.
touch -m
no estaba funcionando para mí hoy, donde el teléfono Android está montado usando SSHFS en Ubuntu 16.04.6. Sin embargo, los archivos se copiaron correctamente al teléfono. ¡Más confuso...!
@WinEunuuchs2Unix eso debe deberse a tus permisos de SSHFS (opciones de montaje de FUSE). El sistema de archivos emulado de Android es bastante tolerante. Incluso permite touch -d
incluso si no eres el propietario del archivo (ya que todos los archivos en /sdcard
son propiedad de root). En sistemas de archivos *NIX normales, utimensat
/utimes
tienen requisitos estrictos de permisos. Por cierto, ¿montaste /sdcard
o /data/media/0
en SSHFS?
Esto es muy embarazoso. El touch funciona manualmente pero no dentro de mi programa de Python cuando el servidor de archivos toca el teléfono. Toque el teléfono al servidor de archivos funciona. Grr tres veces he ejecutado esta actualización de dos horas a través de WiFi. De vuelta a la mesa de dibujo. Mi montaje es: echo rick | sshfs -o auto_cache,reconnect,defer_permissions -o Ciphers=aes128-ctr -o Compression=no -o password_stdin -p 2222 rick@192.168.0.11:/ /mnt/phone
El montaje del servidor de archivos es diferente, con el puerto 22 por defecto y no tan complicado.
Total Commander - sistema de archivos - marcar uno o varios archivos - toque largo - propiedades - cambiar la fecha mostrada a la que necesitas (también hay un botón "Ahora") - Guardar - ¡voila!
Por cierto, ¡Total Commander es una excelente herramienta - en todas las áreas y en todas las plataformas!
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.