Если я копирую какой-то файл из одного места в другое с помощью cp
, отметка времени в скопированном файле устанавливается равной времени копирования.
Есть ли способ избежать этого?
Мне нужно копировать файлы без изменения их отметок времени.
cp -p
делает свое дело. Для Linux:
-p
же, как--preserve=mode,ownership,timestamps
-p
Заставить cp сохранить следующие атрибуты каждого исходного файла в копии: время изменения, время доступа, флаги файла, режим файла, ACL, идентификатор пользователя и идентификатор группы, как разрешено разрешениями.
И для OS X:
-p
Заставить cp сохранить следующие атрибуты каждого исходного файла в копии: время изменения, время доступа, флаги файла, режим файла, идентификатор пользователя и идентификатор группы в соответствии с разрешениями. Списки контроля доступа (ACL) и расширенные атрибуты (EAs), включая ветки ресурсов, также будут сохранены.
При использовании cp
из GNU Coreutils для сохранения только временных отметок, а не таких атрибутов, как идентификатор пользователя, идентификатор группы или режим файла, существует --preserve
которая позволяет явно указать список атрибутов, которые будут сохранены.
cp --preserve=timestamps source destination
Имейте в виду, что этот синтаксис, вероятно, не поддерживается другими Unices. Альтернативой может быть использование параметра --times
rsync
который должен быть доступен в большинстве установок.
В файловой системе Unix три раза: время доступа (atime), время модификации (mtime) и время изменения inode (ctime). Вы можете изменить время доступа и время модификации с помощью сенсорной программы, например
cp orig copy touch -r orig copy
Однако вы не можете изменить время смены инода.
Недавно мне нужно было сделать что-то похожее, но вместо этого использовать символическую ссылку.
Чтобы создать символическую ссылку и сохранить оригинальную временную метку: cp -ps src_file dst_symlink