- ベストアンサー
robocopyで2つのフォルダの同一性をチェック
こんにちは。 3TBほどのデータをバックアップ目的で外付けから外付けに写しています。 先日、こちらでrobocopyというものの存在を教えていただき、早速愛用しています。 このロボコピーで2つのフォルダが同じ内容であるかチェックするにはどうすればいいのでしょうか? /MIRを実行して、ズラーっと流された場合、 それは内容も同じだとチェックもされていると考えてもいいのでしょうか? 全てのデータが破損なくきちんとコピーされているかを、チェックしたいと思っています。 よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>全てのデータが破損なくきちんとコピーされているかを、チェックしたいと思っています。 何らかのエラーがあれば、ログに出ますので、エラー件数が0であれば大丈夫です。 それを離れて、一般論として、 >2つのフォルダが同じ内容であるかチェック ということであれば、 http://sourceforge.jp/projects/sfnet_mute-net/downloads/sha1sum/Command%20Line%20Tool/sha1sum.exe/ から、sha1sum をダウンロードして、コマンドプロンプトで (for /f "delims=" %F in ('dir /a-d /s /b D:\srcdir') do @sha1sum "%F") > srcdir.txt (for /f "delims=" %F in ('dir /a-d /s /b E:\dstdir') do @sha1sum "%F") > dstdir.txt のように、チェックサムのファイルを作って、比較する。 ファイルを全部読むので時間がかかります。 カジュアルには、 dir /s D:\srcdir > srcdir.txt dir /s E:\dstdir > dstdir.txt の比較で、サイズと日時の一致だけ調べれば速いです。 いずれの比較でもエディタなどで D:\srcdir と E:\dstdir の部分を一致するように置換してから比較します。
その他の回答 (3)
- notnot
- ベストアンサー率47% (4900/10358)
No3です。 >ログで「不一致」の項目が割りと出てきます。 「不一致」はエラーじゃないので、「失敗」の欄が0件であれば大丈夫です。
お礼
ありがとうございます。 失敗意外はOKなんですね。 安心いたしました。
- kteds
- ベストアンサー率42% (1882/4440)
次のいずれかの方法ではどうでしょうか。 方法1 robocopy のlogファイルで確認する。 これでじゅうぶんだと思いますが満足できないならば、 方法2 powershell のcompareコマンドレット(いわゆる diff コマンド)を使用する。 マイクロソフトの説明サイト参照。 「Compare-Object コマンドレットの使用」 https://technet.microsoft.com/ja-jp/library/ee156812.aspx 方法3 isoイメージに変換してハッシュチェックする。 マイクロソフトの説明サイト参照。 「ファイル チェックサム整合性検証ユーティリティの説明」 http://support2.microsoft.com/default.aspx?scid=kb;ja-jp;841290
お礼
ログ・ファイルというのは最後に出てくるやつですね。 必ず幾つかは不一致というのが出てきます。 また、以前別のソフトでコピーしたデータもかなりあるので、 その分もきちんとチェックしておきたいと思います。 なぜそれほどチェックにこだわるかというと、 コピー中にかなりのエラーが起こっているからです。 エラーについて少し詳しく書いておきます。 コピーは、 外付け→USB→Windows→USB→別の外付け という流れでやっています。 そのせいかどうかはわかりませんが、 コピー中に一時中断して、エラーメッセージが出て、 外付けをつないだときに出てくる 「タップしてどうするか選択してください」 メッセージがでてきてしばらくしてコピー再開という流れになります。 ちなみにそのメッセージは以前別のソフトを使ってコピーしていたときに出てきました。 「指定されたパスが見つかりません」というメッセージです。 robocopyの場合はメッセージなしにそのまま再開です。 この一時中断は、別のソフトを使っている時に比べて、 ロボコピーを使った場合は、その発生頻度が格段に落ちました。 ちょうど、その一時停止の発生頻度が落ちたのと同じようにエラーの数も劇的に減りました。 それでもやはり、「不一致」の項目が必ず出てきますので、 もう一度正確にチェックをしておきたいと考えています。 もちろん、不一致だけ再度コピーできれば良さそうですが、 なんとなく難しそうです。 (全く根拠がなくてすみません。) 回答を読ませていただいた限り、2の方法が便利なように感じました。 これから少し調べてみます。 回答どうもありがとうございました。
- maesen
- ベストアンサー率81% (646/790)
robocopy自体にはベリファイ機能が無いので、ファイルの中身の同一性は保証されないと思います。 完全に保証されるかまではわかりませんが、 verifyコマンドにてベリファイをonにしてrobocopyを実行すればベリファイが働くと思いますので完全性がある程度担保できるのかなと思います。 verifyコマンドにてベリファイをonにした場合、パフォーマンスに影響が出ると思いますがどのくらいまで低下するかは測ったことがありません。 ファイルコピーのツールによってはハッシュをチェックすることで完全性をチェックするものもあるようなので、そちらのほうも確認されてはいかがでしょうか。
お礼
robocopyはコピー専門に考えたほうが良さそうですね。 ハッシュチェックの方向性も探ってみます。 どうもありがとうございました。
お礼
回答有難うございます。 「指定されたパスが見つかりません」 「指定されたネットワークリソース、またはデバイスは利用できません」 「30秒待機しています」 等の表示が出て、一時停止。 その後、外付けを接続したときに出る、 「タップして~~」 というメッセージの後に、コピー再開となります。 これが時々起こりまして、そのせいかどうかはわかりませんが、 ログで「不一致」の項目が割りと出てきます。 なので、全てチェックしたいと思っていますが、 この場合でもサイズと日時だけでOKでしょうか? それでよければとても早く済んでたすかります。