この記事では、 Lsyncdの設定方法について説明します。 ローカルとSSHの両方でツールを使用して、ディレクトリの同期を維持します。
Lsyncd Live Syncing Mirror Daemonの略で、Linuxシステムでディレクトリの同期を維持するために使用されるツールです。これらのディレクトリは、ローカル、同じマシン内、またはリモートで異なるマシンにあります。リモート同期の場合、この記事ではSSHを使用して同期を実現することに焦点を当てています。
Lsyncdを使用する利点 これは、ファイルシステムのパフォーマンスに影響を与えない無料で軽量のソリューションであるということです。ファイルの変更を定期的に監視してから、rsync
を使用します 同期を実行します。
Lsyncdの場合 正しく動作するには、rsync
が必要です インストールされています。
注: 次のコマンドをsudoとして実行することをお勧めします
rsync
をインストールするには CentOS、Fedora、またはRed Hatシステムでは以下を使用します:
yum install rsync
UbuntuまたはDebianシステムの場合:
apt-get update
apt-get install rsync
Lsyncdをインストール
lsyncd
をインストールするには CentOS、Fedora、またはRed Hatシステムでは、lsyncd
をインストールする前にEPELリポジトリを有効にする必要があります。 。インストールを実行するには、次のコマンドを使用します。
yum install epel-release
yum install lsyncd
UbuntuまたはDebianシステムの場合、lsyncd
ツールはデフォルトのリポジトリに含まれているため、インストールには次のコマンドで十分です。
sudo apt-get update
sudo apt-get install lsyncd
インストールが成功したことを確認し、インストールされたバージョンを確認するには、次のコマンドを使用します。
lsyncd -version
Lsyncd構成ファイル
Lsyncdのデフォルトの構成ファイルは、/etc/lsyncd.conf
に自動的に作成されます。 インストールが完了したとき。
このファイルには、ローカルまたはリモートでディレクトリ間の同期を実行するために使用されるすべてのパラメータが含まれています。
たとえば、構成ファイルは、/usr/share/doc/lsyncd*/examples/
の内容を確認できます。 (*はインストールされているLsyncdバージョンを示します。)
cd /usr/share/doc/lsyncd-2.2.2/examples/
ls -lh
total 40
-rw-r--r--. 1 root root 715 Feb 16 2017 lalarm.lua
-rw-r--r--. 1 root root 1055 Feb 16 2017 lbash.lua
-rw-r--r--. 1 root root 534 Feb 16 2017 lecho.lua
-rw-r--r--. 1 root root 3376 Feb 16 2017 lftp.lua
-rw-r--r--. 1 root root 2278 Feb 16 2017 lgforce.lua
-rw-r--r--. 1 root root 2737 Feb 16 2017 limagemagic.lua
-rw-r--r--. 1 root root 2770 Feb 16 2017 lpostcmd.lua
-rw-r--r--. 1 root root 211 Feb 16 2017 lrsync.lua
-rw-r--r--. 1 root root 204 Feb 16 2017 lrsyncssh.lua
-rw-r--r--. 1 root root 4047 Feb 16 2017 lsayirc.lua
この記事の目的上、有用な例となる構成ファイルはlrsync.lua
です。 ローカル同期の場合、およびlrsyncssh.lua
リモート同期用。
構成ファイルの構造は次のとおりです。
cat /usr/share/doc/lsyncd-2.2.2/examples/lrsync.lua
[...]
-- User configuration file for lsyncd.
-- Simple example for default rsync.
settings {
statusFile = "/tmp/lsyncd.stat",
statusInterval = 1,
}
sync{
default.rsync,
source="src",
target="trg"
}
前述のように、Lscyndはrsync
を使用します 同期を実行するためのツールなので、rsync
を使用できます rsync
を追加してプロセスをパーソナライズするためのフラグ sync
へのパラメータ ステートメント:
[...]
sync {
default.rsync,
source="src",
target="trg",
rsync = {
archive = false,
compress = true,
links = false,
owner = false,
perms = false,
verbose = true
}
}
[...]
また、変更が行われたかどうかを確認する前に、Lsyncdがデフォルトの20秒間イベントを集約することを考慮することが重要です。この時間は、delay
を使用して変更できます sync
のパラメータ 構成ファイルのセクション:
sync {
default.rsync,
source = "src",
target = "trg",
delay = 5,
}
ローカルディレクトリ/path/source_dir
の内容を同期するには ローカルディレクトリ/path/destination_dir
構成ファイルにいくつかの変更を加える必要があります。オプションの手順ですが、タスクの進行状況を追跡するためにログファイルとステータスファイルを作成することをお勧めします。
mkdir /var/log/lsyncd
touch /var/log/lsyncd/lsyncd.{log,status}
次のステップは、/etc/lsyncd.conf
の構成ファイルを変更することです。 ソースディレクトリとターゲットディレクトリ、および作成されている場合はログファイルとステータスファイルの場所を指定します。構成は次のようになります。
-- User configuration file for lsyncd.
-- Simple example for default rsync, but executing moves through on the target.
-- For more examples, see /usr/share/doc/lsyncd*/examples/
settings {
logfile = "/var/log/lsyncd/lsyncd.log",
statusFile = "/var/log/lsyncd/lsyncd.status"
}
sync {
default.rsync,
source = "/path/source_dir",
target = "/path/destination_dir"
}
この新しい構成をアクティブ化するには、次のコマンドでサービスを開始します。
systemctl start lsyncd
上記の手順に従った後、Lsyncdは/path/source_dir
からコンテンツの同期を開始します /path/destination_dir
へ 。
警告 :宛先ディレクトリが他のLsyncdによって変更されないことが確実な場合にのみ、起動時にLsyncdを開始できるようにするのが安全です。それ以外の場合は、起動時にLsyncdを有効にせず、MOTDにLsyncdがインストールされて使用されていることを示す行が含まれていることを確認してください。例:
再起動時に、次の手順を実行します。
「リモート/サーバー」の状況にあるかどうかをrsyncで確認します:
rsync -n -avrc root@REMOTE_SERVER:/PATH_TO_FOLDER_TO_BE_SYNCED/* /PATH_TO_FOLDER/
Lsyncdを次のコマンドで開始します:
systemctl start lsyncd.service
複数のローカルディレクトリを同期する必要がありますか?
複数のディレクトリペアを同期するために、sync
を追加することができます。 構成ファイルのステートメント:
[...]
sync{
default.rsync,
source = "/path/source_1",
target = "/path/target_1"
}
sync{
default.rsync,
source = "/path/source_2",
target = "/path/target_2"
}
[...]
Lsyncdを使用してリモート同期を実行するには、ソースサーバーがターゲットサーバーへのパスワードなしのSSHアクセスを持っている必要があります。これは、ソースでSSHキーを作成することによって行われます。 サーバー。
SSHパスワードなしアクセス用のキーを生成します
ソースサーバーで次のコマンドを使用します キーを生成するには:
ssh-keygen -t rsa
キーを保存するファイルを入力するように求められます。特別な構成がない限り、デフォルトの場所を使用するには空のままにしておきます。この後、別のプロンプトでパスフレーズを要求されます。完全なパスワードなしのログインが必要なため、これは空のままにしておきます。
キーが生成されたので、キーを宛先にコピーします サーバ。これをauthorized_keys
にコピーするには 宛先サーバーのファイルについては、ソースで次の手順を使用してください キーが生成されたサーバー:
sudo su
ssh-copy-id DESTINATION_SERVER_IP
パスワードなしの接続が完了したことをテストするには、宛先にログインします ソースからのサーバー 1つ:
ssh DESTINATION_SERVER_IP
パスワードの入力を求められずにログに記録できる場合、プロセスは成功しています。
ログインしたので、宛先フォルダとして機能するディレクトリをリモートホストに作成し、SSHセッションを終了します。
mkdir /path/remote_destination_dir
exit
exit
構成ファイルの構造は、ローカルディレクトリの同期のセクションで説明したとおりですが、sync
にいくつかの変更が加えられます。 ステートメント:
-
default.rsync
プロパティはdefault.rsyncssh
に変更されますrsync
を有効にするには SSH経由のツール。 target
プロパティは、リモート宛先を指定するために2つのプロパティに置き換えられます:host
およびtargetdir
。
構成ファイルは次のようになります:
[...]
settings = {
logfile = "/var/log/lsyncd/lsyncd.log",
statusFile = "/var/log/lsyncd/lsyncd.status"
}
servers = {
"REMOTE_IP"
}
sourceList =
{
"PATH_TO_FOLDER_TO_BE_SYNCED",
}
for _, source in ipairs( sourceList ) do
for _, server in ipairs(servers) do
sync {
default.rsyncssh,
source = "/path/source_dir",
host = "DESTINATION_SERVER_IP",
targetdir = "/path/remote_destination_dir"
}
[...]
構成ファイルに変更が加えられたら、上記の説明に従ってサービスを開始します。
systemctl start lsyncd
Lsyncdサービスがすでに実行されている場合は、再起動するだけです:
sudo service lsyncd restart
警告: 宛先ディレクトリが他のLsyncdによって変更されないことが確実な場合にのみ、起動時にLsyncdを開始できるようにするのが安全です。それ以外の場合は、起動時にLsyncdを有効にせず、MOTDにLsyncdがインストールされて使用されていることを示す行が含まれていることを確認してください。例:
再起動時に、次の手順を実行します。
「リモート/サーバー」の状況にあるかどうかをrsyncで確認する
rsync -n -avrc root@REMOTE_SERVER:/PATH_TO_FOLDER_TO_BE_SYNCED/* /PATH_TO_FOLDER/
Lsyncdを開始する
systemctl start lsyncd.service
Lsyncdからのディレクトリの除外
特定のディレクトリで選択したフォルダを除外する必要がある場合があります。例:
- NFSでマウントされたメディアファイル。
- ログファイル。同期すると、ログファイルによって不要なチャタリングと帯域幅の使用が多く発生します。場合によっては、これにより同期が大幅に遅れる可能性があります。
- 実行中のプロセスによって使用される一時ファイル。
フォルダを除外するには、除外されたフォルダの相対パスを入力するだけです。例:
- / var / www スレーブに同期される宛先ディレクトリです
- /var/www/vhosts/www.example.com/wp-content/uploads NFSサーバーからマウントされたディレクトリ、または同期したくないディレクトリです。
- lsyncd構成で除外を作成します。 CentOS6でLsyncd2.1.5を使用していると仮定すると、最初に、以下の「excludeFrom行」の横に示すように、Lsyncdの構成内にexcludesファイルが配置されていることを確認します。
vim /etc/lsyncd/lsyncd.conf
[...]
sync {
default.rsyncssh,
source="/var/www/",
host=server,
targetdir="/var/www/",
excludeFrom="/etc/lsyncd-excludes.txt",
rsync = {
次に、同期用に指定されたソースディレクトリからの相対パスを除外します。ターゲットディレクトリは/var/ wwwであり、除外するディレクトリは/var/www/vhosts/www.example.com/wp-content/uploadsであるため、エントリは次のようになります。
cat /etc/lsyncd-excludes.txt
vhosts/www.example.com/wp-content/uploads
注意:excludesファイルに空の行が含まれていないことを確認してください。含まれている場合、lsyncdはこれを「exclude /」として扱い、すべてが除外されます。
NFSソリューションでのLsyncd
Lsyncdは通常、マスタースレーブアーキテクチャでファイルを複製するために使用されます。これはコンテンツ/コードの更新を処理するのに最適ですが、ユーザーが投稿したファイルやメディアファイルの場合は、NFSを使用してさまざまなWebサーバー間でフォルダーを共有する方が簡単な場合がよくあります。 NFSを介して共有されるフォルダーをLsyncdから除外するように十分注意してください。マスターサーバーが再起動されてもNFS共有のマウントに失敗するという最悪のシナリオでは、LsyncdがNFS共有のコンテンツを消去する可能性があります。
これを処理する方法はいくつかあります。
オプション1:Lsyncdからディレクトリを除外する
詳細については、「Lsyncdからのディレクトリの除外」のセクションを参照してください
オプション2:シンボリックリンクを使用する
デフォルトでは、Rsyncはシンボリックリンクのターゲットでは機能しません。これを使用して、NFSにマウントされたコンテンツを保護できます。
代わりに:
/ var / www <–Lsyncdレプリケーションのルートフォルダ/ uploads <–NFS共有マウントポイント
NFS共有を別のフォルダー(たとえば/ nfsmount)にマウントしてから、次の手順を実行します(アップロードコンテンツがすでに/ nfsmount / uploadsにコピーされていると仮定します):
cd /var/www
rm -Rf uploads
ln -s /nfsmount/uploads uploads
これで、NFSにマウントされたコンテンツは、Lsyncdで複製されたディレクトリツリーの外部に安全に配置されます。
オプション3:rsyncパラメーターを設定する
Rsyncは、ファイルシステムの境界を越えないようにrsyncに指示する-xオプションをサポートしています。ただし、先に進む前に、これを試す前に知っておく必要のある注意事項がいくつかあります。
- これは、Cloud Block Storageボリューム、追加のLVMボリュームなどでは機能しません。
- LsyncdがNFSサーバーと同じサーバー上にある場合、これは機能しません。このオプションは、専用のNFSサーバーがあることを前提としています
- これは、ソースが単一のファイルシステムである場合にのみ機能します
Lsyncd 2.0.xの場合:/etc/lsyncd.luaのrsyncOpts行を編集して、Lsyncdがrsyncに渡すオプションにこのオプションを追加します:
sync{
default.rsyncssh,
source="/var/www",
host="10.x.x.x",
targetdir="/var/www",
delete="running",
rsyncOpts="-avzx"
}
Lsyncd 2.1.xの場合:Lsyncd 2.1.xでは、rsyncOptsがrsync ={options}に変更され、以前のように単なる文字ではなく、フルネームのオプションが使用されています。以下を/etc/lsyncd.confに追加します:
sync{
default.rsyncssh,
source="/var/www",
host="10.x.x.x",
targetdir="/var/www",
delete="running",
rsync={ one_file_system=true }
}
Lsyncdを使用してローカルフォルダーとリモートフォルダーの同期を維持することは、経済的で効率的な代替手段であり、構成ファイルで使用できる複数のオプションのおかげで、ニーズに合わせてパーソナライズできます。
- rsyncを使用してファイルを同期する
コメントや質問をするには、[フィードバック]タブを使用します。私たちと会話を始めることもできます。