（VirtualBox）スナップショット取り忘れて泣いたので忘れない為に取り方や復元方法をまとめました

## はじめに

**環境**
- Windows 11 home
- VirtualBox 6.1.36

**対象者**
- スナップショットってなんぞやって方
- 私と同じく取り忘れて泣いた人

**注意点**
- スナップショットを復元する時は、vm の電源がオフである必要があります。

### このページの説明
スナップショットについての説明、取り方、復元方法、について説明しております。

### 【**前提】そもそも**スナップショットとは

ある瞬間のデータ状態を記録したもので、その時点でのファイルやディスク、データベースなどの状態を一時的に保存することができます。用途として、データのバックアップや復元・比較・分析などに使用されます。
VirutualBox で言うスナップショットとは、仮想マシンの特定の状態を保存出来る機能の事を言います。
ある特定の時点での vm の状態を保存することができるため、ミスをした場合には、スナップショットを使ってその時点の状態に vm を戻すことが出来ます。

例えば、vm 内で新しいアプリケーションをインストールしたり、設定を変更したり、大事なファイルを誤って消してしまったなど、何か問題が発生した場合に、スナップショットを使ってその変更前の状態に vm を戻すことができます。
これにより、再度設定を行ったり、アプリケーションを再度インストールする必要がなくなります。

また、スナップショットは複数回作成することができるので、vm の状態を定期的に保存し必要な時に適切なスナップショットに戻すことができます。
これにより、vm の状態を安全に保つことができます。
つまり、バックアップの一種のようなもので、めちゃくちゃ大事な機能です。

で、私はそのスナップショットを「取らなくても多分ミスしないで出来そうだからいいや」と思い、取らず、ミスしてよくわからない状態になったので、vm を壊して再度作り直したってわけです。
色々設定していたので、かなり大変でその状態まで戻すのに結構時間かかりました。
今後は絶対に忘れないぞ、という強い意志と共に、取り方や復元の仕方をまとめました。

## 手順

### 1.  スナップショットの取り方

1.1　VirtualBox を立ち上げ、対象 vm を選択します。
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3282990/762f466c-7729-81a7-e1b7-ee8a74ffdbed.png)

1.2　vm の名前が書いている右側の箇所にメニューボタンがありますの、そちらをクリックすると、「詳細」「スナップショット」「ログ」と表示されますので、スナップショットをクリックします。
![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3282990/dcad7827-90e8-aea0-d8c9-a053024180c1.png)

1.3　スナップショット作成画面が表示されます。「作成（T）」をクリックします。
![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3282990/8272f628-61eb-aa88-c483-93fb25967c6c.png)

1.4　作成画面になりますので、お好きな名前と説明を入れます。
今回は適当に、名前を「スナップショット1」説明「空白」といった感じですが、後から見てどこの状態なのか分かるようにしておきましょう。
入力したら、「ok」をクリックです。
![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3282990/6b21f10e-2001-411f-4857-7403b977349c.png)




1.5　スナップショット1 が出来ました。
 ![5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3282990/1fc5473f-a5fe-9e06-aefa-e721adebae98.png)
これで、スナップショットの作成は完了です。

### 2. スナップショットの復元の仕方

2.1　作成時と同様の手順で、スナップショットの画面を表示します。
![2-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3282990/114eb703-9370-3de4-3a43-58c6c787dc50.png)

2.2　復元したい箇所を選択し、「復元（R）」をクリックすると、現状のスナップショットを作成しますか？と確認画面が表示されます。復元前の状態もスナップショットとして作成しておいた方が良いかと思いますので、チェックを入れ「復元」をクリックです。
※ 一部文言が途切れてしまっているので以下に全文記載してます。
```
スナップショット　スナップショット1 をリストアしようとしています。
現在の仮想マシンの状態から下にチェックを入れたところまでのスナップショットを作成することができます。
もしこれをしないと、現在の状態が永続に失われてしまいます。続行しますか？
```
![2-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3282990/568764b8-c0d2-9a48-2f5f-323e24c44336.png)

2.3　復元前のスナップショットを作成します。先程と同じように「名前」と「説明」を入れます。（今回は説明は入れてません。）
![2-3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3282990/9c4911e2-d784-02d0-fad5-40b324420387.png)

