コンテンツへスキップ

ロボコピー(ROBOCOPY)でバックアップするときの覚書

こんな感じの要件を満たしたい。

ロボコピー(ROBOCOPY)でバックアップする。

Robocopy

rpbocopy を使ってみました。

robocopy

コマンドの構文

ROBOCOPY コピー元 コピー先 [ファイル [ファイル]…] [オプション]

ファイルを指定しなければ、フォルダがコピーの対象になる。
※目的のフォルダへのパスに空のフォルダ(ファイルが含まれない)があると、コピーされずに止まるので「/e」オプション(空のフォルダもコピーする)を指定する。

オプション

よく使っているものをヘルプから抜粋。

/E
:: 空のディレクトリを含むサブディレクトリをコピーします。

/PURGE
:: 既にコピー元に存在しないコピー先のファイル/ディレクトリを削除します。

/MIR
:: ディレクトリ ツリーをミラー化します (/E および /PURGE と同等)。

/L
:: リストのみ – いずれのファイルにも、コピー、タイムスタンプの追加、または削除を実施しません。

/R:n
:: 失敗したコピーに対する再試行数: 既定値は 1,000,000。
/W:n
:: 再試行と再試行の間の待機時間: 既定値は、30 秒です。

/NP
:: 進行状況なし – コピーの完了率を表示しません。

/LOG:ファイル
:: ログ ファイルに状態を出力します (既存のログを上書きします)。
/LOG+:ファイル
:: ログ ファイルに状態を出力します (既存のログ ファイルに追加します)。

/TEE
:: コンソール ウィンドウとログ ファイルに出力します。

ローカル環境でテスト

robocopy <source> <destination> <file> [<options>]

robocopy^
 "C:\Users\Administrator\Desktop\wallpapers"^
 "C:\Users\Administrator\Desktop\test"^
 "wallpaperbetter - 2021-04-27T213837.237.jpg"

wallpapers フォルダ → test フォルダへ「wallpaperbetter – 2021-04-27T213837.237.jpg」ファイルをコピーする。(オプション指定は無し。)

ネットワーク経由でコピーする為の準備。

お互いにHOSTS ファイルに相手のIP を記述して、名前解決できるように設定する。

ソースサーバー

ターゲットサーバー

ターゲットサーバー側で、コピー先のフォルダに共有をかけておく。
(共有するロールなどを指定してアクセス権を設定する。)
C ドライブとかに共有設定してもいいと思います。

ソースサーバーからアクセスできる。

サーバー間でコピー

丸ごと同期なので、/mir で。あとログ出力も設定した。

ファースト書き込みについては、いきなり「/mir」を使用して指定が反対だったりしたら、全部消えるので「/e」の方がいい。
また「/l」でテストできるので、テストもした方がいい。

robocopy^
 "C:\Users\Administrator\Desktop\wallpapers"^
 "\\wc1202.co.jp\test"^
 /w:0 /r:0^
 /mir^
 /zb^
 /log:test.log

コピーできてる

コピーを実行した時に認証で引っかかるようなら、
robocopy を実行する前に(そのコマンドプロンプトで)「net use」を実行して、認証が済んだ状態にしておく。

エラー例:

エラー 1326 (0x0000052E) コピー元のファイル システムの種類を取得しています \\***\
ユーザー名またはパスワードが正しくありません。

net use を実行して認証してからrobocopy を実行する。

net use "コピー先(またはコピー元)" /user:権限のあるユーザー パスワード

参考:robocopyでユーザIDとパスワードが必要な共有フォルダに接続する方法

ログもイイ感じ。

ズレているのは英語表記にするといいらしい。

Code Page Identifiers

chcp 65001

ただ、英語読めないと、何が起きているかもわからないという。

ログについて

/tee をつけると、ログファイルへの書き込みつつ、コマンドプロンプトでも表示されます。

新しくコピーされる。

見当たらないから削除される。

下記の表記は、先頭の数字がファイル数で、後ろがそのパス。

7	C:\Users\unimoni\AppData\Local\AMD\CN\

フォルダを除外するオプション

/XD ” フォルダ名 ”

例:ユーザーフォルダ丸ごとバックアップ。でも「OneDrive」のフォルダは除外する。

D:\>robocopy C:\Users\unimoni unimoni_221128_3510 /r:0 /w:0 /mir /xd "OneDrive" /log:D:\copy.log

参考:

https://learn.microsoft.com/ja-jp/windows-server/administration/windows-commands/robocopy

robocopy – 個人的によく使うオプションメモ

https://n-archives.net/software/robosync/articles/robosync-tips-option-l/

その他のファイル操作系のコマンド

copy

https://learn.microsoft.com/ja-jp/windows-server/administration/windows-commands/copy

rmdir , rd

https://learn.microsoft.com/ja-jp/windows-server/administration/windows-commands/rmdir

削除

ディレクトリを削除します。

RMDIR [/S] [/Q] [ドライブ:]パス
RD [/S] [/Q] [ドライブ:]パス

    /S      指定されたディレクトリに加えて、そのディレクトリ内のすべての
            ディレクトリとファイルを削除します。ディレクトリ ツリーを削除
            するときに使用します。

    /Q      /S を指定してディレクトリ ツリーを削除するときに、確認の
            メッセージを表示しません。(QUIET モード)

ファイルだとdel

C:\Windows\system32>del /?
ファイル (複数可) を削除します。

DEL [/P] [/F] [/S] [/Q] [/A[[:]属性]] 名前
ERASE [/P] [/F] [/S] [/Q] [/A[[:]属性]] 名前

  名前          ファイルまたはディレクトリ (複数可) の一覧を指定します。
                複数のファイルを削除するときはワイルドカードを使用します。
                ディレクトリが指定されたときはディレクトリ内のすべてのファ
                イルは削除されます。

  /P            各ファイルを削除する前に確認のメッセージを表示します。
  /F            読み取り専用ファイルを強制的に削除します。
  /S            指定されたファイルをすべてのサブディレクトリから削除します。
  /Q            ワイルドカードを使用して一括削除するときに、確認のメッセージ
                を表示しません。(QUIET モード)
  /A            属性により削除するファイルを選択します。
  属性          R  読み取り専用            S  システム ファイル
                H  隠しファイル            A  アーカイブ
                I  非インデックス対象ファイル  L  再解析ポイント
                -  その属性以外

コマンド拡張機能を有効にすると、DEL と ERASE は次のように変更されます:

/S スイッチの表示形式が逆になり、見つからなかったファイルではなく
削除されたファイルだけが表示されるようになります。

rename

https://learn.microsoft.com/ja-jp/windows-server/administration/windows-commands/rename

C:\Windows\system32>rename /?
ファイル (複数可) の名前を変更します。

RENAME [ドライブ:][パス]ファイル名1 ファイル名2
REN [ドライブ:][パス]ファイル名1 ファイル名2

ファイル名2 には新しいドライブもパスも指定できないので注意してください。

以上です。

(Visited 3,350 times, 1 visits today)
タグ:

コメントを残す

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