最終更新時刻を変更せずにUnixでファイルをコピーするには?
cp
を使ってあるファイルをある場所から別の場所にコピーすると、コピーしたファイルのタイムスタンプがコピーした時間に設定されてしまいます。
_これを回避する方法はありますか? _
タイムスタンプを変更せずにファイルをコピーする必要があります。
cp
を使ってあるファイルをある場所から別の場所にコピーすると、コピーしたファイルのタイムスタンプがコピーした時間に設定されてしまいます。
_これを回避する方法はありますか? _
タイムスタンプを変更せずにファイルをコピーする必要があります。
cp -p
でうまくいきます。Linuxの場合](http://www.unix.com/man-page/Linux/1/cp/).
-p
--preserve=mode,ownership,timestamps
と同じ FreeBSDの場合 .
-p
cp がコピー内の各ソースファイルの以下の属性を保持するようにします: 変更時間、アクセス時間、ファイルフラグ、ファイルモード、ACL、ユーザ ID、グループ ID。
と OS X の場合 。
-p
cp がコピー内の各ソースファイルの以下の属性(変更時間、アクセス時間、ファイルフラグ、ファイルモード、ユーザ ID、およびグループ ID)を、パーミッションで許可されている通りに保持するようにします。アクセス制御リスト(ACL)とリソースフォークを含む拡張属性(EA)も保存されます。
ls -lu
で示されるように、ソースファイルの**アクセス時間(atime)が変更される可能性があることに注意してください。また、stat
やstat -x
を使用することで、データアクセス、データ変更、ファイルの状態変化の時間をきれいに表示することができます[macOSの場合は、明示的な書式設定で誕生時間を追加することができます]。
stat -f "%n%N%nAccess (atime): %Sa%nModify (mtime): %Sm%nChange (ctime): %Sc%nBirth (Btime): %SB%n" *
cp --preserve=timestamps source destination
この構文は他のUnicesではおそらくサポートされていないことに注意してください。別の方法としては、ほとんどのインストールで利用可能な --times
の rsync
パラメータを使用することができます。