robocopy 賞賛スレ
背景
自宅マシンから会社設置のニューマシンへ、すごく大量のデータをコピーしています。
robocopyはログがうるさいほど出るので、とりあえず途中で不安にならなくてすむ。OS標準コマンドなので、定番オプションをおぼえれば安心
(Jan.11,2022 20:31)
robocopy (コピー元) (コピー先) (オプション)
- コピー元=コピー先で同じ階層になるように書く(cp とか mv の感覚でやると階層が一つ浅くなってしまうので注意)
- /E … サブディレクトリ以下もコピー
- /MOVE … 移動する
- /MIR … ミラーリング(つまり削除もする)
(Jan.11,2022 21:33)
robocopy、最後にコピーしたファイル数とかバイト数、速度とかの統計情報を出してくれる。これ、小規模コピーの時はウザイと思っていたが、何時間もかかる大規模コピーの時は結構参考になるな
(以下は自宅から会社のPCに、リモートデスクトップの共有フォルダー越しにファイルを移動した時のもの)
(Jan.12,2022 9:16)
無線LAN + sshトンネル + リモートデスクトップのファイル共有上の robocopy なので、すごく遅い。あと、細かいファイルがたくさんあるので、OPEN/CLOSEコストも大きいのだろうと思う。zip で固めて向こうで展開でも、OPEN/CLOSEの回数変わらんはずだしな…
(Jan.12,2022 9:18)
robocopy すげぇ
ssh トンネルが切れて、ネットワークパスがアクセスできなくなっても、30秒ごとにリトライを繰り返してやがる。
そして、1時間後、ssh トンネルをつなぎ直したらコピーを再開しやがった!
(Jan.12,2022 22:29)
これ、俺が実装したら、普通に if err != nil { return err } して、エラー終了してるわ
(Jan.12,2022 22:33)
この robocopy の実に堅い挙動って、どことなく、IBM、Oracle 的なものを感じる。このなんとしても、くじけず復旧させるぞ文化はメインフレーム由来である気がする。間違っても UNIX 的ではない
(Jan. 12,2022 23:32)
しかし、しばらく走らせてたら、4GBほどのVMイメージファイルのコピーで CPUパワーかネットワークの帯域を食いすぎて、他のリモート操作がまったくできなくなった。一旦やめて、夜中に続きやろう
(帯域制御とかのオプションもあるみたいだけど、業務時間中無理してやるほどでもないだろう)
(Jan. 13,2022 13:31)
あとでよむ
ネットワーク負荷をかけずにデータを転送する(robocopyでの帯域制御)
(Jan 13,2022 13:46)
robocopy の /create オプション、0バイトのファイルとディレクトリの作成のみか。とある用途に使えそうだ
(Jan.13,2022 18:16)
(ここからリアルタイム)
現状、自宅 → ssh トンネル → リモートデスクトップ → コマンドプロンプト → robocopy \\tsclient\C\..コピー元 C:\..コピー先
でコピーしてる。
これやると、帯域を圧迫しすぎるのか、リモートデスクトップ先の応答がすごく悪くなって、1分に1操作くらいしか伝わらないw
- リモートデスクトップのファイル共有機能経由ではなく、ssh トンネルの上に Windows のファイル共有プロトコルの経路を作る
- robocopy の利用帯域を下げる
- これ、計算がややこしい。1ブロックごとに何ms休むかという形式だから。現状、146KB/秒で1ブロック=1MBだから、10秒に1度しか休めない。ブロックを64KBに変えれば2秒に1度の休み時間か。500msくらいでいいかな
- DropBox 経由で移動
- ハードディスクを持ち運ぶ
- 会社にゆくのヤダ
2022/01/13 20:46:52 エラー 5 (0x00000005) コピー先ディレクトリにタイムスタンプを追加しています C:\Users\zetamatta\Documents\tmp\Roaming\Microsoft\Windows\Start Menu\プログラム\
アクセスが拒否されました。
30 秒間待機しています... 再試行しています...
うーむ。こちらは、壊れたPCの内蔵SATAディスクを SATA→USBアダプタ経由でつなぎ、中身のデータをローカルの内蔵ディスクにコピーしていた時に出たもの( robocopy Roaming ~"\Documents\tmp\Roaming" /E /MOVE
)
[Robocopy] ERROR 5 (0×00000005) Changing File Attributes アクセスが拒否されました。 | mkoba のお部屋 : DREAMHIVE Staff Blog に従って、属性をコピーしないよう
robocopy Roaming ~"\Documents\tmp\Roaming" /E /MOVE /COPY:DT
でやってみたところ、とりあえずうまく処理しているかのように見えている。。。