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

Как скопировать файл в unix без изменения времени последнего изменения?

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

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

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

Ответы (4)

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

cp -p делает трюк. Для Linux :

-p так же, как --preserve=mode,ownership,timestamps Для FreeBSD :

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

И для OS X :

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

Обратите внимание, что это может/изменит время доступа к исходному файлу (atime), как показано в разделе ls -lu. Также, stat или stat -x могут быть использованы для хорошего отображения доступа к данным, изменения данных и времени изменения статуса файла, к которому для макросов время рождения может быть добавлено с помощью явного форматирования :

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

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

cp --preserve=timestamps source destination

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

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

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

cp orig copy touch -r orig copy

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

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

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

Похожие вопросы

10
37
7
14
5