OneDriveのフォルダはデフォルトではユーザープロファイルフォルダの直下に作成されるため、例えば「C:\Users\h-uch_0000\OneDrive」のようになる。C:\Usersの下に作成されるフォルダ名(この例では「h-uch_0000」の部分)は、アカウント名やメールアドレスをベースにしているが、環境によって変わるので、残念ながら複数PC間で固定的な同じパス名にすることはできない。
OneDriveの場所がどこにあっても通常は困ることはないだろう。だが、例えばOneDriveフォルダ上のファイルやサブフォルダを参照するプログラム(ソフトウェア)があると、ちょっと面倒なことになりがちだ。
例えば筆者の場合、OneDrive上に\commandといったフォルダを作成して、この中によく使うコマンドを入れるといった運用をしているので、OneDriveの場所がシステムによって異なるとPATH環境変数をうまく設定できず、面倒である。
PATHに「%USERPROFILE%\OneDrive\Command」を追加すればよいのだが、他にもOneDriveの場所を参照するようなツールも使っているので、もう少しスマートに解決しておきたい。というわけで、次項の「環境変数やシンボリックリンクを活用してOneDriveの環境を揃える」を参照していただきたい。
OneDriveの場所がどのPCでも、どこにあっても問題なく動作するようにしたければ、例えば次のような方法がある。
方法1は、ONEDRIVEという環境変数にOneDriveの場所(デフォルトでは「%USERPROFILE%\OneDrive」)をセットしておくという方法だ。いったんこの環境変数をセットしておけば、以後はどのプログラムからでも参照できるだろう。
具体的には次のようなコマンドを最初に一度だけ実行しておけば、以後は「%onedrive%」でOneDriveフォルダを参照できる。
setx ONEDRIVE %USERPROFILE%\OneDrive
setxコマンドは、ユーザー環境変数をセットするコマンドだ。使い方についてはTIPS「setxで環境変数の値を設定する(基本編)」を参照していただきたい(OneDriveはユーザーごとに固有なので「setx /m」にはしないこと)。
方法2は、シンボリックリンクを使ってOneDrive上のフォルダを常に指すように設定する方法である。固定的な配置に設定したいフォルダが多数あったり、環境変数を参照しないようなアプリケーションを(だまして)使ったりするような場合には、フォルダ構造そのものを固定的な配置にした方が便利である。
Windows OSではこのような場合、シンボリックリンクやジャンクション、ハードリンクなどが利用できる。このうち、設定の柔軟性を優先するなら、シンボリックリンクを使うのがよいだろう(3種類のリンクの違いについてはTIPS「シンボリックリンクとジャンクションとハードリンクの違い」参照)。例えばリンク先がオンラインのみになっていて、ローカルに存在しない場合でもエラーなく利用できるからだ。
筆者の場合は、次のような内容のバッチコマンドを作成してOneDrive上の\commandフォルダに保存してある。OneDriveの同期完了後、管理者権限のあるコマンドプロンプトを開いてこれを1回実行すれば、3つのシンボリックリンクが作成される。C:\にOneDriveへのリンクを作成するなどしているが、この辺りは各自変更していただきたい。
※ファイル「OneDrive\Command\MakeOnedriveSymblicklink.cmd」の内容。管理者権限のあるコマンドプロンプト上で実行すること
echo off
setlocal
set ONEDRIVE=%USERPROFILE%\OneDrive
echo OneDriveフォルダ「%ONEDRIVE%」へのシンボリックリンクを「C:\OneDrive」として作成します。
mklink /d "C:\OneDrive" "%USERPROFILE%\OneDrive"
mklink /d "C:\Command" "C:\OneDrive\Command"
mklink /d "C:\SysinternalTools" "C:\OneDrive\SysinternalTools"
echo 次のコマンドを実行して、環境変数 PATH を変更しておくとよいでしょう。
echo setx PATH C:\Command;C:\SysinternalTools
※最後のsetxは誤動作防止のため(既に登録されているユーザー環境変数PATHの内容を間違って上書きしないように)、コメントアウトしている。手動で各自の環境に合わせて設定・実行すること
なお、シンボリックリンクやジャンクションを使う場合、OneDriveフォルダの外からOneDriveフォルダの中を指すのは構わないが、OneDriveフォルダの中には作成しないこと。(リンク先が循環参照したりしていると)OneDriveの同期作業が正常終了しなくなる可能性がある。
OneDriveのフォルダは、デフォルトでは各ユーザープロファイルフォルダの直下に「OneDrive」という名前で作成される。しかし、C:ドライブの空き領域が少ないなどの理由で他の場所へ移動させたいことがある。
Windows 7/10でOneDriveのフォルダの場所を変更させるには、まずタスクバーの通知領域にあるOneDriveアイコンを右クリックして[設定]メニューを開く。そして[設定]タブにある[OneDriveのリンク解除]をクリックして、いったんOneDriveを無効にする。すると再セットアップ用の画面が表示されるので、またアカウント情報を入力し直せばよい。途中でOneDriveフォルダの場所を問い合わせる画面が表示されるので、新しい場所を指定してセットアップを完了させる。
ところで、この方法でOneDriveの場所を変更すると、また最初からOneDriveファイルの同期作業を行う必要があるので、OneDrive上の総ファイルサイズが多いと非常に時間がかかる。そこで、OneDriveのリンク解除後、元のOneDrive上のファイルやフォルダを全て手動で移動もしくはコピーし、その後、再セットアップすると、初期セットアップが素早く完了する。既にファイルが存在する場所をOneDriveで利用しようとすると次のような画面が表示されるが、そのまま続行すればよい。次項の「事前にコピーしておくと初期セットアップが素早く完了する」も参照のこと。
Windows 8.1の場合、移動は簡単である。エクスプローラでOneDriveフォルダのプロパティ画面を表示させ、[場所]タブを選択する。すると現在のOneDriveフォルダの場所が表示されているので、[移動]ボタンをクリックして移動先を指定すればよい。元の場所にあったファイルやフォルダは自動的に移動させられる(クラウド上のOneDriveストレージから再コピーするわけではないので、短時間で完了する)。
Windows 7/10でOneDriveの場所を移動させたい場合や、新しいWindows OS上で初めてOneDriveを利用する場合、最初からファイルの同期を全てやり直す必要がある。ファイルが少なければ大して時間もかからないが、例えばOneDrive上に何百GBものファイルがあると、全て同期するのに1日以上かかる可能性がある。
保証されている方法ではないのであまりおすすめしないが、あらかじめローカルでOneDriveのフォルダへファイルをコピーしておくという方法がある。初期セットアップが完了したら、まずいったんOneDriveの同期動作を一時停止させる。そして、手動で他の同期済みのWindows PCや、次項で説明するバックアップコピーなどから全ファイルをコピーする。その後同期動作を再開させる(ローカルにOneDrive上のファイルのイメージがない場合はできない方法だが)。
OneDriveではユーザーのファイル以外の特殊な管理用データなどは保存されておらず、単にファイルをコピーしておくだけでもうまくいくようだ。前項の「OneDriveのフォルダを別の場所へ移動させたい」の画面「既にファイルがある場合の表示」で分かるように、OneDriveフォルダ中に最初からファイルが存在していても問題ないようである。
なおこの方法を利用する場合、Windows 7/10のOneDriveでは、あらかじめ全ファイルを同期するように設定しておかないとエラーになる。同期対象から除外したフォルダやファイルと同名の項目がローカル側にあると、名前が衝突するからだ(同名のオブジェクトがあると、後でローカルにダウンロードできなくなる)。
(自分自身で管理している)ローカルのファイルサーバなどと違って、クラウドストレージでは十分なバックアップ体制が整っており、クラウド上のデータのさらなるバックアップは通常は必要ないと考えられる。だがバックアップの失敗で何度か痛い目に遭った筆者としては、ひょっとしたら何らかの原因でクラウド上のデータが全部なくなったりしないか心配である。
まずサービスの提供側の何らかの操作ミスで全データが消えてしまったり、アカウントごと削除されてしまったりするかもしれない。それにOneDriveではアップロードされた内容はチェックされており、不適切なものがあればアカウントの停止などの措置がとられることがある(OneDriveに関するMicrosoftの倫理規定はこちら)。
また手元で間違って全ファイルを削除してしまうと、当然それはクラウドストレージ側にも同期・反映され、データが全部消えてしまう(次項で説明しているように、OneDrive上のゴミ箱から復元できなくはない)。
というわけで、万が一に備えてOneDriveといえどもデータをバックアップしておきたいところだ。
といっても、OneDriveの場合はバックアップで面倒な操作は必要ない。OneDriveフォルダ上のファイルをそのままxcopyやrobocopyコマンドなどでコピーしても問題ない(TIPS「robocopyでフォルダをバックアップ/同期させる」「xcopyでファイルをバックアップする」参照)。ファイルシステム上に見えているファイル以外には、特別な管理用のデータ(ファイル)などは存在していないからだ。
筆者の場合は、次のようなコマンドを用意して(もちろんOneDrive\commandフォルダ中に置いてあるので、どのPC上でも参照できる)、タスクスケジューラーに登録してある。
※「OneDrive\command\Fullbackup-OneDrive.cmd」の内容(要点のみの抜粋。バックアップ先などは適宜変更すること)
set FOLDER_BACKUP=F:\OneDrive-Backup
robocopy /mir %ONEDRIVE% %FOLDER_BACKUP% *.* /copy:DAT /R:2 /W:1 /SL /XJ /XJD /XJF /XA:SH /NP /XF "*.tmp" /LOG:%TMP%\ Fullbackup-OneDrive.log
当然だが、このバックアップコマンドを全てのPC上で実行する必要はない。OneDrive上のファイルを全てオフラインで利用していて(あるいは同期していて)、かつバックアップできるだけの空きディスクを持つPC上で実行すればよいだろう(もちろん、バックアップ先ドライブは、物理的に別ディスクにするのが望ましい)。OneDrive側のストレージサイズが大き過ぎるなら、最小限必要の場所だけバックアップしてもよい。
Copyright© Digital Advantage Corp. All Rights Reserved.