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 ?
J'ai besoin de copier des fichiers sans modifier leur horodatage.
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 ?
J'ai besoin de copier des fichiers sans modifier leur horodatage.
cp -p
fait l'affaire. Pour Linux :
-p
même que--preserve=mode,ownership,timestamps
-p
Faites en sorte que cp préserve les 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 le permettent les autorisations.
Et pour OS X :
-p
Faites en sorte que cp préserve les 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 le permettent les autorisations. Les listes de contrôle d'accès (ACL) et les attributs étendus (EA), y compris les fourchettes de ressources, seront également préservés.
Notez que cela peut/va changer le fichier source le temps d'accès (atime), comme le montre le tableau suivant ls -lu
. Aussi, stat
o stat -x
peut être utilisé pour afficher joliment les temps d'accès aux données, de modification des données et de changement d'état des fichiers, à laquelle, pour macOS, l'heure de naissance peut être ajoutée en utilisant un formatage explicite :
stat -f "%n%N%nAccess (atime): %Sa%nModify (mtime): %Sm%nChange (ctime): %Sc%nBirth (Btime): %SB%n" *
Lorsque vous utilisez cp
de la 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 du fichier, il existe la version longue de la méthode --preserve
qui permet de spécifier explicitement une liste d'attributs à préserver.
cp --preserve=timestamps source destination
Sachez toutefois que cette syntaxe n'est probablement pas prise en charge par d'autres Unités. Une alternative pourrait être d'utiliser l'option --times
paramètre de rsync
qui devrait être disponible sur la plupart des installations.
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 le temps d'accès et le temps de modification avec le programme touch, par exemple
cp orig copy
touch -r orig copy
Cependant, vous ne pouvez pas modifier le temps de changement des inodes.
SystemesEZ est une communauté de sysadmins 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.