Slide 1

Slide 1 text

7/28(月) Toranomon Tech Hub 第四回 真夏のIT怪談ナイト 〜ITにまつわる怖い話〜 robocopy の怖い話

Slide 2

Slide 2 text

自己紹介 2 ● 最近やっていた・いること ○ Terraform を用いた AWS リソース構築支援 ○ AWS Control Tower を用いたマルチアカウント環境での AWS Security Hub、Amazon GuardDuty 展開 ○ AWS リソース負荷軽減、構成検討 ○ コスト最適化アセスメント ○ Amazon QuickSight や Amazon Athena を利用した データ分析・可視化 ● 名前(ニックネーム) ○ 木谷 映見(emi) ● 部署 ○ クラスメソッド株式会社 ○ クラウド事業本部コンサルティング部 ● 趣味 ○ コーヒー、ドーナツ、サウナ、 ホットヨガ、漫画、音楽など AWS Certified Cloud Practitioner バ ッ ジ AWS Certified AI Practitioner バ ッ ジ AWS Certified Solutions Architect - Professional バ ッ ジ AWS Certified DevOps Engineer - Professional バ ッ ジ AWS Certified Advanced Networking - Specialty バ ッ ジ AWS Certified Machine Learning - Specialty AWS Certified Security - Specialty バ ッ ジ AWS Certified SysOps Administrator - Associate バ ッ ジ AWS Certified Developer - Associate バ ッ ジ AWS Certified Solutions Architect - Associate バ ッ ジ AWS Certified Data Engineer - Associate バ ッ ジ AWS Certified Machine Learning Engineer - Associate バ ッ ジ AWS Certified Cloud Practitioner バ ッ ジ AWS Certified AI Practitioner バ ッ ジ AWS Certified Solutions Architect - Professional バ ッ ジ AWS Certified DevOps Engineer - Professional バ ッ ジ AWS Certified Advanced Networking - Specialty バ ッ ジ AWS Certified Machine Learning - Specialty AWS Certified Security - Specialty バ ッ ジ AWS Certified SysOps Administrator - Associate バ ッ ジ AWS Certified Developer - Associate バ ッ ジ AWS Certified Solutions Architect - Associate バ ッ ジ AWS Certified Data Engineer - Associate バ ッ ジ AWS Certified Machine Learning Engineer - Associate バ ッ ジ 最近はカフェインを控えています

Slide 3

Slide 3 text

目次 3 ⚫ robocopy とは ⚫ robocopy で絶対に間違えてはいけない部分 ⚫ robocopy の怖い話 ⚫ AI は人間のミスを減らすか? ⚫ おわりに

Slide 4

Slide 4 text

robocopy とは 4 ⚫ robocopy とは ⚫ robocopy で絶対に間違えてはいけない部分 ⚫ robocopy の怖い話 ⚫ AI は人間のミスを減らすか? ⚫ おわりに

Slide 5

Slide 5 text

robocopy とは

Slide 6

Slide 6 text

6 ⚫ robocopy とは ⚫ Microsoft Windows に標準搭載されているファイル・フォルダのコピーツール ⚫ Robocopy | Microsoft Learn ⚫ https://learn.microsoft.com/ja-jp/windows-server/administration/windows- commands/robocopy ⚫ 主な用途 ⚫ バックアップ作業 ⚫ サーバー間のデータ移行 ⚫ 定期的なファイル同期 ⚫ 大容量データの安全な転送 robocopy とは

Slide 7

Slide 7 text

7 ⚫ robocopy コマンドの使い方 ⚫ X ⚫ X ⚫ x ⚫ 基本構文 ⚫ D:¥source: コピー元フォルダ ⚫ E:¥destination: コピー先フォルダ ⚫ /mir オプション ⚫ ミラーリング(完全同期)、コピー先をコピー元と完全に一致させる ⚫ コピー元にないファイル・フォルダはコピー先から削除される robocopy とは robocopy D:¥source E:¥destination /mir /copyall /r:3 /w:10 /log+:migration.log /tee

Slide 8

Slide 8 text

8 ⚫ robocopy コマンドの使い方 ⚫ X ⚫ X ⚫ x ⚫ /copyall オプション ⚫ すべての情報をコピー (データ、属性、タイムスタンプ、セキュリティ、所有者、監査情報) ⚫ ファイルサーバー移行時に最適 ⚫ /r:3 オプション ⚫ 失敗時のリトライ回数(3回まで再試行) ⚫ ファイルアクセス失敗時、ネットワークエラー時などの対策 robocopy とは robocopy D:¥source E:¥destination /mir /copyall /r:3 /w:10 /log+:migration.log /tee

