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


89

Si je copie un fichier d'un endroit à un autre en utilisant 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.

Réponses:


103

cp -pfait le tour. Pour Linux :

-p pareil que --preserve=mode,ownership,timestamps

Pour FreeBSD :

-p Faites 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, liste de contrôle d'accès, identifiant d'utilisateur et identifiant de groupe, comme le permettent les autorisations.

Et pour OS X :

-pFaites en sorte que cp conserve les attributs suivants de chaque fichier source de 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.


25
cp -a est également agréable à savoir, cela implique non seulement -p, mais aussi -R de copier des répertoires entiers et -d de préserver les liens.
casualuser

2
Notez cependant que lorsque vous utilisez les GNU coreutils cp -ppréserve non seulement l'horodatage , mais aussi le mode et la propriété et sur FreeBSD en plus de la date de modification , il préserve également le temps d'accès », drapeaux de fichiers, le mode de fichier, ACL, ID utilisateur et ID de groupe, comme le permet par autorisations. «et sur OS X en plus» Attributs étendus, y compris les fourchettes de ressources «.
Stefan Schmidt

sur le dernier OSX, cp -p touche toujours l'horodatage du fichier source
afathman

15

Lors de l’utilisation à cppartir de GNU Coreutils , pour conserver uniquement les horodatages et non des attributs tels que l’id utilisateur, le groupe ou le mode fichier, il existe un long terme --preservequi permet de spécifier explicitement une liste d’attributs à conserver.

cp --preserve=timestamps source destination

Sachez cependant que cette syntaxe n'est probablement pas supportée par d'autres Unices. Une alternative pourrait être d'utiliser le --timesparamètre rsyncqui devrait être disponible sur la plupart des installations.


4
C'est la bonne réponse. L'utilisation -pn'est pas la bonne réponse. -pconserve la propriété et le mode aussi bien. Ce qui peut ne pas être voulu .. et n'a pas été demandé en question.
bshea

10

Il y a 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

copie d'origine cp
touchez -r copie d'origine

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



0

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 préserver l'horodatage d'origine:cp -ps src_file dst_symlink


En commentaire, cela pourrait être utile pour quelques lecteurs. En réponse, cela ajoute du bruit pour la plupart des lecteurs.
Ndemou
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.