Memo

メモ > サーバ > 各論: エトセトラ > rsync

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

Advertisement