タイムスタンプだけをコピーする方法または「cp -pを使用する必要がありますか?」

タイムスタンプだけをコピーする方法または「cp -pを使用する必要がありますか?」

私は愚かなことに多くのデータをコピーして使用しましたcp -r

今見たらファイル修正時間を逃したという意味だと気づきました。私しなければならない使用されるcp -rp

私のディレクトリ構造とファイルは変更されていません。今すぐプロパティ/タイムスタンプをコピーする方法はありますか?私の考えにはrsync効果があると思います。

答え1

これは私にとってうまくいきます。

rsync -vrt --size-only /src /dest

/src正しいタイムスタンプがあるフォルダーです。/destフォルダファイルは、/ srcフォルダファイルの変更時間を取得します。生成時間は同じままです。

この--size-onlyコマンドはサイズによってファイルのみを比較するため、デフォルトでは違いはありません。-tタイムスタンプにコピーします。

答え2

findを使用してこれを行うことができますtouch

cd destination
find -depth -exec touch -r /path/to/source/{} {} \;

この-depthオプションは、ディレクトリの内容が設定された後にディレクトリが設定されるタイミングをスケジュールします。これは、引数の部分文字列の場合に補間findすると仮定します。{}そうでない場合は、シェルを呼び出します。

find -depth -exec sh -c 'for x; do touch -r "$0/$x" "$x"' /path/to/source {} +

アクセス時間をコピーするには、touch -a …以下も実行してください。

find -depth -exec touch -a -r /path/to/source/{} {} \; -exec touch -r /path/to/source/{} {} \;

関連情報