Jeśli skopiuję jakiś plik z jednego miejsca do innego za pomocą cp
, znacznik czasu na skopiowanym pliku zostanie ustawiony na czas kopiowania.
Czy jest jakiś sposób, aby tego uniknąć?
Muszę skopiować pliki bez zmiany ich znaczników czasu.
cp -p
Zrób sztuczkę. W systemie Linux :
-p
taki sam jak--preserve=mode,ownership,timestamps
-p
Powoduje, że cp zachowuje następujące atrybuty każdego pliku źródłowego w kopii: czas modyfikacji, czas dostępu, flagi plików, tryb pliku, ACL, identyfikator użytkownika i identyfikator grupy, zgodnie z uprawnieniami.
A dla OS X :
-p
Powoduje, że cp zachowuje następujące atrybuty każdego pliku źródłowego w kopii: czas modyfikacji, czas dostępu, flagi plików, tryb pliku, identyfikator użytkownika i identyfikator grupy, zgodnie z uprawnieniami. Listy kontroli dostępu (ACL) i atrybuty rozszerzone (EA), w tym rozwidlenia zasobów, również zostaną zachowane.
cp -p
zachowuje nie tylko znacznik czasu, ale także tryb i własność, a na FreeBSD oprócz czasu modyfikacji zachowuje również »czas dostępu, flagi plików, tryb pliku, ACL, identyfikator użytkownika i identyfikator grupy, jak dozwolone na podstawie uprawnień. «oraz w OS X dodatkowo» Rozszerzone atrybuty, w tym rozwidlenia zasobów «.W przypadku używania
cp
z GNU Coreutils , aby zachować tylko znaczniki czasu, a nie atrybuty, takie jak identyfikator użytkownika, identyfikator grupy lub tryb pliku, istnieje długa ręka,--preserve
która pozwala jawnie określić listę atrybutów do zachowania.Pamiętaj jednak, że ta składnia prawdopodobnie nie jest obsługiwana w innych Uniksach. Alternatywą może być użycie
--times
parametru,rsync
który powinien być dostępny w większości instalacji.źródło
-p
nie jest poprawną odpowiedzią.-p
zachowuje również własność i tryb. Którego może nie chcieć .. i nie zadawano tego pytania.Istnieją trzy razy w systemie plików Unix, czas dostępu (atime), czas modyfikacji (mtime) i czas zmiany i-węzła (ctime). Możesz na przykład zmienić czas dostępu i czas modyfikacji za pomocą programu dotykowego
Nie można jednak zmienić czasu zmiany i-węzła.
źródło
Ostatnio musiałem zrobić coś podobnego, ale zamiast tego użyć dowiązania symbolicznego. Aby utworzyć dowiązanie symboliczne i zachować oryginalny znacznik czasu:
cp -ps src_file dst_symlink
źródło