rsync
※サーバ内でファイルを同期。
※rsyncが同期のためのコマンド。ただし手作業でコマンドを実行する必要がある。
※lsyncdを使うと、ほぼリアルタイムに自動同期させることができる。
■EC2を起動
以下の設定でEC2を起動。
名前: test
Amazon マシンイメージ (AMI): Amazon Linux 2 AMI (HVM) - Kernel 5.10, SSD Volume Type
インスタンスタイプ: t3.micro
キーペア名: Develop
ネットワーク: Develop
サブネット: Develop-DMZ-A
パブリックIPの自動割り当て: 有効化
ファイアウォール (セキュリティグループ): default, ssh, web
ストレージ: 8GiB
■最低限の設定
Apacheをインストールし、ブラウザからアクセスできるようにする。
$ sudo su -
# localedef -f UTF-8 -i ja_JP ja_JP
# localectl set-locale LANG=ja_JP.UTF-8
# localectl status
# date
# timedatectl set-timezone Asia/Tokyo
# timedatectl status
# yum -y install httpd
# vi /etc/httpd/conf/httpd.conf … ServerName をコメントイン
# systemctl start httpd
# systemctl enable httpd
# usermod -a -G apache ec2-user
# echo 'test' > /var/www/html/index.html
以下でアクセスすると「test」と表示される。
http://203.0.113.1/
■ファイル同期の確認
テスト用に領域を作成する。
# mkdir /var/www/test
# mkdir /var/www/test/html
# echo 'test' > /var/www/test/html/index.html
# mkdir /var/www/copy
# chown -hR apache. /var/www/test
# chown -hR apache. /var/www/copy
/var/www/test の内容を /var/www/copy に複製する。(それぞれ最後のスラッシュは「ディレクトリである」ことを示すので必要。)
# rsync -a /var/www/test/ /var/www/copy/
/var/www/test の内容を /var/www/copy に複製する。ただし .git と log は複製対象外とする。
# rsync -a /var/www/test/ /var/www/copy/ --exclude '.git/' --exclude 'log/'
■ファイル自動同期の設定
rsyncをインストール。
# amazon-linux-extras install epel -y
# yum install --enablerepo=epel lsyncd -y
# vi /etc/lsyncd.conf
# systemctl start lsyncd
# systemctl enable lsyncd
# systemctl status lsyncd
/etc/lsyncd.conf の内容は以下のとおり。
settings {
logfile = "/var/log/lsyncd.log", -- ログファイルのパス
statusFile = "/var/run/lsyncd.status", -- ステータスファイルのパス
insist = true -- エラー発生時に自動的に再起動
}
sync {
default.rsync, -- rsync を使用した同期
source = "/var/www/test", -- 監視対象ディレクトリ
target = "/var/www/copy", -- 複製先ディレクトリ
exclude = { -- 除外するディレクトリ
".git/",
"log/"
},
rsync = {
archive = true, -- アーカイブモード(ファイルのパーミッション、タイムスタンプなどを保持)
compress = true, -- 圧縮を有効化
owner = true, -- ユーザ情報を保つ
group = true -- グループ情報を保つ
}
}
■メモ
動作確認用にApacheユーザになる場合。
$ sudo su -s /bin/bash - apache
複製先の内容をクリアする場合。
# rm -rf /var/www/copy
# mkdir /var/www/copy
# chown -hR apache. /var/www/copy