80

Если я копирую какой-то файл из одного места в другое с помощью cp , отметка времени в скопированном файле устанавливается равной времени копирования.

Есть ли способ избежать этого?

Мне нужно копировать файлы без изменения их отметок времени.

4 ответа4

93

cp -p делает свое дело. Для Linux:

-p же, как --preserve=mode,ownership,timestamps

Для FreeBSD:

-p Заставить cp сохранить следующие атрибуты каждого исходного файла в копии: время изменения, время доступа, флаги файла, режим файла, ACL, идентификатор пользователя и идентификатор группы, как разрешено разрешениями.

И для OS X:

-p Заставить cp сохранить следующие атрибуты каждого исходного файла в копии: время изменения, время доступа, флаги файла, режим файла, идентификатор пользователя и идентификатор группы в соответствии с разрешениями. Списки контроля доступа (ACL) и расширенные атрибуты (EAs), включая ветки ресурсов, также будут сохранены.

12

При использовании cp из GNU Coreutils для сохранения только временных отметок, а не таких атрибутов, как идентификатор пользователя, идентификатор группы или режим файла, существует --preserve которая позволяет явно указать список атрибутов, которые будут сохранены.

cp --preserve=timestamps source destination

Имейте в виду, что этот синтаксис, вероятно, не поддерживается другими Unices. Альтернативой может быть использование параметра --times rsync который должен быть доступен в большинстве установок.

11

В файловой системе Unix три раза: время доступа (atime), время модификации (mtime) и время изменения inode (ctime). Вы можете изменить время доступа и время модификации с помощью сенсорной программы, например

cp orig copy
touch -r orig copy

Однако вы не можете изменить время смены инода.

0

Недавно мне нужно было сделать что-то похожее, но вместо этого использовать символическую ссылку. Чтобы создать символическую ссылку и сохранить оригинальную временную метку: cp -ps src_file dst_symlink

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .