web-dev-qa-db-ja.com

NTFS上のドライブ間でフォルダを移動し、タイムスタンプを保持します

申し訳ありませんが、私はこれを知っています初心者の質問のように。しかし、真剣に、私は経験豊富な開発者であり、Windows 7 Pro 64ビットなどが「ああ、NTFSツリーをあるドライブから別のドライブに移動すると、子ファイルを書き込むときに、それは本当に意味する」と言うことを理解しています。親フォルダを変更しているので、タイムスタンプを更新します。」そのため、すべての宛先ファイルのタイムスタンプは元のファイルと同じになりますが、すべてのフォルダーの日付と時刻は同じになります。

だから私は何が起こっているのか理解しています。また、NTFSでファイルをコピー/移動するための独自のユーティリティ(私が持っている)を作成できることも知っています。ただし、ユーティリティにはリスクが伴います--- NTFSに対応していない場合、他のプロパティを無視したり、NTFS代替データストリーム(ADS)などを見逃したりする可能性があります。

では、ツリーのallを移動し、タイムスタンプを維持するだけの、NTFS対応の優れたツリー移動ユーティリティを知っている人はいますか?私は何かを失う危険を冒したくありません。ありがとう。

12
Garret Wilson

Helge Kleinの回答からヒントを得て、私は Robocopy をさらに詳しく調べました。 Robocopy(Windows 7に付属しているものなどの最新バージョン)は、コピーされたフォルダー構造のタイムスタンプを実際に複製できることがわかりました。コピー後にソースディレクトリを削除する「移動」オプションもありますが、Microsoftの無限の知恵では、これは「ディレクトリのタイムスタンプを保持する」オプションと互換性がないため、コピー後にソースツリーを削除する必要があります。

コマンドライン引数オプションは気が遠くなるようなものです。私はいくつかの調査を行いましたが、Robocopyを使用して保存ディレクトリのタイムスタンプをコピーする基本的なコマンドは次のとおりです。

robocopy %1 %2 /e /dcopy:T

...どこ %1はソースディレクトリで、%2は宛先ディレクトリです。

NTFSセキュリティ、所有者、監査権限を含むすべてすべてを確実にコピーする場合は、すべての属性をコピーするように指定し、次のようにバックアップモードを使用します。

robocopy %1 %2 /b /e /copyall /dcopy:T

ただし、これらの追加オプションを使用するには、(管理者アカウントだけでなく)完全な管理者権限が必要になります。たとえば、Startをクリックし、Command Promptを右クリックして、次に、管理者として実行を選択します。次に、上記のコマンドを入力します。

P.S. RobocopyがNTFSストリームも転送することを確認しました。

17
Garret Wilson

SynchronizeItは、Nice GUIを備えたRobocopyと同じように、コピーするファイルを簡単に確認して選択するオプションを備えています。 http://www.grigsoft.com/wndsync.htm

(ただし、このツールが何らかの理由で宛先ファイルを破損する非常にまれなケースがあります。ダウンロードマネージャー、特にFlashGetとOrbit Downloaderでダウンロードされたファイルで発生し、最初の25kbのみが正しくコピーされ、残りはゼロで埋められました。説明がわかりません。Robocopyが同じようにまれに失敗することもあります。類似したファイル名で混乱し、一方のファイルを他方のファイルではなくコピーしたため、もう一方のファイルを見逃してしまいました。そのため、常に確認する必要があります。 Total CommanderまたはWinMergeを使用すると、コピーは完璧です。)

2
Gabriel

robocopyをお勧めするつもりでしたが、シナリオを試してみると、コピーされたディレクトリが新しい場所に残っていることがわかりました(驚いたことに)あなたが説明した日付。

Total Commander 一方、ディレクトリのタイムスタンプもコピーします。

2
Helge Klein