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

<p>если я копирую какой-то файл из одного места в другое, используя <code>cp</code>, отметка времени в скопированном файле устанавливается равной времени копирования.</p><p><strong><em>есть ли способ избежать этого?</em></strong></p><p>мне нужно копировать файлы без изменения их отметок времени.</p>

<p><code>cp -p</code> делает свое дело. <a href="http://www.unix.com/man-page/linux/1/cp/">для linux</a> :</p><blockquote> <p><code>-p</code> такой же, как <code>--preserve=mode,ownership,timestamps</code></p> </blockquote><p> <a href="http://www.unix.com/man-page/freebsd/1/cp/">для freebsd</a> :</p><blockquote> <p><code>-p</code> заставляет cp сохранять следующие атрибуты каждого исходного файла в копии: время изменения, время доступа, флаги файла, режим файла, acl, идентификатор пользователя и идентификатор группы, как разрешено разрешениями.</p> </blockquote><p>и <a href="http://www.unix.com/man-page/osx/1/cp/">для os x</a> :</p><blockquote> <p><code>-p</code> заставьте cp сохранить следующие атрибуты каждого исходного файла в копии: время изменения, время доступа, флаги файла, режим файла, идентификатор пользователя и идентификатор группы, как разрешено разрешениями. списки контроля доступа (acl) и расширенные атрибуты (eas), включая ветки ресурсов, также будут сохранены.</p> </blockquote>

<p>при использовании <code>cp</code> из <a href="http://www.gnu.org/software/coreutils/manual/coreutils.html#cp-invocation">gnu coreutils</a> для сохранения только временных меток, а не атрибутов, таких как идентификатор пользователя, идентификатор группы или режим файла, существует длинная <code>--preserve</code>, которая позволяет явно указывать список атрибутов быть сохраненным.</p><pre><code>cp --preserve=timestamps source destination </code></pre><p>имейте в виду, что этот синтаксис, вероятно, не поддерживается другими unices. альтернативой может быть использование параметра <code>--times</code> параметра <code>rsync</code>, который должен быть доступен в большинстве установок.</p>

<p>в файловой системе unix три раза: время доступа (atime), время модификации (mtime) и время изменения inode (ctime). вы можете изменить время доступа и время модификации с помощью сенсорной программы, например</p><pre> cp orig copy touch -r orig copy </pre><p>однако вы не можете изменить время смены инода.</p>

<p>недавно мне нужно было сделать что-то подобное, но вместо этого использовать символическую ссылку. чтобы создать символическую ссылку и сохранить оригинальную временную метку: <code>cp -ps src\_file dst\_symlink</code></p>