Slide 9

Slide 9 text

9 ⚫ robocopy コマンドの使い方 ⚫ X ⚫ X ⚫ x ⚫ /w:10 オプション ⚫ リトライ間隔(10 秒間待機してから再試行) ⚫ ネットワーク負荷軽減、一時的な問題の回復待ち ⚫ /log+:migration.log オプション ⚫ 既存のログファイルへログを追加出力(migration.log に結果を追記) ⚫ コピー状況、エラー、統計情報 ⚫ 移行作業の証跡として必須 robocopy とは robocopy D:¥source E:¥destination /mir /copyall /r:3 /w:10 /log+:migration.log /tee

Slide 10

Slide 10 text

10 ⚫ robocopy コマンドの使い方 ⚫ X ⚫ X ⚫ x ⚫ /tee オプション ⚫ 画面とログファイル両方に出力(リアルタイムで進行状況を確認可能) robocopy とは robocopy D:¥source E:¥destination /mir /copyall /r:3 /w:10 /log+:migration.log /tee

Slide 11

Slide 11 text

11 ⚫ 例えば共有フォルダを移行したい場合 robocopy とは Client server01 server02 ネットワークドライブとして H、I、Jドライブが見えている状態にしたい Share_C(¥¥server01¥share_c)(J:) Share_B(¥¥server01¥share_b)(I:) Share_A(¥¥server01¥share_a)(H:) Share_C(¥¥server02¥share_c)(J:) Share_B(¥¥server02¥share_b)(I:) Share_A(¥¥server02¥share_a)(H:)

Slide 12

Slide 12 text

12 ⚫ 例えば共有フォルダを移行したい場合 robocopy とは Client server01 server02 ネットワークドライブとして H、I、Jドライブが見えている状態にしたい Share_C(¥¥server01¥share_c)(J:) Share_B(¥¥server01¥share_b)(I:) Share_A(¥¥server01¥share_a)(H:) Share_C(¥¥server02¥share_c)(J:) Share_B(¥¥server02¥share_b)(I:) Share_A(¥¥server02¥share_a)(H:) robocopy ¥¥server01¥Share_A ¥¥server02¥Share_A /mir /copyall /r:3 /w:10 /log:migration.log /tee まず UNC パスで robocopy

Slide 13

Slide 13 text

13 ⚫ 例えば共有フォルダを移行したい場合 robocopy とは Client server01 server02 server02 側の UNC パスで ネットワークドライブを 再割り当て Share_C(¥¥server01¥share_c)(J:) Share_B(¥¥server01¥share_b)(I:) Share_A(¥¥server01¥share_a)(H:) Share_C(¥¥server02¥share_c)(J:) Share_B(¥¥server02¥share_b)(I:) Share_A(¥¥server02¥share_a)(H:) robocopy ¥¥server01¥Share_A ¥¥server02¥Share_A /mir /copyall /r:3 /w:10 /log:migration.log /tee

Slide 14

Slide 14 text

14 ⚫ 例えば共有フォルダを移行したい場合 robocopy とは Client server01 server02 Server02 側の UNC パスで ネットワークドライブを 再割り当て Share_C(¥¥server01¥share_c)(J:) Share_B(¥¥server01¥share_b)(I:) Share_A(¥¥server01¥share_a)(H:) Share_C(¥¥server02¥share_c)(J:) Share_B(¥¥server02¥share_b)(I:) Share_A(¥¥server02¥share_a)(H:) robocopy ¥¥server01¥Share_A ¥¥server02¥Share_A /mir /copyall /r:3 /w:10 /log:migration.log /tee 実際には一気に robocopy を流すのは危険 • まず共有フォルダのリストを作成する • 共有フォルダ名が正しいか確認する • 共有フォルダを 1 つずつ robocopy する • 成功したか失敗したか判定する • 成功なら次のフォルダの robocopy に進む : : みたいなスクリプトを組みます

Slide 15

Slide 15 text

