GNU/Linux >> Linux の 問題 >  >> Linux

Linuxでローカルディレクトリとリモートディレクトリを同期する方法

このチュートリアルでは、 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でローカルディレクトリとリモートディレクトリを同期する方法を知っています。ご覧のとおり、これは非常に簡単で簡単な方法です。

これがお役に立てば幸いです。


Linux
  1. Linuxでディレクトリを再帰的に検索および削除する方法

  2. Ubuntu20.04でLsyncdを使用してディレクトリを同期する方法

  3. Linux:一方向でファイルを継続的に同期する

  1. Linuxでファイルとディレクトリをアーカイブする方法[パート2]

  2. Linuxでファイルとディレクトリをアーカイブする方法[パート1]

  3. Git ブランチのローカルおよびリモートの名前を変更する方法

  1. Linuxでファイルとディレクトリをコピーする方法

  2. Linuxでファイルとディレクトリの名前を変更する方法

  3. Linux で空のディレクトリとファイルを見つけて削除する方法