web-dev-qa-db-fra.com

Comment copier un fichier sous Unix sans modifier sa dernière heure de modification?

Si je copie un fichier d'un endroit à un autre à l'aide de cp, l'horodatage du fichier copié est défini sur l'heure de la copie.

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

Je dois copier des fichiers sans modifier leurs horodatages.

84
Lazer

cp -p fait le tour. Pour Linux :

-p identique à --preserve=mode,ownership,timestamps

Pour FreeBSD :

-p Faire en sorte que cp conserve les attributs suivants de chaque fichier source dans la copie: heure de modification, heure d'accès, indicateurs de fichier, mode de fichier, ACL, ID utilisateur et ID de groupe, comme le permettent les autorisations.

Et pour OS X :

-p Faire en sorte que cp conserve les attributs suivants de chaque fichier source dans la copie: heure de modification, heure d'accès, indicateurs de fichier, mode de fichier, ID utilisateur et ID de groupe, comme le permettent les autorisations. Les listes de contrôle d'accès (ACL) et les attributs étendus (EA), y compris les fourches de ressources, seront également conservés.

98
Arjan

Lorsque vous utilisez cp à partir de GNU Coreutils , pour conserver uniquement les horodatages et non des attributs tels que l'ID utilisateur, l'ID de groupe ou le mode fichier, il existe le code long --preserve qui permet de spécifier explicitement une liste d'attributs être préservé.

cp --preserve=timestamps source destination

Sachez cependant que cette syntaxe n'est probablement pas supportée par d'autres Unices. Une autre solution consiste à utiliser le paramètre --times de rsync qui devrait être disponible sur la plupart des installations.

15
Stefan Schmidt

Trois fois sur un système de fichiers Unix, l'heure d'accès (atime), l'heure de modification (mtime) et l'heure de changement d'inode (ctime). Vous pouvez modifier l'heure d'accès et l'heure de modification avec le programme tactile, par exemple

 cp copie d’origine 
 touchez ou copie d’origine 

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

11
gorilla

J'ai récemment eu besoin de faire quelque chose de similaire mais d'utiliser un lien symbolique à la place. Pour créer un lien symbolique et conserver l'horodatage d'origine: cp -ps src_file dst_symlink

0
fduff