robocopy とは 15 ⚫ (補足)UNC パス ⚫ ネットワーク内のサーバーやプリンターなどのリソースを識別するための規格 ⚫ Unix コミュニティが発祥 ⚫ Windows では、コンピューター名の前に二重スラッシュかバックスラッシュを付ける ⚫ コンピューターのパスは単一のスラッシュ(/)かバックスラッシュ(¥)で区切る • UNCパスとは何か&使い方:https://jp.minitool.com/lib/unc-path.html server01 server02 Share_C(¥¥server01¥share_c)(J:) Share_B(¥¥server01¥share_b)(I:) Share_A(¥¥server01¥share_a)(H:) Share_C(¥¥server02¥share_c)(J:) Share_B(¥¥server02¥share_b)(I:) Share_A(¥¥server02¥share_a)(H:)

Slide 16

Slide 16 text

robocopy で絶対に間違えてはいけない部分 16 ⚫ robocopy とは ⚫ robocopy で絶対に間違えてはいけない部分 ⚫ robocopy の怖い話 ⚫ AI は人間のミスを減らすか? ⚫ おわりに

Slide 17

Slide 17 text

robocopy で絶対に間違えてはいけない部分

Slide 18

Slide 18 text

絶対に間違えてはならない場所があります 18 robocopy で絶対に間違えてはいけない部分

Slide 19

Slide 19 text

19 ⚫ 【コピー元フォルダ】と【コピー先フォルダ】を間違えると 大変なことになります ⚫ X ⚫ X ⚫ /mir オプションにより、コピー元とコピー先は全く同じ状態になる ⚫ コピー元とコピー先が逆だった場合、何もないコピー先の状態がコピー元に反映される ⚫ →コピー元のファイルが全部消える ⚫ インシデントを防ぐために必ず実施すること ⚫ 全く同じ仮想環境を作成し、まったく同じコマンドでコピーが成功するか確認する ⚫ 複数人でダブルチェックする robocopy で絶対に間違えてはいけない部分 robocopy D:¥source E:¥destination /mir /copyall /r:3 /w:10 /log+:migration.log /tee コピー元とコピー先が正しい robocopy コピー元とコピー先を間違えた robocopy File_A File_B File_C : コピー元 File_A File_B File_C : コピー先 コピー先 File_A File_B File_C : コピー元

Slide 20

Slide 20 text

20 ⚫ インシデントを防ぐために実施すること ⚫ まったく同じ仮想環境を作成し、まったく同じコマンドでコピーが 成功するか確認する ⚫ 複数人でダブルチェックする robocopy で絶対に間違えてはいけない部分

Slide 21

Slide 21 text

robocopy の怖い話 21 ⚫ robocopy とは ⚫ robocopy で絶対に間違えてはいけない部分 ⚫ robocopy の怖い話 ⚫ AI は人間のミスを減らすか? ⚫ おわりに

Slide 22

Slide 22 text

robocopy の怖い話

Slide 23

Slide 23 text

何が起こったか 23 robocopy の怖い話

Slide 24

Slide 24 text

24 ⚫ お客様拠点のオンプレミスサーバーをデータセンターの仮想サーバーに 移行するプロジェクトを行っていた ⚫ コピースクリプトを robocopy で作成していた ⚫ 以下のようにパスを変えてテストしていた ⚫ X ⚫ X ⚫ その時は急いでいなかった robocopy の怖い話 robocopy D:¥test¥source E:¥test¥destination /mir /copyall /r:3 /w:10 /log+:migration.log /tee

Slide 25

Slide 25 text

25 robocopy の怖い話 robocopy D:¥test¥source E:¥test¥destination /mir /copyall /r:3 /w:10 /log+:migration.log /tee D:¥ xxx test source1 source2 xxx xxx source1 source2 xxx server01 E:¥ xxx test source1 source2 xxx server02 robocopy テスト用の データ 本物の業務データ

Slide 26

Slide 26 text

26 robocopy の怖い話 休暇中に会社から電話が。 作業の都合でファイルサーバーのコピーを やりたいのですが、xx フォルダに入っている スクリプトを使えばいいですか? まあテストは大体できているから使っても 大丈夫だと思いますが… 事前にテストは実施してください。 あとパスのミスだけは絶対に気を付けてください。 構築部署の私 ※休暇中 運用部署の方 了解です。

Slide 27

Slide 27 text

27 robocopy の怖い話 翌日。 昨日コピーを始めてから新しいサーバーに フォルダが増えていないんですよね… ドライブ内の容量は増えているんですが なぬ 構築部署の私 ※出勤 運用部署の方

