我流完全バックアップガイド

## はじめに

自分がやっているバックアップの記事．
違うメーカー，ロットのHDD二つでミラーリングしておけば，まぁ大丈夫だろうと思う．

Cドライブのユーザーディレクトリ，全てを保存しているドライブのこの２つを，別ドライブに保存しておけば何とかなる．

実際，OSをクリーンインストールしてもバックアップがあれば３時間ほどで，開発環境の復旧はできる．

https://qiita.com/lxzLocus/items/2a0fac304c598afdda67


## ドライブ構成

| ドライブ名 | 容量 | 種別 | 用途 | メモ |
|:------------:|:------------:|:------------:|:------------:|:------------:|
| Cドライブ  | 500GB | M.2 SSD Gen 3 | OS用 | Crucial
| Dドライブ  | 8TB | 3.5 HDD | アプリケーション + いろいろ保存用 | Seagate
| Eドライブ  | 6TB | 3.5 HDD | Dドライブの完全バックアップ用 | Seagate
| Fドライブ  | 250GB | SATA SSD | 動画編集とかで一時保存場所 | SanDisk
| Gドライブ | 2TB | M.2 SSD GEn 4 | HDDよりも高速化したいゲームのインストール先 | HIKSEMIなんて中華


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/895176/b9431119-d4fa-8e42-8206-1d8fd5ee92cb.png)

### HIKSEMIもしかして日立なのか？！？
ゲーム入れるだけなので，壊れてもいいやと思い買った安物M.2 SSD
Speccyで見ると，日立の文字が
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/895176/f3791abc-dd7b-dd9e-8941-fda507590c4b.png)


## ディレクトリ構成
ソフトウェアは基本Dドライブである，HDDにインストールしていく．
Dドライブのディレクトリ構成は↓
```
D:/

Application
C
Files
Game
WindowsApps
WindowsFile
```


### 解説
- `D:/Application`
    カスタムインストールができる，ソフトはここへ基本インストールする．
OSなど，レイヤー層が低そうなソフト（ファンコントローラーソフトや，セキュリティソフト，ドライバ関連は避ける）

- `D:/C`
    Cドライブで展開されるプログラムをシンボリックリンクによるリンクを作成するためのディレクトリ．
    `D:/C/`以下はリンク先のパスと同じディレクトリ構成にしておく．
    `C:/Users/User/Program Files/temp`なら`D:/C/Users/User/Program Files/temp`にする．
    
- `D:/Files`
　写真であったり，動画などいろんなものが詰まっているフォルダ．
開発ソースもこの中で管理

- `D:/Games`
 ゲームのインストール先フォルダ．
 SteamやBattle.net，EAなどのストアをここへインストールすることで，ゲームのインストール先もここになる．
 Eドライブへのバックアップ時には，除外されるディレクトリ．
 
- `D:/WindowsApps`
 Microsoft Store経由でインストールされたものなどを，インストール先の変更を行うと現れるディレクトリ．
 
 - `D:/WindowsFile`
     3Dオブジェクト，ダウンロード，ドキュメント，ピクチャ，ビデオ，ミュージックの６つのディレクトリを格納している．

## シンボリックリンク
多分一番簡単にシンボリックリンクが作れると思う

https://schinagl.priv.at/nt/hardlinkshellext/hardlinkshellext.html#download

### 操作
対象のフォルダを`リンク元`として選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/895176/c40aaf48-ca40-c53f-0bb6-5c97bad2e3fa.png)


作成したい場所で右クリック`リンクを作成`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/895176/a046d312-c41a-ce00-7839-6008d1a7a93a.png)


たったのこれだけ

### 利用例

```
C:/Users/user/AppData
```
以下などに存在する，ファイル容量大き目のファイルをシンボリックリンクでリンクさせる．


## Robocopy バッチファイル
Robocopyを使ったバッチファイル
`REM`：コメントアウト
`echo`：コンソール出力
`%` で区切ると変数



```
@echo off

REM メッセージを表示する
echo "処理を開始します。"
echo.

REM Dドライブのフォルダツリーを生成する
set logdate=%date:~0,4%-%date:~5,2%-%date:~8,2%
tree /f D:\ > "D:\log\tree-log-%logdate%.txt"

REM コピー元となるDドライブとコピー先となるEドライブのパスを指定する
set source=D:\
set destination=E:\

REM Applicationの中のファイルをEドライブにコピーする
echo "ApplicationをEドライブにコピーしています。"
robocopy %source%\Application %destination%\Application /E /mir /R:3 /W:0 /LOG+:D:\log\robocopy-log-%logdate%.txt /DCOPY:DAT /MT:19 /xd "System Volume Information" "$RECYCLE.BIN"
echo.




REM メッセージを表示する
echo "処理が完了しました。"
```

### 解説
1. `D:/log`にフォルダツリーの作成
2. 変数にコピー元とコピー先の指定
3. robocopyの実行

- オプション
`/E`
空ディレクトリを含むサブディレクトリーもコピーする
`/mir`
ミラーリング．変更や削除は全く同じ状態になる．
`/R:3`
失敗したコピーに対する再試行回数．規定値は1,000,000
`/W:0`
再試行するための待機時間．規定値は30秒
`/LOG+:`
ログの出力先．`+`をつけることで，元あるファイルに追記する．
`/DCOPY:DAT`
フォルダのタイムスタンプを維持する
`/MT:19` 
利用するスレッド数
`/xd`
`/xd dirs`で除外するフォルダーやファイルの除外


## 複数台PCがあるなら
ユーザー名，ディレクトリ構成，インストール先などできる限り同じようにしておくことで，いずれかのPCが故障しても，ドライブコピーにより復元ができる．
ユーザー名まで同じにしておくことで，レジストリに登録されていない～なんて問題も起きずに環境の復元ができると思う．

## 究極
**
再現性のある環境構築をする**
CPUメーカー，マザーボードメーカー，チップセットの系列をそろえておくとドライバ面でもかなり安定した復元（別PCからのクローン）ができる．

|  | 自宅PC | 研究PC |
|:------------:|:------------:|:------------:|
| CPU | i9-10900K | i9-14900KS |
| M/B | NZXT Z490 | NZXT Z790 |