少し前に、Windowsでお馴染みMicrosoft社のAzureのサービスの一つ、Azure DevOpsがUnityのプロジェクトデータのバックアップに最適という話を聞いていたので、実際に試しに保存していました。
その後、SSDが突然の死を遂げてしまい、試しに保存していた分から復元出来て非常に助かったということがありました(お試しでアップロードしていた分だけなので、完全復元は出来なかった)。
VRChatやChilloutVR、Connect Chatなどでゲーム開発以外でもアバターやワールドのアップロードなどにUnityを使うことがあると思います。
こういったデータをSSDやHDDのようなローカルだけで管理していると、突然の故障などで二度と復元できなくなってしまうケースがあります。
クラウド上に保存していれば、ローカル環境に何か起きてもクラウド上から復元出来ます。
何か起きてからではどうにもならないので、今回紹介するAzure DevOpsをバックアップ方法の1つとして利用してみてはいかがでしょうか。
Azure DevOpsでUnityプロジェクトデータをバックアップする方法
GitHubではダメなの?
GitHubはソースコードとしては無制限でアップロード出来ますが、テクスチャデータや音声データなどの1つのデータ容量の大きいものを含むもの(GitLFSを使用する場合)は、無課金状態では1GBまでしかアップロード出来ません。
月5ドル支払うことで50GBに増やすことが出来ますが、Azure DevOpsであれば、5人以下で利用するのであれば、こういった制限を受けずにずっと無料で利用出来ます(2021/12/31時点)。
前置き
今回は、コマンド操作であるGitをGUIで使えるようにするソフトSorcetreeを使ったやり方を紹介します。
極力コマンド操作が少なくなるようにしています。
「Gitってなんぞや?」という人でも、そこまで難しい操作をしないので大丈夫だと思います
もし、分からない単語があればググれば分かりやすく解説しているサイトが沢山あるので、すぐ理解出来ると思います。
下準備
アカウントとプロジェクトを作る
まずは、Azure DevOpsのサイトに行き、アカウントを作成します。
MSアカウントを既に持っている場合は、自動でログインされるかもしれません。
ユーザー名等がこのタイミングで確定してしまうので、問題がある場合は新しいアカウントを作成することをおすすめします。
リージョン選択がありますが、現時点ではUIの日本語化はされていません。
①のところは、デフォルトだとメアドのアットマーク前が入っていると思いますが、ここの画面が最後で、今後変更出来ないようです。
②日本なら「East Asia」が良いと思います。
アカウント作成が成功するとこの画面になると思います。
ここでのプロジェクトが指すものはレポジトリとは別です。今回は「UnityProject」としました。
バックアップ目的なら、第三者に見せる必要はないし、購入したデータを保管することが多いと思うので、基本的に「Private」を選択します。
レポジトリを作成
今回の用途の場合、Azureのデプロイ機能は使うことがないと思うので、「Repos」タブのみしか使いません。
このスクリーンショットではレポジトリが存在していますが、レポジトリがまだないと思うので、ここでレポジトリを作成します。
レポジトリ作成時にgitignoreがUnityを選択しておくと、後で設定しなくていいので、楽だと思います。
このときREADMEを作成のチェックをしておかないと、クローン時にSorceTreeがクラッシュするという現象が起きたので、作成しておきましょう。
SorceTreeをインストール
↑からダウンロード出来ます。
特に難しいことはないので、省略します。
SorceTreeでAzure DevOpsにログインする
Azure DevOpsとSorceTreeの相性が悪いらしく、ログイン周りが分かりづらく、しかもSorceTree側がAzure DevOpsの仕様変更を放置しているので、初見だと結構手間取ります。
まずは、クローンボタンを押します。
ここで、まず①のURLをメモ帳などのテキストエディタにコピーします。
そのままSorcetreeに入れてもそれっぽい挙動を見せますが、レポジトリがクローン出来ないという罠になっています。
②をクリックするとアクセスに必要なユーザー名とパスワードが表示されます。
これもメモ帳などのテキストエディタにコピーしておきます。
Sourcetreeを開き、「ツール」から「オプション」を開いてログイン情報を入力していきます。
まず、認証タブの「追加」からAzure DevOpsを選択。
メモ帳などのテキストエディタにコピーしたURLを下記のように変更します。
https://****@dev.azure.com/****/xxxx/_git/xxxx
↓
https://****.visualstudio.com
この書き換えて出来たvistualstudio.comで終わるURLをホストURLに入力します。
入力が完了したら「Credentials」の「Personal Access Token を再読み込み」をクリックします。
このようなポップアップが表示されユーザ名とパスワードが要求されます。
ここでのユーザー名とパスワードは、先程Azure DevOpsでメモ帳などのテキストエディタにコピーしたユーザー名とパスワードです。
このユーザー名とパスワードはクローン時に必要になるので、メモ帳などのテキストエディタはまだ閉じないでください。
認証に成功と表示されれば、Sorcetreeからプロジェクトにアクセス出来るようになります。
もし、入力を間違えてしまっている場合は、下記場所にある「passwd」というファイルを削除しない限り、アンインストールしてもうまくいかなくなるようです。
C:\Users\[ユーザー名]\AppData\Local\Atlassian\SourceTree
下の文字列をExplorerの階層表示のところにコピペすると一発で飛べます。
%LOCALAPPDATA%\Atlassian\SourceTree
レポジトリをクローンする
オプションを閉じて、Sorcetreeのクローンタブを見ると、作成レポジトリがクローン出来るようになっていると思います。
クローンボタンを押して、待っているとCredentialHelperSelectorというのが表示されます。
wincredを選択して、先程のユーザー名とパスワードをコピペすると、リポジトリタイプが「これはGitリポジトリです」となるはずです。
もし、入力を間違えてしまっていたり、この表示が出ない場合は、下記場所にある「passwd」というファイルを削除しない限り、入力用のポップアップが出なくなります。
C:\Users\[ユーザー名]\AppData\Local\Atlassian\SourceTree
下の文字列をExplorerの階層表示のところにコピペすると一発で飛べます。
%LOCALAPPDATA%\Atlassian\SourceTree
GitLFSの設定をする
Gitはもともとソフトウェアのソースコードを管理するためのもので、バイナリデータや画像データなどの大容量ファイルを管理するのが苦手です。
そこで、頻繁に変更が加わるソースコードとは別に大容量ファイルを管理する方法として、GitLFSが用意されました。
Git自体は1GB以下が好ましいらしく、それ以上になる場合はGitLFSの導入が必要らしいです。
Sourcetreeでは、「リポジトリ」→「Git LFS」→「リポジトリを初期化」とするとGitLFSが利用出来るようになります。
一応、このポップアップで設定することも出来ますが、拡張子を一つずつ設定するのは面倒なので、とりあえず、空のまま「トラックファイル」をクリックして、このポップアップを閉じます。
テキストエディタでクローン先のフォルダにある.gitattributesファイルを書き換えて設定すると一括で設定できて楽です。
※ファイルが見つからないという場合、「.gitattributes」が「.」から始まる隠しファイルになっているので、隠しファイルを表示する設定になっていることを確認してください。
設定内容は下記のQiitaの記事が参考になると思います。
なにも設定していなくても、一応Sourcetreeが容量が大きいことを検知して、GitLFSに追加するか聞いてくることがあります。
Unityプロジェクトデータをプッシュする
ここまで設定が出来たら、Git管理下のフォルダにUnityプロジェクトデータをコピーするか、シンボリックリンクを作成して、ファイルをコミットしてプッシュしましょう。
コミット?プッシュ?という方は下記の「マンガでわかるGit」をササッと呼んでみると良いと思います。
「LFS: Client error: https://~~~ from HTTP 413」というエラーが出る
ワールドのバックアップに使ってるけど、デフォ設定の場合、一回のコミットで128MBを超えるとエラーが出るっぽい。レポジトリ内で「git config http.version HTTP/1.1」を実行すれば問題なく使えました。https://t.co/jgPI7K1oRl
— Till0196@VRChat (@till0196_vrchat) July 20, 2021
一度でプッシュするサイズが128MBを超えるとエラーが出るというもの。
対応策はSourceTreeのターミナルを開き
git config http.version HTTP/1.1
と実行する。
特に返答はないのですが、これでエラーが出なくなると思います。
レポジトリ毎にこの作業をする必要があります。
シンボリックリンクに関するメモ
mklink /D <レポジトリフォルダの絶対パス>\Unityのフォルダ名 <絶対パスのUnityフォルダ>
※「<レポジトリフォルダ>\Unityのフォルダ名」の「Unityのフォルダ名」フォルダは作ってはいけない。
作ると「既に存在するファイルを作成することはできません。」と出る。
怪文章一歩手前なので、もうちょっとまともに説明を書きたいのですが、難しい…
コメント