最終更新時刻を変更せずにUnixでファイルをコピーするには?
cpを使ってあるファイルをある場所から別の場所にコピーすると、コピーしたファイルのタイムスタンプがコピーした時間に設定されてしまいます。
_これを回避する方法はありますか? _
タイムスタンプを変更せずにファイルをコピーする必要があります。
cpを使ってあるファイルをある場所から別の場所にコピーすると、コピーしたファイルのタイムスタンプがコピーした時間に設定されてしまいます。
_これを回避する方法はありますか? _
タイムスタンプを変更せずにファイルをコピーする必要があります。
cp -pでうまくいきます。Linuxの場合](http://www.unix.com/man-page/Linux/1/cp/).
-p--preserve=mode,ownership,timestampsと同じ FreeBSDの場合 .
-pcp がコピー内の各ソースファイルの以下の属性を保持するようにします: 変更時間、アクセス時間、ファイルフラグ、ファイルモード、ACL、ユーザ ID、グループ ID。
と OS X の場合 。
-pcp がコピー内の各ソースファイルの以下の属性(変更時間、アクセス時間、ファイルフラグ、ファイルモード、ユーザ 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 パラメータを使用することができます。