- ベストアンサー
差分ファイルだけ別フォルダに保存したい
ファイルのバックアップをWindowsのコマンドを使って行いたいと思っています。元フォルダAとミラー先フォルダBの差分ファイルだけをディレクトリを作りながらフォルダCの下にコピーをしたいのですが、xcopyやrobocopyでこのような処理ができるようにコードを教えてください。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (2)
- HohoPapa
- ベストアンサー率65% (455/693)
そもそもやりたいことは、 差分を時系列に保存したいということですか? ■2月8日 Aフォルダーに 1.txt 2.txt 3.txtがある。 これをごっそり、 Dir0フォルダーに複写する ■2月9日 1.txt の中身を書き換えた。 4.txt を新たに追加した そこで Dir1フォルダーに 1.txt 4.txt を複写したい。 ■2月10日 1.txt を削除した 2.txt の中身を書き換えた。 3.txt の中身を書き換えた。 そこで、 Dir2フォルダーに 2.txt 3.txt を複写したい。 このように、差分を時系列に保存したいということであれば、 RoboCopyの /M や、/Aのオプション(アーカイブ属性)を使い、 実行の都度、 出力先フォルダーを変更して実行すればいいだろうと思います。
お礼
HohoPapaさん ご指摘の通りです。 これを日々の日付を入れて、コピー元とコピー先の差分を別フォルダにコピーできるコードを教えていただけますとありがたいです。 タスクにバッチプログラムを登録して毎日深夜に起動させたいと思います。10回目のフォルダの情報を削除するイメージで、リネイムで1回ずつ古い名前に変更して、新しいフォルダを追加する形に出来ればと思います。
- HohoPapa
- ベストアンサー率65% (455/693)
差分といった場合 ・フォルダーAにあって、フォルダーBに無い ・フォルダーBにあって、フォルダーAに無い ・双方にあるものの、タイムスタンプが異なる といったファイルが対象になるものと思います。 ともあれ、 OS標準のXCOPY、ROBOCOPYだけでは実現できないと思います。 OS標準の機能だけで、という条件となると、 ちょと手間ですし、現実的かどうか相当怪しいですが 次のような手順はどうでしょうか? (1)フォルダーBを丸ごと複写してフォルダーBxを作成する (2)RoboCopyで、フォルダーAとフォルダーBxを同期しながら ログを取得する。 robocopy フォルダーAx フォルダーBx > d:\hogelog.txt (3)d:\hogelog.txtをメモ帳、あるいはエクセルで加工し 対象ファイルたちを所定のフォルダーに複写するための copyコマンド羅列のbatファイルを作成し (4)このBATファイルを実行する。 私に同じ要求が起きたらVBAを使います。
お礼
回答ありがとうございます。 いただきましたアイデアのハードルが高そうなので、下記のような構成を考えてみました。これで合っていれば、コードになるとありがたいと思います。 rem 玉突きバックアップのアイデア rem バックアップ元A→バックアップ先B robocopy /mir rem 差分10フォルダを削除 rem バックアップ先B→最近のファイルフォルダ xcopy /d:○○-○○-○○ rem 差分9を差分10にリネイム rem 差分8を差分9にリネイム rem 差分7を差分8にリネイム rem 差分6を差分7にリネイム rem 差分5を差分6にリネイム rem 差分4を差分5にリネイム rem 差分3を差分4にリネイム rem 差分2を差分3にリネイム rem 差分1を差分2にリネイム rem 最近のファイルフォルダを差分1にリネイム rem 最新のファイルフォルダを作成
お礼
ありがとうございます。 下記のコードで上手くできました。 RD wk05 /s /q Ren wk04 wk05 Ren wk03 wk04 Ren wk02 wk03 Ren wk01 wk02 MD wk01 robocopy C:\Users\User\Desktop\wk\wk00 C:\Users\User\Desktop\wk\wk01 /M /S pause