Slide 28

Slide 28 text

28 ⚫ 実行されていたスクリプト robocopy の怖い話 robocopy D:¥source E:¥test¥destination /mir /copyall /r:3 /w:10 /log+:migration.log /tee

Slide 29

Slide 29 text

29 robocopy の怖い話 robocopy D:¥source E:¥test¥destination /mir /copyall /r:3 /w:10 /log+:migration.log /tee D:¥ xxx test source1 source2 xxx xxx source1 source2 xxx server01 E:¥ xxx test source1 source2 xxx server02 本物の業務データが テストフォルダ配下に コピーされていた

Slide 30

Slide 30 text

30 ⚫ その後 ⚫ お客様に謝罪 ⚫ 間違えていないパスで再度 robocopy スクリプトを実施 ⚫ 間違えてコピーされたテストファイル、テストフォルダを削除 (100万回ダブルチェックの上実施) ⚫ 休日に最終差分コピー ⚫ ファイルサーバー切り替え robocopy の怖い話

Slide 31

Slide 31 text

31 ⚫ テストフォルダを作成するのではなく、完全に別の仮想サーバーを作成して 本番環境と全く同じパスでスクリプトを作成した方が良かった ⚫ 他部署担当者の「作業の都合で」の部分をよく確認すべきであった ⚫ 本当にスクリプトの作成者が休暇中、完成していないスクリプトを使って移行を実施せねば ならない事情があったのか ⚫ 常識だが、本番データ移行は要手順整備・チェックリスト作成のうえ、 ダブルチェックしながら行うべきであった ⚫ 急なスケジュール変更が発生する場合は作業もリスケするべき robocopy の怖い話

Slide 32

Slide 32 text

AI は人間のミスを減らすか? 32 ⚫ robocopy とは ⚫ robocopy で絶対に間違えてはいけない部分 ⚫ robocopy の怖い話 ⚫ AI は人間のミスを減らすか? ⚫ おわりに

Slide 33

Slide 33 text

AI は人間のミスを減らすか?

Slide 34

Slide 34 text

34 ⚫ AI は人間のミスを減らすか?※私個人の見解です ⚫ AI は人間の作業を手助けしてくれる。ミスを減らす手助けもしてくれる ⚫ 生成 AI は人間に似ている(優秀だが、ミスも起こす) ⚫ AI は責任を取れない ⚫ 作業判断は人間が行わなければならない世界がもう少し続くのではないか? ⚫ いずれ AI が人間よりはるかに賢くなった時、 「人間が理解できなくてもうまくいくからこれでいい」という パフォーマンス重視の世界がくる可能性がある ⚫ 【もう必要ない?】AIで都知事選を席巻した安野貴博(たかひろ)さんと “AI時代の言語化力”を徹底議論した – YouTube(25 分 37 秒あたり) ⚫ https://youtu.be/FokCbQre-T8?feature=shared&t=1537 AI は人間のミスを減らすか?

Slide 35

Slide 35 text

おわりに 35 ⚫ robocopy とは ⚫ robocopy で絶対に間違えてはいけない部分 ⚫ robocopy の怖い話 ⚫ AI は人間のミスを減らすか? ⚫ おわりに

Slide 36

Slide 36 text

おわりに

Slide 37

Slide 37 text

37 ⚫ 当初「robocopy の怖い話と IaC の怖い話」の 2 本立てでお送りしようと 思っていたのですが、納まりきらなかったので IaC の怖い話はこちらを ご覧ください。 おわりに CloudFormationで管理されたシステムの変更でエラー連発した話 - Speaker Deck https://speakerdeck.com/emiki/cloudformationdeguan-li-saretasisutemufalsebian-geng-deeralian-fa-sitahua

Slide 38

Slide 38 text

参考 38 ⚫ Robocopy | Microsoft Learn https://learn.microsoft.com/ja-jp/windows-server/administration/windows- commands/robocopy ⚫ [登壇レポート] Storage-JAWS #7 AWS Pi Day 2025直前スペシャル! 「Windows Server に FSx for NetApp ONTAP を iSCSI 接続してみた」という内容で登壇してきました #storagejaws #jawsug | DevelopersIO https://dev.classmethod.jp/articles/storage-jaws-7-aws-pi-day-2025-windows-server-fsx-for-netapp-ontap-iscsi/

Slide 39

Slide 39 text

No content