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

Hoe kopieer ik een bestand in unix zonder de laatst gewijzigde tijd te veranderen?

Als ik met cp een bestand van de ene plaats naar de andere kopieer, wordt de tijdstempel op het gekopieerde bestand gelijk gezet aan de tijd van de kopie.

_Is er een manier om dit te voorkomen? _

Ik moet bestanden kopiëren zonder de tijdstempels te veranderen.

Antwoorden (4)

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

cp -p doet de truc. Voor Linux ](http://www.unix.com/man-page/Linux/1/cp/):

-p hetzelfde als --preserve=mode,ownership,timestamps Voor FreeBSD :

-p Zorg ervoor dat cp de volgende attributen van elk bronbestand in de kopie behoudt: modificatietijd, toegangstijd, bestandsvlaggen, bestandsmodus, ACL, gebruikers-ID en groeps-ID, zoals toegestaan door de permissies.

En voor OS X :

-p Laat cp de volgende attributen van elk bronbestand in de kopie behouden: modificatietijd, toegangstijd, bestandsvlaggen, bestandsmodus, gebruikers-ID en groeps-ID, zoals toegestaan door de permissies. Toegangscontrolelijsten (ACL’s) en Uitgebreide Attributen (EA’s), inclusief bronvorken, zullen ook bewaard blijven.

Merk op dat dit **de toegangstijd (atime) van het bronbestand kan/zal veranderen, zoals aangegeven door ls -lu. Ook kan stat of stat -x gebruikt worden om netjes de data toegang, data wijziging, en bestand status verandering tijden te laten zien, waar voor macOS de geboorte tijd aan toegevoegd kan worden met expliciete formattering :

stat -f "%n%N%nAccess (atime): %Sa%nModify (mtime): %Sm%nChange (ctime): %Sc%nBirth (Btime): %SB%n" *
16
16
16
2015-06-09 15:45:17 +0000

Bij gebruik van cp van de GNU Coreutils , om alleen de timestamps te bewaren en niet attributen zoals user id, group id of file mode is er de longhand --preserve die het mogelijk maakt om expliciet een lijst van attributen op te geven die bewaard moeten blijven.

cp --preserve=timestamps source destination

Let er wel op dat deze syntaxis waarschijnlijk niet wordt ondersteund op andere Unices. Een alternatief zou kunnen zijn om de parameter --times te gebruiken, die op de meeste installaties beschikbaar zou moeten zijn.

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

Er zijn drie tijden op een Unix bestandssysteem, de toegangstijd (atime), de wijzigingstijd (mtime), en de inodeveranderingstijd (ctime). Je kunt de toegangstijd en de modificatietijd veranderen met het touch programma, bijvoorbeeld

cp orig copy touch -r orig copy

Je kunt echter niet de inodeveranderingstijd veranderen.

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

Ik moest onlangs iets soortgelijks doen, maar dan met een symlink. Om een symlink te maken en de originele timestamp te behouden: cp -ps src_file dst_symlink