LoginSignup
2
0

vpsのUbuntu Serverのフルバックアップ

Last updated at Posted at 2023-06-10

バックアップの取り方はいくつかあるが、ここではUbuntuに標準搭載されたtarによる圧縮を用いた方法を示す。

バックアップファイルの作成

まず、バックアップを保存するためのディレクトリを作成する。

mkdir /home/<username>/backup

今後バックアップするときに実行しやすいように、バックアップスクリプトを作成する。

vi /home/<username>/backup/backup.sh

バックアップスクリプトには以下のコマンドを追加する。

#!/bin/bash
BACKUP_DIR="/home/<username>/backup"
TIMESTAMP=$(date +"%Y%m%d%H%M%S")
tar -czvfp $BACKUP_DIR/backup_$TIMESTAMP.tar.gz --exclude=$BACKUP_DIR --exclude=/proc --exclude=/tmp --exclude=/mnt --exclude=/dev --exclude=/sys /

ここでtarは圧縮コマンドで指定したオプションは

-c 新しいアーカイブを作る
-z アーカイブをgzip形式で圧縮する
-v 処理したファイルを詳しく出力する。
-f アーカイブファイル名を指定する
-p 所有者などのファイル属性を保持する。
—exclude 除外するディレクトリやファイルを指定する

である。
また、除外したディレクトリは以下である。

/procはプロセスの情報があるディレクトリで、普通のファイルシステムと違い、ハードディスクやSSDなどのストレージ上ではなく、メモリの中に作られる。
/tmpは一時的(temporary)なファイルを置くディレクトリで、プログラムが動作する際に一時的に利用するファイルを保存しておくなどの用途で利用される。
/mntは新たに追加したストレージ装置などにアクセスできるようにしたマウントポイントが入った仮想的なディレクトリである。
/devはハードウェアや仮想デバイスがファイルとして表現されたディレクトリである。
/sysはデバイスやドライバーの設定ファイルなどが置かれている。

最後にアーカイブするディレクトリが指定でき、/としてrootディレクトリ下の全てを指定している。

バックアップスクリプトを実行する。すべてのファイルにアクセスできるようにroot権限で行う。

sudo /home/<username>/backup/backup.sh

バックアップファイルの転送

アーカイブファイルが作成されたらscpを用いてバックアップを保存したいマシンに転送する。
ローカルマシンに転送する場合は、ホストマシンに接続していないクライアントマシンのターミナル上で、

scp -P <ポート番号> -i <認証鍵のパス> <username>@<ipアドレス>:/home/<username>/backup/<backupfile> <保存先のパス>

とする。sshと違ってポートの指定は-Pと大文字でなければならない。ipv6の場合はipアドレスを\[ \]で囲って記述しなければならない。

リストア

リストア用の新しいUbuntuサーバーをセットアップし、新しいサーバーにUbuntuをインストールし、SSH接続を確立する。
バックアップファイルをリストアするためのディレクトリを作成する。例えば、/home/<username>/restoreというディレクトリを作成する。

mkdir /home/<username>/restore

バックアップファイルを新しいサーバーに転送する。ローカルマシンから新しいサーバーにSCPコマンドを使用してバックアップファイルを転送する場合は以下のようになる。

scp -P <ポート番号> -i <認証鍵のパス> <バックアップファイルの送信元のパス> <username>@<ipアドレス>:/home/<username>/restore 

ホストマシンでrootディレクトリにバックアップファイルを展開する。

cd /
sudo tar -xzvf /home/<username>/restore /<backup_file>.tar.gz

-xは展開オプションである。

展開する際、同じ名前のファイルは上書きされるので、これでリストアが完了する。リストアが完了したら再起動する。

sudo reboot

新しいサーバーが再起動したら、バックアップから復元されたシステムが利用可能になる。

ipアドレスに依存した設定の変更

元のシステムのipアドレスが記述されたファイルがある場合はipアドレスを変更する必要があるので、ipアドレスを検索する。例えば/etc内に前のipアドレスが記述されていないか確認する場合、

grep -r <ipアドレス> /etc

とすれば良い。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0