SharePoint Onlineのサイトを移行する際に、ドキュメントライブラリのファイル移行が大変だった話

ブログの投稿がご無沙汰になりましたが、今回は、自社で活用してるSharePoint Onlineのネタを話したいと思います。
私は普段、バイス・ネットの社内クラウド活用やブログ作成を担当しております。

SharePointのサイト間に関する移行について、あまりインターネット上で公開されている記事でマッチするものが見つからなかったので、参考までに書いてみました。

今回の記事では、実施した手順や実際の移行時間などを紹介しています。

それでは本題に入ります。

【目次】

今回実施したデータ移行の方法

サイト間のドキュメントライブラリの移行方法として、移行用のVM(Windows365を使いました)を用意して、そのVM上にOneDriveショートカットを作成し、Robocopyコマンドを用いて、移行元/移行先のフォルダパスを予め準備して、データ移行を実施しました。
Robocopyでは、ローカルに実ファイルがダウンロードされるので、予め移行元のフォルダからローカルにファイルをダウンロードしてから実行して、Robocopyを実行します。

【参考】使用したツール(サードパーティーのツールは使いませんでした)

  • Windows365 Businessの2vCPU/8GB/128GBのVirtual Machine
  • OneDriveアプリ/コマンドプロンプト
  • Robocopyを記述したExcelファイル

この方法のよいところは、OneDrive上で、ファイルのコピーしようとした時に、下記の画像のようなエラーが発生せずに、確実に移行できることです。データ移行前には、静止点を作り、ユーザからのアクセス権を排除しますが、たまにエラーが発生すると、移行作業としてやりずらさがあります。

SharePoint Onlineの一般的なファイルの移動手段

SharePoint Onlineを使ったファイルの移行方法として、「移動」(もしくはコピーで)が使えますが、ドキュメントパサーの機能により、htmlファイル内に、タグが挿入されてしまい、弊社環境で利用することができませんでした。
また、この操作には、SharePoint の制限 – Service Descriptions | Microsoft Learn に記載の通り、ファイル容量やファイル数の上限があるので、参考までに貼っておきます。

また、SharePoint管理センターのメニューにある「移行」は、別のクラウドストレージからSharePoint Onlineへのデータ移行する際に利用するもので、現在のところ、サイト間のデータ移行には使えないです。こちらのプレビュー機能が、一般リリースされれば、簡単にサイト間のデータ移行が実現されるのではないかと期待しています。

実行結果

作業手順の大まかな流れとしては、最初に、移行対象のフォルダのユーザアクセス権を削除します。そして、SharePoint上のデータを移行マシンにダウンロードし、Robocopyを実行します。その後、OneDrive同期によって、移行先のSharePointにデータを反映します。
今回の作業ボリュームとしては、以下の通りです。

  • 移行対象のデータ容量約500GB
  • ファイル数80万ファイル
  • Robocopyコマンドの実行回数が約450回

これで、1日8時間ぐらいかけながら実行した結果、約25日で終わりました。
やはり、ファイルのダウンロードやOneDrive同期に時間がかかりますね。Robocopyコマンドは、数万ファイルあっても、ファイルがローカルにあれば長くても数十分ぐらいでした。とりあえず、変なエラーとか発生することなく、データ移行自体はすんなりできました。

OneDrive同期のパフォーマンス

今回の実施方法で、Robocopyコマンド実行後に、ローカル上のOneDriveフォルダが、SharePoint上に反映されるまでの時間について、計測したものを公開したいと思います。
クラウド環境だと、サービスプロバイダー側に依存している部分も多く、今回の結果が、他の環境でも、同じような結果にはならないと思いますが、参考値としてなれば幸いです。

ファイル数データ容量(GB)SharePointに反映されるまでの時間
1034015.544時01分
89590.864時20分
78628.354時11分
25305.614時07分
15141.261時10分

同期時間に関しては、ネットワーク速度や、移行しているファイルの種類、数、容量が大きく依存していると感じます。

手動で今回やってみて感じたことは以下の2点です。

  • ファイル件数が多いと、ファイルサイズ容量に関係なく時間がかかる傾向がある。
  • ファイル同期は早いけど、フォルダ作成のみだと同期が意外に遅い。

あとは、同期をかける前に、ローカルとの差分を確認する処理があるので、件数が少なくても、処理に時間がかかることがあると思います。

OneDrive同期を使ったデータ移行の注意点

今回のやり方で、OneDriveがポイントになりますが、その中で特に注意すべきことが以下の2点でした。

  • OneDrive同期のスタック(同期処理が止まってしまう)
  • OneDriveの仕様上の制約

1点目に関しては、数千ファイルを超えるRobocopyコマンド実行した後、OneDrive同期が思いのほか時間がかかるなと思ったら、大体スタックしてました。基本的に、Robocopyコマンド実行後は、同期状況を常に監視していたわけではないので、1~2時間後に様子を見ると、進んでない。。。みたいことがありました。

その際は、一度、OneDriveアプリの「同期の一時停止」をしてから、再開をすることで解決できました。

2点目に関していうと、以下のMicrosoftのサイトに、情報があるので、これを理解した上で、実施してくださいね。ということですが、ユーザ目線からしたら、こんなにあるんかいって言いたくなります。

OneDrive と SharePoint の制限事項と制約事項 – Microsoft サポート

今回、ライブラリ全体としては、30万ファイル以上ありましたけど、同期しているフォルダ単位では、30万件を超えるものはありませんでした。それでも、上記のスタックなどのパフォーマンスの問題は多少あったかなという感じがします。

クラウドサービスなので、どこかのテナントで負荷で他のユーザに影響が出てしまうようなことは避けたいですもんね。

サービスの仕様や制約は、事前にきちんと確認することが大切ですね!

最後に

今回の移行作業に関しては、最初は、某サポートからもらった手順で、簡単にできると思っていたところ、実際にやってみると、予期せぬエラーが発生したことから始まりました。データ移行には、抜かりのない準備が必要だということを改めて知らさせれました。本記事が読者の方へ、少しでも参考になれば幸いです!

バイス・ネットでは、弊社の製品を導入時に、お客様のデータ移行を支援させて頂くことが多いので、Windows系システムのデータ移行の支援という切り口でも、お声がけ頂けると幸いです。最後までお読みいただきありがとうございました。