CentOS
EC2
S3
scp
awscli

AWSCLIとS3を利用して、全ユーザーを保持したままサーバを移行する。

やりたいこと

全ユーザーを保持したまま新サーバに移行したい。

どうやってやるか

下記、1つのディレクトリ、5つファイルを、新サーバに移せば良い。
VPC、ElasticIPの関係なのか、scpコマンドで送受信できなかったので、S3を利用した。

  • /home
  • /etc/passwd
  • /etc/shadow
  • /etc/group
  • /etc/gshadow
  • /etc/ssh/ssh_config

手順

①旧サーバ → S3

ファイル(ディレクトリ)を圧縮する

$ cd /home
$ sudo tar -zcvf home.tar.gz /home

$ cd /etc
$ sudo tar -zcvf etc.tar.gz passwd shadow group gshadow

(補足)tarコマンド オプション

-z:gzipで圧縮・展開
-c:アーカイブ作成
-v:詳細情報の表示
-f [ファイル名]:アーカイブファイル名を指定
-x:アーカイブ展開

S3 IAMを設定する

S3に接続できるように設定する

$ aws configure

aws_access_key_id = XXXXXXXXXX
aws_secret_access_key = XXXXXXXXXX
Default region name [None]: XXXXXXXXXX
Default output format [None]: XXXXXXXXXX

S3に接続できるか確認する

$ aws s3 ls s3://s3-bucket-name/

S3に圧縮したファイルをアップロードする

$ cd /home
$ aws s3 cp home.tar.gz s3://s3-bucket-name/

$ cd/etc
$ aws s3 cp etc.tar.gz s3://s3-bucket-name/

②S3 → 新サーバ

新サーバのインスタンスを立てる

新サーバでも上記同様に、S3に接続できるように設定する

$ aws s3 ls s3-bucket-name/

S3から圧縮したファイルをダウンロードする

$ aws s3 cp s3://s3-bucket-name/home.tar.gz /home/izumiru/
$ aws s3 cp s3://s3-bucket-name/etc.tar.gz /home/izumiru/

ファイルを展開する

$ cd /
$ tar -xvzf home.tar.gz
$ rm -rf home.tar.gz

$ cd /etc
$ tar -xvzf etc.tar.gz
$ rm -rf etc.tar.gz

旧サーバのElasticIPを外し、新サーバに付与する

新サーバにログインできれば移行完了

$ ssh -p 22 XXXXXXXXXX

起きた問題

ユーザーとグループの権限がおかしくなり、移行者のみログインできなくなった。
そのため、ログアウトする前に権限がどうなっているのか確認したり、
移行した人に自分の権限を変更してもらえるように設定していくなど、準備と対策が必要です。

参考リンク