このチュートリアルでは、 Lsyncdを使用してLinuxでローカルディレクトリとリモートディレクトリを同期する方法について説明します。 (ライブ同期デーモン)。 Lsyncdを使用すると、ローカルをローカルディレクトリに、またはローカルをリモートディレクトリにミラーリングできます。新しいコンテンツで頻繁に更新されるディレクトリ間でデータを同期する場合に便利です。 Lsyncdは、ローカルディレクトリツリーを、リモートミラーへの予想される変更の目立たないプロファイルと同期するように設計されています。安全な領域からそれほど安全ではない領域にデータを同期することは特に便利です。
LinuxにLsyncdをインストールする
DebianおよびUbuntuなどのその派生物では、LinuxMintは次のコマンドを実行してLsyncdをインストールします。
$ sudo apt-get install lsyncd
RHEL、CentOSでは、最初にEPELリポジトリを有効にする必要があります。
$ sudo yum install epel-release
次に、次のコマンドを使用してLsyncdをインストールします。
$ sudo yum install lsyncd
DebianとUbuntuおよびその派生物でのLsyncd構成
Lsyncdは、DEBベースのシステムでデフォルトの構成ファイルを提供しません。手動で作成する必要があります。ただし、Lsyncdには、同期の内容と方法の基本的な考え方を理解するのに役立つサンプル構成ファイルがいくつか含まれています。構成ファイルの例は、 "/ usr / share / doc / lsyncd-* / examples"にあります。 ディレクトリ。
$ ls /usr/share/doc/lsyncd/examples/
出力例:
lbash.lua lgforce.lua lpostcmd.lua lrsyncssh.lua lecho.lua limagemagic.lua lrsync.lua
上記の出力にあるように、各構成ファイルは .luaで終わります。 拡大。これは、lsync構成ファイルがLuaプログラミング言語を使用して記述されているためです。 。サンプルの設定ファイルを見てみましょう。
$ cat /usr/share/doc/lsyncd/examples/lrsync.lua
Lrsync構成ファイルは次のようになります。
---- -- User configuration file for lsyncd. -- -- Simple example for default rsync. -- settings = { statusFile = "/tmp/lsyncd.stat", statusInterval = 1, } sync{ default.rsync, source="src", target="trg", }
RHELおよびCentOSでのLsyncd構成
RHELおよびCentOSシステムでは、Lsyncd構成ファイルが自動的に作成されます。次のコマンドを使用して、このファイルの内容を表示できます:
$ cat /etc/lsyncd.conf
また、構成ファイルの例は次の場所にあります。
$ ls /usr/share/doc/lsyncd-2.1.5/examples/
Lsyncdを使用してLinuxのローカルディレクトリとリモートディレクトリを同期する
すでに述べたように、Lyncdはコンテンツを2つのローカルディレクトリと1つのローカルディレクトリをリモートディレクトリに同期できます。まず、ローカルディレクトリを同期する方法を説明します。
1。 Debian、Ubuntuでローカルディレクトリを同期する
次に、2つのローカルディレクトリを同期します。
いくつかのサンプルコンテンツを含む2つのディレクトリを作成しましょう。
$ sudo mkdir source_dir
$ sudo mkdir dest_dir
source_dirディレクトリにランダムファイルを作成します:
$ sudo touch source_dir/file{1..10}
オプションで、Lysyncdのいくつかのログファイルを作成できます。これはオプションです。ログファイルが必要ない場合は、この手順をスキップしてください。
$ sudo mkdir /var/log/lsyncd
$ sudo touch /var/log/lsyncd/lsyncd.{log,status}
次に、Lsyncdの構成ファイルを作成します:
$ sudo mkdir /etc/lsyncd
$ sudo nano /etc/lsyncd/lsyncd.conf.lua
次の行を編集/変更します:
settings { logfile = "/var/log/lsyncd/lsyncd.log", statusFile = "/var/log/lsyncd/lsyncd.status" } sync { default.rsync, source = "/home/sk/source_dir", target = "/home/sk/dest_dir", }
ソースディレクトリとターゲットディレクトリのパスを独自の値に置き換えます。ファイルを保存して閉じます。
次のコマンドを使用して、Lsyncdサービスを有効にし、開始または再起動します。
$ sudo systemctl enable lsyncd
$ sudo systemctl restart lsyncd
次に、source_dirおよびdest_dirディレクトリの内容を確認します。
$ ls source_dir/
出力例:
file1 file10 file2 file3 file4 file5 file6 file7 file8 file9
dest_dirの内容を確認してください:
$ ls dest_dir/
出力例:
file1 file10 file2 file3 file4 file5 file6 file7 file8 file9
見る? source_dirディレクトリにのみファイルを作成し、このディレクトリの内容はdest_dirディレクトリに自動的に同期されています。
また、ログファイルを確認して、レプリケーションが完了したかどうかを確認できます。
$ tail -10 /var/log/lsyncd/lsyncd.log
出力例:
Sat Apr 15 17:07:34 2017 Normal: recursive startup rsync: /home/sk/source_dir/ -> /home/sk/dest_dir/ Sat Apr 15 17:07:34 2017 Normal: Startup of "/home/sk/source_dir/" finished.
Lsyncdステータスファイルを確認します:
$ more /var/log/lsyncd/lsyncd.status
出力例:
Lsyncd status report at Sat Apr 15 17:07:44 2017 Sync1 source=/home/sk/source_dir/ There are 0 delays Excluding: nothing. Inotify watching 1 directories 1: /home/sk/source_dir/ダウンロード -無料の電子書籍:「GNU/Linuxの高度な管理」
2。 RHEL、CentOSのローカルディレクトリを同期する
Lsyncd構成ファイルを編集します:
$ sudo nano /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.log", statusFile = "/var/log/lsyncd.status" } sync { default.rsync, source = "/root/source_dir", target = "/root/dest_dir",
ソースディレクトリとターゲットディレクトリのパスを独自の値に置き換えます。ファイルを保存して閉じます。
コマンドを使用してLsyncdサービスを有効にして開始します:
$ sudo systemctl enable lsyncd
$ sudo systemctl start lsyncd
次に、source_dirおよびdest_dirディレクトリの内容を確認します。
$ ls source_dir/
出力例:
file1 file10 file2 file3 file4 file5 file6 file7 file8 file9
dest_dirの内容を確認してください:
$ ls dest_dir/
出力例:
file1 file10 file2 file3 file4 file5 file6 file7 file8 file9
おめでとうございます! source_dirの内容がdest_dirディレクトリに正常に同期されました。
また、ログファイルを確認して、レプリケーションが完了したかどうかを確認できます。
$ tail -10 /var/log/lsyncd.log
Lsyncdステータスファイルを確認します:
$ more /var/log/lsyncd.status
3。 Debian、Ubuntuシステムでリモートディレクトリを同期する
パスワードなしのSSHを設定する必要があります ログインする。これは、Lsyncdがユーザーの介入なしにローカルディレクトリの内容をリモートディレクトリに自動的に複製するためです。
$ sudo su
# ssh-keygen -t rsa
パスフレーズは入力しないでください。 Enterキーを押すだけで、デフォルト値を受け入れることができます。
Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Created directory '/home/sk/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: SHA256:dHc2aKk5F2wBq7CIc5sVHJwYNjoPdwgxDKb1KuBBkgs [email protected] The key's randomart image is: +---[RSA 2048]----+ |o*=.++.. ... | |E..*.+o. o + | |+o+ + = . o O + | |+ .B o = o * + . | |..+ + o S + . | | . o + o | | o | | | | | +----[SHA256]-----+
次に、SSH公開鍵をリモートシステムにコピーします。
# ssh-copy-id [email protected]
出力例:
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub" The authenticity of host '192.168.43.150 (192.168.43.150)' can't be established. ECDSA key fingerprint is SHA256:U7I0O1OOzzbHFlhIG0HoGDr1usHzLBju6Jmr6bUB9Es. Are you sure you want to continue connecting (yes/no)? yes /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys [email protected]'s password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh '[email protected]'" and check to make sure that only the key(s) you wanted were added.
ここで、192.168.43.150はリモートシステムのIPアドレスです。
これで、パスワードを入力しなくてもリモートシステムにSSHで接続できるようになります:
# ssh [email protected]
次のコマンドを使用して、リモートシステムにターゲットディレクトリを作成します:
# mkdir remotesync
リモートシステムからログアウトします:
# exit
次に、ソースマシンでLsyncd構成ファイルを編集します。
$ sudo nano /etc/lsyncd/lsyncd.conf.lua
次の行を編集/変更します:
settings { logfile = "/var/log/lsyncd/lsyncd.log", statusFile = "/var/log/lsyncd/lsyncd.status" } sync { default.rsync, source = "/home/sk/source_dir", host = "192.168.43.150", targetdir = "/root/remotesync", }
ここで、192.168.43.150は私のリモートホストのIPアドレスです。そして、/ root /remotesync/は私のリモートシステムの宛先ディレクトリです。値を独自のものに置き換えます。ファイルを保存して閉じます。
Lsyncdサービスを再起動して、ソースディレクトリの内容を宛先に複製します。
$ sudo systemctl restart lsyncd
次に、リモートシステムにSSHで接続します:
$ ssh [email protected]
そして、ターゲットディレクトリ(この場合は/ root / remotesync /)の内容を確認します。ローカルシステムのソースディレクトリのすべてのファイルが、宛先システムのターゲットディレクトリに複製されていることがわかります。
[email protected] ~]# ls remotesync/ file1 file10 file2 file3 file4 file5 file6 file7 file8 file9
この手順は、RHELおよびCentOSシステムでも同じです。パスワードなしのSSHログインをセットアップし、RHELまたはCentOSシステムのLsyncdメイン構成ファイル(/etc/lsyncd.conf)で正しいソースパスとターゲットパスを変更したことを確認します。残りの手順は同じです。
ダウンロード -無料ガイド:「Linuxシステムを復元する10の簡単な方法」Lsyncdを使用してLinuxでローカルディレクトリとリモートディレクトリを同期する方法を知っています。ご覧のとおり、これは非常に簡単で簡単な方法です。
これがお役に立てば幸いです。