技術空間

Linux

タイムスタンプだけ保持してコピーする方法


TOP > Linux > タイムスタンプだけ保持してコピーする方法



■タイムスタンプだけ保持してコピーする方法

cpコマンドでファイルの属性(オーナー、グループ、パーミッション、日付)を保持してコピーしたい場合、pオプションを使用するが、 タイムスタンプのみ保持したい場合、preserveオプションを使用する。preserveオプションでは個別に保持したい属性を指定できる。 ロングオプションなので--perserveのように付加する。

manコマンドを見ればわかるようにpreserveオプションではmode、ownership、timestampsが指定可能。

--preserve[=ATTR_LIST]
      preserve the specified attributes (default: mode,ownership,timestamps), if possible additionals attributes:
      context, links, xattr, all

ちなみにpオプションは全てを指定したのと同等。(以下manコマンドの説明より)

-p    same as --preserve=mode,ownership,timestamps

さてタイムスタンプのみ保持する場合、実際のコマンド構文は以下になる。

cp --preserve=timestamps {コピー元} {コピー先}
サンプル
$ cp --preserve=timestamps sample.sh /file/system/bin

コピー先のファイルオーナ以外のユーザで実行すると下記エラーが発生するため、あらかじめオーナユーザにスイッチしておく必要がある。 なお下記エラーが発生しても、タイムスタンプを保持しない状態でファイルのコピー自体は実施されてしまっているので注意。

cp: preserving times for `/file/system/bin/sample.sh': Operation not permitted

ファイルをコピーした後、個別にタイムスタンプだけ同じにしたい場合はtouchコマンドでも可能

touch -r {コピー元} {コピー先}


TOP > Linux > タイムスタンプだけ保持してコピーする方法

Tweet ̃Gg[͂ĂȃubN}[Nɒlj
技術空間