こしあん
2024-11-23

フォルダやファイルのタイムスタンプごとコピーするrobocopy


6{icon} {views}

概要

HDDの入れ替えなどで、フォルダやファイルのタイムスタンプごとコピーしたいことがあったのでメモ

Windowsのファイルコピーだと、ファイルのタイムスタンプは保持してくれることが多いが、フォルダのタイムスタンプ(更新日時)は保持してくれない。HDDの入れ替え時にこれが置き換わってしまうと、だめなわけではないが、なるべく保持したかったので、ChatGPTに聞いたらrobocopyというコマンドでできるというのを知ったのでやってみた。

robocopy自体は特に別途インストールが必要なく、Windowsのコマンドプロンプトから使用できる。

関連

コマンド

Dドライブの全てをE:\SomeFolderディレクトリにコピーする

robocopy D: E:\SomeFolder /E /COPY:DAT /DCOPY:DAT /R:0 /W:0

マイネットワーク上にあるYOUR-NAS-NAME上にあるHomeの全てをE:\SomeFolderディレクトリにコピーする

robocopy \\YOUR-NAS-NAME\Home E:\SomeFolder /E /COPY:DAT /DCOPY:DAT /R:0 /W:0

結果

2024年11月にコピーしているのに、もとの7月にコピーしたタイムスタンプが保持されている。ファイルも当然保持されている。

解説

/COPY/DCOPYTオプションにより、タイムスタンプが保持される仕組み

  1. robocopy
    • 説明: Windowsのコマンドラインツールで、高機能なファイルおよびフォルダのコピーを行うために使用されます。標準のコピーコマンド(copyxcopy)よりも多くのオプションを提供し、信頼性の高いコピーが可能です。
  2. \YOUR-NAS-NAME\Home
    • 説明: コピー元のパスを指定しています。YOUR-NAS-NAME はNASデバイスのネットワーク名であり、その中の「Home」共有フォルダからデータをコピーします。
    • : \\MyNAS\Home
  3. E:\SomeFolder
    • 説明: コピー先のパスを指定しています。ローカルのEドライブにある「SomeFolder」フォルダにデータをコピーします。
    • 注意点: コピー先のフォルダが存在しない場合、自動的に作成されます。
  4. /E
    • 説明: サブディレクトリを含む全てのフォルダをコピーします。空のディレクトリも含まれます。
    • 用途: フォルダ構造を完全に維持したい場合に使用します。
  5. /COPY:DAT
    • 説明: コピーするファイルの属性を指定します。
      • D: データ
      • A: 属性(読み取り専用、隠しファイルなど)
      • T: タイムスタンプ(作成日時、更新日時)
    • 用途: ファイルの内容と基本的な属性を保持したままコピーする場合に使用します。
  6. /DCOPY:DAT
    • 説明: コピーするディレクトリの属性を指定します。
      • D: データ(ディレクトリ名)
      • A: 属性
      • T: タイムスタンプ
    • 用途: フォルダ自体の属性やタイムスタンプも保持したい場合に使用します。
  7. /R:0
    • 説明: コピーに失敗した場合の再試行回数を指定します。ここでは0回に設定されており、失敗した場合は再試行しません。
    • 用途: コピー処理を迅速に終了させたい場合や、特定のエラー処理を行いたい場合に有効です。
  8. /W:0
    • 説明: 再試行の間に待機する時間(秒)を指定します。ここでは0秒に設定されており、再試行時に待機しません。
    • 用途: 再試行を行う場合でも待機時間を最小限に抑えたい場合に使用します。


Shikoan's ML Blogの中の人が運営しているサークル「じゅ~しぃ~すくりぷと」の本のご案内

技術書コーナー

北海道の駅巡りコーナー


Add a Comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です