web-dev-qa-db-ja.com

作成/変更日に基づいてファイルをコピーする

コマンドラインからファイルをバックアップすることについて質問があります。オフィスには、数千のファイルとサブフォルダーを含む共有フォルダー(コンピューターの1つに保存されています)があります。これまで、私は毎朝(自動)完全バックアップを実行してきましたが、ほとんどのファイルが何日も変更されないため、これが最善の方法ではないことは明らかです。そこで、私は別のアプローチを取ることにしました-昨日作成されたファイルと変更されたファイルのみをバックアップします(バックアップは今日の朝に実行されると想定しているため、昨日)-そしてここに問題があります。

私はforfiles、xcopy、Robocopyを見てきました。これらはすべて、ファイルの「変更日」を扱っているようですが、「作成日」は扱っていません。したがって、たとえば、ユーザーが1週間前にデスクトップにファイルを作成し、それを昨日共有フォルダーにコピーした場合、このファイルはバックアップに含まれません。ファイルはコピーされ、「変更された日付」(この場合は1週間前)を保持し、「作成された日付」をコピーされた日付に変更します。つまり、昨日「作成された」ファイルを共有フォルダーで検索するためのバックアップが必要です。そして2番目の問題:ユーザーが自分のデスクトップでファイルを作成し、それを昨日共有フォルダーに移動(コピーされていない)した場合、「作成日」と「変更日」の両方が同じままになり、このファイルは変更されませんどちらかバックアップに含まれます。私は、ファイルがこの特定のフォルダーにコピー/移動されたときに、ファイルの作成日と変更日の両方を何らかの方法でWindowsに強制的に変更するか、現在の日付に変更するか(ただし、このアイデアはあまり好きではありません)、または次のように考えました。 Robocopyを使用して、その共有フォルダー内のすべてのファイル/フォルダーリストを作成し、次のバックアップを実行する前に、新しいリストを作成して前のリストと比較します。新しいファイルがある場合は、それらをバックアップに追加します。しかし、これまでのところ進展はありません。

したがって、上記の(できればネイティブの)ソリューションをいただければ幸いです。私たちのオフィスのすべてのPCは、Windows 7 Ultimatex64を実行しています。

よろしくお願いします。

1
stoyian0v

robocopyを使用してフォルダーをミラーリングするのに日付は必要ありません。 /MIRスイッチを使用できます。

Robocopyを使用して2つのディレクトリをミラーリングするコマンドの例:

Robocopy \\SourceServer\Share \\DestinationServer\Share /MIR /FFT /Z /W:5

使用したスイッチの説明:

  • /MIRは、Robocopyがソースディレクトリと宛先ディレクトリをミラーリングする必要があることを指定します。これにより、ファイルがソースで削除された場合、宛先のファイルが削除されます。
  • /FFTは、NTFSの代わりにファットファイルタイミングを使用します。これは、ファイルのタイミングが秒単位で完全に正確であることに依存しないように、粒度が少し低くなることを意味します。
  • /Zは、Robocopyが再起動する代わりに、ファイルの途中で大きなファイルの転送を再開できるようにします。
  • /W:5は、障害間の待機時間をデフォルトの30秒ではなく5秒に短縮します。
0
harrymc