【WebDAV】OneDriveに巨大なフォルダーをアップロードしたいときにやったこと

シェアする

OneDrive drive via WebDAV on explorer

SurfaceについてきたOffice 365のおかげてOneDriveに1TBもの容量をゲットしてオンラインストレージ長者になりましたが、この容量を活用するのは一筋縄ではいかないという話と、どうやって使っているかの紹介です。

WebDAVが便利なような気がする。


スポンサーリンク

OneDriveに大量のデータをアップロードするのは簡単じゃない

OneDriveを使う一般的なやり方はOneDriveアプリを使う方法だと思います。

OneDriveアプリがやってくれることはローカルのフォルダーとOneDrive上のフォルダーの同期だけです。
だから、OneDriveにアップロードしたいファイルやフォルダーと同じものをローカルにも置いておく必要があるということになります。

いつでもどこでも同じファイルにアクセスしたいとか、ローカルのファイルのバックアップをOneDriveに置いておきたいという用途にはこれで十分ですが、ローカルのHDD/SSDの容量を節約するために普段あまり使わないファイルをOneDriveにだけ置いておきたいというときには、OneDriveアプリは適していません。

では、onedrive.live.comに直接アクセスしてファイルをアップロードし、そのあとでローカルのファイルを消してしまえばいいかというとそうもいきません。
IEやEdgeからonedrive.comにアクセスしてみるとわかりますが、これらのブラウザーではファイルはアップロードできてもフォルダーはアップロードできません。何それ?
Edge cannot upload folder to onedrive

ChromeやOperaではフォルダー単位でのアップロードもできるのですが、試しに50GBほどのフォルダーをアップロードさせてみたところ、途中でエラーになってストップしてしまいました。これは使えない。
Chrome can upload folder to onedrive

というわけで、ローカルにファイルを残さずにOneDriveにアップロードするのは簡単ではありません。


そんなときにはWebDAVがある

WebDAVというのはHTTPの拡張で、Wikipediaでは次のように説明されています。

WebDAVは、Webサーバに対して直接ファイルのコピーや削除を行ったり、ファイル所有者や更新日時などのファイル情報を取得・設定するといった機能を持つ分散ファイルシステムで、HTTP 1.1を拡張したプロトコルで実現される。
Wikipedia「WebDAV」https://ja.wikipedia.org/wiki/WebDAV

Windowsは(Explorerは?)WebDAVをサポートしているので、OneDriveのフォルダーをExplorerで一つのドライブのように表示してファイルの読み書きができます。

手順は次の通りです。少し面倒です。

OneDriveのCIDを確認する

onedrive.live.comにアクセスして任意のフォルダーを開きます。
OneDrive folders

アドレスバーに表示されたURLで”cid=”の後に書かれた16桁の英数字を控える

Check OneDrive's CID

Windowsへのサインイン時に自動的に接続するようにする

OneDriveのWebDAVアドレスは非公開ですが、先人の皆さまの努力により次のように判明しています。

https://d.docs.live.net/################/

※###…の部分に先ほどの英数16桁が入ります

Explorerからネットワークドライブの割り当てでこのアドレスに接続しても良いのですが、私の環境で試したところPC起動直後の再接続に100%失敗するので、次の方法で少し時間をおいて接続するようにします。

メモ帳(notepad.exe)に次の内容を書いて、ファイル拡張子を「.vbs」として保存します。

WScript.sleep 10000
Set objNetwork = CreateObject("WScript.Network")
objNetWork.MapNetworkDrive "O:", "https://d.docs.live.net/(CID)",,"(ID)","(パスワード)"

(CID)のところには上で調べたCIDを、(ID)のところにはOneDriveにアクセスするためのID(MicrosoftアカウントのID)を、(パスワード)のところにはパスワードを入力します。
冒頭の10000というのはシステム起動後10秒間待つことを意味しており、この10秒の間にネットワーク接続が確立され、しかる後にOneDriveへの接続を試みる、ということを意図しています。

ファイル名は拡張子以外は何でもいいですが、ここでは仮にconnect_to_onedrive.vbsとします。

ファイルができたらスタートアップフォルダーにコピーします。
スタートアップフォルダーは通常次の場所にあります。

C:\Users\ (ユーザー名)\AppData\Roaming\Microsoft\Windows\スタート メニュー\プログラム\スタートアップ

Copy vba script to startup folder

これでWindowsを起動するたびにExplorerにWebDAVで接続したOneDriveが表示されるようになります。
OneDrive drive via WebDAV on explorer

一件落着。


欠点もある ~遅い

以上のようにしてOneDriveをダイレクトにExploreに表示してローカルドライブのように使うことができるようになります。

OneDriveアプリのようにローカルファイルと同期するわけではないので、ここにファイルを置いてもローカルのディスク容量は消費しません。
OneDriveを外部ストレージのように使えてとても便利です。

しかし欠点もあります。遅いのです。
フォルダ間の移動もファイルのダウンロードもアップロードもみんな遅い。

というわけで、やっぱり普段あまり使わないファイルの置き場として使うときだけWebDAVを利用し、それ以外の時はOneDriveとの同期フォルダーを参照するのが便利そうです。

なお、OneDriveアプリがWebDAV経由でアップロードしたフォルダーまで同期してローカルにコピーしてしまってはせっかくWebDAVを使う意味がないので、OneDriveアプリで同期するフォルダーは適切に選んでおきましょう。

こちらから設定できます。

タスクトレイのOneDriveアイコンを右クリックして「設定」
OneDrive app menu

「フォルダーの選択」タブで「フォルダーの選択」
OneDrive app folder setting

WebDAVでのみアクセスするフォルダーのチェックをはずして「OK」
Select folder to synchronize