2010-02-27 11:13:48 +0000 2010-02-27 11:13:48 +0000
90
90

Comment copier un fichier en unix sans modifier sa dernière heure de modification ?

Si je copie un fichier d'un endroit à un autre en utilisant cp, l'horodatage du fichier copié est fixé à l'heure de la copie.

**_Y a-t-il un moyen d'éviter cela ?

Je dois copier des fichiers sans modifier leur horodatage.

Réponses (4)

106
106
106
2010-02-27 11:20:21 +0000

cp -p fait l'affaire. Pour Linux :

-p comme --preserve=mode,ownership,timestamps Pour FreeBSD :

-p Cause de la préservation par cp des attributs suivants de chaque fichier source dans la copie : heure de modification, heure d'accès, drapeaux de fichier, mode de fichier, ACL, ID utilisateur et ID groupe, comme autorisé par les permissions.

Et pour OS X :

-p Cause de la préservation par cp des attributs suivants de chaque fichier source dans la copie : heure de modification, heure d'accès, drapeaux de fichier, mode de fichier, ID utilisateur et ID groupe, comme autorisé par les permissions. Les listes de contrôle d'accès (ACL) et les attributs étendus (EAs), y compris les fourchettes de ressources, seront également préservés.

Notez que cela peut/vaudra modifier le temps d'accès (atime) du fichier source, comme indiqué par ls -lu. De plus, stat ou stat -x peut être utilisé pour afficher les heures d'accès aux données, de modification des données et de changement d'état du fichier, auxquelles pour macOS l'heure de naissance peut être ajoutée en utilisant un formatage explicite :

16
16
16
2015-06-09 15:45:17 +0000

En utilisant cp du GNU Coreutils , pour ne conserver que les horodatages et non les attributs tels que l'identifiant de l'utilisateur, l'identifiant du groupe ou le mode fichier, il existe le long --preserve qui permet de spécifier explicitement une liste d'attributs à conserver.

cp --preserve=timestamps source destination

Attention cependant, cette syntaxe n'est probablement pas supportée par les autres Unices. Une alternative pourrait être d'utiliser le paramètre --times de rsync qui devrait être disponible sur la plupart des installations.

11
11
11
2010-02-27 11:23:37 +0000

Il y a trois temps sur un système de fichiers Unix, le temps d'accès (atime), le temps de modification (mtime) et le temps de changement d'inode (ctime). Vous pouvez changer l'heure d'accès et l'heure de modification avec le programme tactile, par exemple

cp orig copy touch -r orig copy

Cependant, vous ne pouvez pas changer l'heure de changement d'inode.

0
0
0
2013-07-21 16:57:14 +0000

J'ai récemment eu besoin de faire quelque chose de similaire, mais en utilisant des liens symboliques à la place. Pour créer un lien symbolique et préserver l'horodatage original : cp -ps src_file dst_symlink