2.4　スナップショット2 が作成され、復元も完了いたしました。
![2-4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3282990/c4588f47-5254-57e7-732f-ed7e000bcb70.png)

### 3. 【実践編】実際にスナップショットを使って、復元されたか確認してみる

簡単な設定として、以下を用意しました。
1. vm を作成し、abc-file と言うファイルを作成する
2. スナップショットを取る
3. abc-file を削除
4. 「2」で取得したスナップショットを使い、abc-file 削除前まで戻す
5. abc-file が存在している事を確認

3.1　vm を起動し、以下のコマンドを使い、abc-file を作成します。

- コマンド
    
```
$ touch abc-file
```
    

3.2　ls で作成された事を確認します。

- コマンド
    
```
$ ls -l
```
    
- 実行結果
    
```
[test-centos@localhost ~]$ ls -l
合計 0
-rw-rw-r--. 1 test-centos test-centos 0  3月 18 16:43 abc-file
[test-centos@localhost ~]$
```
    

3.3　先程の手順で、以下のようにスナップショットを作成します。
![3-3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3282990/0de017ce-8142-7d14-c7c8-5834f2745e44.png)

3.4　作成完了です。
![3-4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3282990/73cc743c-6638-2c59-0a09-06bdc85f8ba1.png)

3.5　次に、abc-file を削除していきます。まずは、現在ファイルがある事を再度確認します。

- コマンド
    
```
$ ls -l
```
    
- 実行結果
    
```
[test-centos@localhost ~]$ ls -l
合計 0
-rw-rw-r--. 1 test-centos test-centos 0  3月 18 16:43 abc-file
[test-centos@localhost ~]$
```
    

3.6　rm コマンドを使い、削除します。

- コマンド
    
```
$ rm abc-file
```
    

3.7　削除された事を ls で確認します。

- コマンド
    
```
$ ls -l
```
    
- 実行結果
    
```
[test-centos@localhost ~]$ ls -l
合計 0
[test-centos@localhost ~]$
```
    

3.8　復元する為に、vm の電源をオフにします。

- コマンド
    
```
$ shutdown -h now
```
    
- 実行結果
    
```
[test-centos@localhost ~]$ shutdown -h now
==== AUTHENTICATING FOR org.freedesktop.login1.power-off ===
Authentication is required for powering off the system.
Authenticating as: root
Password: 
==== AUTHENTICATION COMPLETE ===
```
    

3.9　電源オフなのを確認し、先程のスナップショットの画面を表示させます。
![3-9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3282990/6033fd12-d742-532e-0ccc-efffcabe88d6.png)

3.0.0　「スナップショット1」を選択し「復元（R）」をクリックします。
復元前の状態も念のためスナップショットを取得しておきます。
![3.0.0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3282990/68256847-2eef-1e24-4f06-d25dc08c4dd2.png)

3.0.1　復元前のスナップショットを作成する場合は、先程と同様に名前と説明の登録画面が表示されます。
![3.0.1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3282990/e7547e63-69b5-a703-36e2-a19d63059fdb.png)

3.0.2　これで、復元完了しておりますので、abc-file がある事を確認します。「起動（T）」をクリックします。
![3.0.2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3282990/32ef56ea-3a8a-5827-8b7f-e039179f7255.png)

3.0.3　ls コマンドを使い、abc-file がある事を確認します。

- コマンド
    
```
$ ls -l
```
    
- 実行結果
    
```
[test-centos@localhost ~]$ ls -l
合計 0
-rw-rw-r--. 1 test-centos test-centos 0  3月 18 16:43 abc-file
[test-centos@localhost ~]$
```    

無事、復元され abc-file もある事が確認できました。
以上で実践編の作業は終了です。


## **まとめ**

お疲れ様でした！

今回は、スナップショットについて / 取り方 / 復元方法についてまとめてみました。
凄く大事な機能ですが、スナップショットのデータは、vmの情報をバックアップしたデータになりますので、無駄な場面でも作成しまくると容量が圧迫しますので取りすぎも注意です。
今回説明は省いちゃいましたが、スナップショットを作成 & 復元する項目に「削除」もありますので、もし間違えて作ってしまったなどあれば不要なスナップショットは削除した方が良いです。

今回はこちらで以上になります。
ここまで見ていただき、ありがとうございました！