lsyncd:リスト内の個々のファイルを同期できますか?

lsyncd:リスト内の個々のファイルを同期できますか?

lsyncdを使用してあるLinuxシステムから別のLinuxシステムにいくつかのファイルを同期したいと思います。ファイルは1つのディレクトリに限定されず、すべてのファイルが1つのディレクトリにあることは望ましくありません。

具体的には、特定のメールサーバーファイルを代替サーバーと同期させるよう努めています。リストは次のとおりです。

/etc/postfix/master.cf /etc/postfix/main.cf /etc/postfix/blocked_senders /etc/postfix/relay_recipients /etc/mail/spamassassin/local.cf

一種のリストを使用して、単一の同期セクションでこれらのファイルをすべて指定できますか、それとも別の同期セクションで各個別のファイルを構成する必要がありますか?

答え1

私はお勧めします

--[[
The _extra= hack allows synchronization of individual files. Use one sync {}
stanza per source directory. Use additional --include= lines to handle multiple
files within a single source directory.
]]

sync {
  default.rsync,
  delay = 0,
  source = "/etc/postfix/",
  target = "standby.example.com:/etc/postfix/",
  rsync = {
    _extra = {
      "--include=master.cf",
      "--include=main.cf",
      "--include=blocked_senders",
      "--include=relay_recipients",
      "--exclude=*",
    }
  }
}

sync {
  default.rsync,
  delay = 0,
  source = "/etc/mail/spamassassin/",
  target = "standby.example.com:/etc/mail/spamassassin/",
  rsync = {
    _extra = {
      "--include=local.cf",
      "--exclude=*",
    }
  }
}

lsyncdはディレクトリレベルで設定されたトリガを介して変更を効果的に検出するため、各ソースディレクトリにsync {}セクションが必要だと思います。

答え2

これは古いものですが、Davidの応答を「lsyncd」コンテキストに入れたかったのです。構成例は次のとおりです(私のシステムの1つでテストされ検証されています)。

sync {
   default.rsyncssh,
   source = "/tmp",
   host = "gw2",
   targetdir = "/tmp",
   delete = false,
   rsync = { _extra = { "--files-from=/etc/lsyncd/files.list" } }
}

/etc/lsyncd/files.listファイルには、「ターゲット」(ここでは/ tmp)への相対パスと同期したいファイルが含まれています。

答え3

ファイルに保存ファイル一覧

rsync -a --files-from=file_list /source /dest

これらのファイルが5つしかない場合は、-c(チェックサムチェック)と-z(圧縮)オプションを使用することもできます。

関連情報