cp
を使用してある場所から別の場所にファイルをコピーした場合、コピーしたファイルのタイムスタンプはコピーした時刻に設定されます。
これを回避する方法はありますか?
タイムスタンプを変更せずにファイルをコピーする必要があります。
cp -p
がうまくいきます。 Linuxの場合 :
-p
は--preserve=mode,ownership,timestamps
と同じ
-p
コピー内の各ソースファイルの次の属性を変更します。アクセス許可で許可されている場合は、変更時刻、アクセス時刻、ファイルフラグ、ファイルモード、ACL、ユーザーID、グループID.
そしてOS Xの:
-p
パーミッションで許可されているように、コピー内の各ソースファイルの次の属性を変更時間、アクセス時間、ファイルフラグ、ファイルモード、ユーザーID、およびグループIDとして保持します。リソースフォークを含むアクセス制御リスト(ACL)と拡張属性(EA)も保持されます。
GNU Coreutils からcp
を使用する場合、ユーザーID、グループID、ファイルモードなどの属性ではなくタイムスタンプのみを保持するために、明示的に--preserve
保存する属性のリストを指定します。
cp --preserve=timestamps source destination
ただし、この構文は他のUnicesではおそらくサポートされないことに注意してください。別の方法として、rsync
の--times
パラメーターを使用する方法があります。これは、ほとんどのインストールで使用可能です。
Unixファイルシステムには、アクセス時間(atime)、変更時間(mtime)、およびiノード変更時間(ctime)の3つの時間があります。タッチプログラムを使ってアクセス時間と修正時間を変更することができます。
cp元のコピー touch -r元のコピー
ただし、iノード変更時刻を変更することはできません。
私は最近似たようなことをする必要がありましたが、代わりにシンボリックリンクを使用しました。シンボリックリンクを作成して元のタイムスタンプを保持するには、次のようにします。cp -ps src_file dst_symlink