8 votes

Comment modifier la date de modification d'un fichier sans les privilèges root ?

Comment puis-je modifier la date de modification d'un fichier, en particulier des PNG, sur Android sans root ?

Total Commander n'a pas réussi à le faire en raison d'une erreur de permission Accès refusé.

7voto

Irfan Latif Points 16863

RÉPONSE COURTE :

Vous pouvez simplement touch le fichier ou fournir n'importe quelle heure et date passée ou future :

~$ touch /sdcard/test_file
~# debugfs -R 'stat media/0/test_file' /dev/block/bootdevice/by-name/userdata | grep crtime:
crtime: 0x5c926e0d:2d61b810 -- Mercredi 20 mars 21:45:01 2019
~$ touch -d '2009-2-13 14:32:55' /sdcard/test_file
~$ stat /sdcard/test_file
[...]
Accès : 2009-02-13 14:32:55.000000000 +0000
Modifié : 2009-02-13 14:32:55.000000000 +0000
Changement : 2019-03-20 21:45:38.067021025 +0000
Création : -

Certains explorateurs de fichiers comme MiXplorer proposent également des options pour changer l'heure de modification.
Vous n'avez pas besoin de privilèges superutilisateur pour changer mtime. Seul le fichier devrait être inscriptible par votre identifiant utilisateur (application dans le cas d'Android).

DÉTAILS :

touch utilise utimensat pour mettre à jour l'heure d'accès (atime) et de modification (mtime) à condition que le système de fichiers prenne en charge l'enregistrement des horodatages dans inode avec les données du fichier.

Le temps de création (btime/crtime) - une partie du statut de fichier étendu qui nécessite au moins une taille d'inode de 256 octets - n'est pas normalisé, donc rarement pris en charge par les systèmes de fichiers. Dans les commandes ci-dessus, debugfs est utilisé avec des privilèges de root pour obtenir l'heure de création du fichier sur ext4 car certains binaires stat ne sont pas mis à jour pour utiliser statx encore (nécessite au moins le noyau Linux 4.11), donc btime est vide.

À la fois btime et l'heure de changement (ctime ; heure de modification de l'inode/métadonnées) sont censés être gérés par le système, pas simplement modifiables par l'utilisateur.

Étant donné qu'Android est basé sur Linux, il hérite du concept d'inode et des horodatages du monde UNIX. Les systèmes de fichiers Linux courants comme ext4 et f2fs prennent en charge les horodatages, y compris les systèmes de fichiers émulés utilisés par Android sur les cartes SD. D'autres systèmes d'exploitation et systèmes de fichiers ont des concepts similaires avec des terminologies légèrement différentes. Par exemple, sur le NTFS de Windows, le temps de modification de l'entrée MFT est très similaire à ctime de UNIX.

0 votes

touch -m ne fonctionnait pas pour moi aujourd'hui lorsque le téléphone Android est monté en utilisant SSHFS sur Ubuntu 16.04.6. Cependant, les fichiers copiés sur le téléphone étaient OK. Le plus étonnant...

0 votes

@WinEunuuchs2Unix cela doit être dû à vos permissions SSHFS (options de montage FUSE). Le système de fichiers émulé d'Android est assez tolérant. Il permet même touch -d même si vous n'êtes pas le propriétaire du fichier (puisque tous les fichiers dans /sdcard sont la propriété de root). Sur les systèmes de fichiers *NIX normaux, utimensat/utimes ont des exigences de permission strictes. Au fait, avez-vous monté /sdcard ou /data/media/0 sur SSHFS?

0 votes

C'est le plus gênant. Le toucher fonctionne manuellement mais pas dans mon programme python lorsque le serveur de fichiers touche le téléphone. Toucher le téléphone au serveur de fichiers fonctionne. Grr trois fois que j'ai exécuté cette mise à jour de deux heures en Wifi. Retour à la case départ. Mon montage est : 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 Le montage du serveur de fichiers est différent, avec un port par défaut de 22 et beaucoup moins compliqué.

1voto

Meiki67 Points 11

Total Commander - système de fichiers - marquez un ou plusieurs fichiers - appui long - propriétés - changez la date affichée selon vos besoins (il y a aussi un bouton "Maintenant") - Enregistrez - voilà !

BTW Total Commander est un excellent outil - dans tous les domaines et sur toutes les plateformes !

0 votes

Fonctionne très bien (Android 11)

0 votes

Je pense que le téléphone doit toujours être rooté. J'ai essayé cela sur un Moto et j'ai reçu une erreur "Accès refusé".

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X