これから書く内容は、個人的には、殆ど、出番がありません。
つまり、 複雑なオプションを付け、実行する迄、結果の真偽が不明! 等と言う事は 皆無に近いからです。
でも、知っていると便利な 手段 を、 ご紹介して置きましょう。
私が Robocopy を使う場合は、大抵、深い階層の ある程度の深さ を基準に ファイル操作 をします。
上の方のフォルダは、
System が管理していたり、 特殊なアクセス権を設定してあったり、 通常は弄れないものがあったり、 します。
触らぬ神に祟り無し ... ですね。
Robocopy は、元々、 Server メンテナンス を前提に設計してあります。 ある筈です。
Server では、公開する フォルダを用意し、その中に階層構造を作りますね。
つまり、ドライブをそのまま ユーザーに 丸投げ している訳ではない筈です。
基本的な維持管理は、専用のツール群が担当します。
つまり、上層階にあるフォルダに存在するシステム絡みのものは得手ではありません。
これ (Robocopy) を、一般の Client (PC) で利用すると、色々と、厄介な問題に直面します。
それを回避する目的で でしょうか、 様々なオプションが利用出来る様になっています。
除外 (/XD や /XF) や 空フォルダ内包有無 (/E と /S) 等は最たるものですね。
まぁ、 実際のオプション群は ヘルプや 検索を利用して貰う 事にして ... 。 っと。
お話を先に進めましょう。.
実際に、オプション /Move (or /Mov) を付けずに実行して見れば、結果は、一目瞭然!。
でも、膨大な数を有する基準フォルダだとしたら、 精査や確認が大変ですし、 問題発生時のリカバリも難題!。
そこで、転ばぬ前の杖。
コマンドラインの最後に、 おまじない を 三文字!。
" /L" です。 半角スペースに スラッシュ と 半角の L ( l ) です。
もし、膨大な数が対象なら、 /LOG:<LogFilePath> の記述も追加し、後からユックリと眺める事も出来ます。.
いざ OK となれば、 /L の文字を外して 実行すれば良いのです。
C:¥Users¥UserA¥Desktop>
C:¥Users¥UserA¥Desktop>Dir C:¥Users¥UserA¥Documents¥TMP¥TestRobocopy¥Test1
ドライブ C のボリューム ラベルは OS_Local です
ボリューム シリアル番号は 1234-5678 です
C:¥Users¥UserA¥Documents¥TMP¥TestRobocopy¥Test1 のディレクトリ
2016/05/25 22:19 <DIR> .
2016/05/25 22:19 <DIR> ..
2016/05/25 22:23 13 TestFileTimeStamp_1.txt
2017/05/30 12:34 2 TestFileTimeStamp_2.txt
2016/05/25 14:25 13 TestFileTimeStamp_3.txt
3 個のファイル 28 バイト
2 個のディレクトリ 107,207,397,376 バイトの空き領域
C:¥Users¥UserA¥Desktop>Dir C:¥Users¥UserA¥Documents¥TMP¥TestRobocopy¥Test2
ドライブ C のボリューム ラベルは OS_Local です
ボリューム シリアル番号は 1234-5678 です
C:¥Users¥UserA¥Documents¥TMP¥TestRobocopy¥Test2 のディレクトリ
2016/05/25 22:29 <DIR> .
2016/05/25 22:29 <DIR> ..
2016/05/30 22:19 2 TestFileTimeStamp_1.txt
2017/05/30 12:34 2 TestFileTimeStamp_2.txt
2016/10/30 12:00 2 TestFileTimeStamp_3.txt
3 個のファイル 6 バイト
2 個のディレクトリ 107,207,454,720 バイトの空き領域
C:¥Users¥UserA¥Desktop>
C:¥Users¥UserA¥Desktop>Robocopy C:¥Users¥UserA¥Documents¥TMP¥TestRobocopy¥Test2 C:¥Users¥UserA¥Documents¥TMP¥TestRobocopy¥Test1 TestFileTimeStamp_*.* /L
-------------------------------------------------------------------------------
ROBOCOPY :: Windows の堅牢性の高いファイル コピー
-------------------------------------------------------------------------------
開始: 2016年5月25日 22:31:31
コピー元 : C:¥Users¥UserA¥Documents¥TMP¥TestRobocopy¥Test2¥
コピー先 : C:¥Users¥UserA¥Documents¥TMP¥TestRobocopy¥Test1¥
ファイル: TestFileTimeStamp_*.*
オプション: /L /DCOPY:DA /COPY:DAT /R:1000000 /W:30
------------------------------------------------------------------------------
3 C:\Users¥UserA¥Documents¥TMP¥TestRobocopy¥Test2¥
新しい 2 TestFileTimeStamp_1.txt
新しい 2 TestFileTimeStamp_3.txt
------------------------------------------------------------------------------
合計 コピー済み スキップ 不一致 失敗 Extras
ディレクトリ: 1 0 1 0 0 0
ファイル: 3 2 1 0 0 0
バイト: 6 4 2 0 0 0
時刻: 0:00:00 0:00:00 0:00:00 0:00:00
終了: 2016年5月25日 22:31:31
C:¥Users¥UserA¥Desktop>
また、利用者がアクセス権の無いものは、実行が待機状態になり再試行が繰り返されます。
ソフトがファイルのハンドルを掴んで離さない場合に、 待期・再試行の間に、対策をする時間を確保する目的 でしょうね。
でも、元々、ユーザーにアクセス権が与えられていない特殊なものも在る訳で ... 。
その場合、Default の /R:1000000 /W:30 は永遠にも感じられます。 勿論、終わりは来るのですが。.
そこで、 この値を最低限のものに変えるのも、 よく見られる方法ですね。
勿論、バックアップ権限を利用する /B オプション なんてものが あったりしますが ... 。
最後に、断って置きます。
Robocopy の基本的な使い方は、 これらのオプションなしでも問題が生じない場所を対象に使う と言う事です。
実は、Robocopy のフロントエンドとして自作してあったプログラムを大幅に手を入れる羽目になりました。
OS 入れ替え等で 汎用かつ大量のデータ移動をする目的では 書いていなかった からです。
その時の参考にしたのが上の内容です。
個々のコマンドを手打ちで、それも、色々な事を考えながら行うのは タイプミスを誘発し易いですから。
ドライブやフォルダを指定するミスが減っても、 この手の作業では混乱が付き纏い、ケアレスミスが増える!。
データの移行は、それは、大変です!。.
0 件のコメント:
コメントを投稿