質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

同期

複数のディレクトリに存在するファイルを更新した場合に、すべてのファイルにも更新が行われる事、又は、同じ記憶領域に同時にアクセスして内容の整合性が失われてしまう事をを防ぐ制御などを同期と呼びます。

Q&A

解決済

2回答

1719閲覧

同期元がシンボリックリンクのディレクトリをlsyncdで同期したい

mukimukiman

総合スコア13

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

同期

複数のディレクトリに存在するファイルを更新した場合に、すべてのファイルにも更新が行われる事、又は、同じ記憶領域に同時にアクセスして内容の整合性が失われてしまう事をを防ぐ制御などを同期と呼びます。

0グッド

0クリップ

投稿2021/05/20 03:22

質問内容

同期元がシンボリックリンクになっているディレクトリをlsyncdで同期したいと思っております。
例えば同期元のディレクトリが以下のような構成になっている状態で

$ ls -la /source drwxr-xr-x 5 root root 6144 May 20 10:56 . drwxr-xr-x 5 root root 6144 Apr 14 13:18 .. drwxr-xr-x 18 root root 6144 May 19 22:01 01 drwxr-xr-x 18 root root 6144 May 20 03:21 02 lrwxrwxrwx 1 root root 5 May 20 10:51 latest -> 02

lsyncdの設定を以下のように設定した場合

settings { logfile = "/var/log/lsyncd.log", statusFile = "/var/tmp/lsyncd.status", maxProcesses = 8, statusInterval = 1, insist = 1, } sync { default.rsync, source = "/source/latest", target = "/tmp/source", delay = 1, rsync = { owner = true, group = true, perms = true, }, }

/source/02のファイル変更については同期されるのですが、 例えばlatestのリンク先を/source/03に変更してしまうと/source/03のファイルが変更されても同期がされなくなってしまいます。

/var/tmp/lsyncd.status を見てみると、以下のように同期元の実体のディレクトリを監視している?ようなので同期されないのかと思ったのですが、常に/source/latestで指定しているリンク先を同期するためにはどのような設定やオプション指定をすれば実現できるでしょうか。

Lsyncd status report at Wed May 19 22:30:13 2021 Sync1 source=/source/02/ There are 0 delays Filtering: nothing. Inotify watching 10578 directories 1: /source/02/hoge/
バージョン情報

OS: Ubuntu 20.04.2 LTS (Focal Fossa)
lsyncd: 2.2.3

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

lsyncdはサービス起動時にsourceで指定されたディレクトリを(linuxjm.osdn.jp)inotify APIを使用して監視する仕組みなのでlatestを変更した際に、lsyncdを再起動するしかないと思います。

ただ、lsyncdを再起動して質問者さんの要件が満たせるかは疑問ですが。

投稿2021/05/20 06:31

編集2021/05/20 06:33
Y.H.

総合スコア7914

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mukimukiman

2021/05/20 07:05

ご回答ありがとうございます! 変更されたlatestのリンク先から最新のファイルを常に同期したいと思っていたので、lsyncdを再起動しないといけないとなるとやりたいことを満たすのは難しそうですね、定期的にrsyncなどを実行する方が良さそうな感じでしょうか。
Y.H.

2021/05/20 07:45

そうですね。。。
mukimukiman

2021/05/20 08:02

ご回答頂きましてありがとうございました! lsyncdでは対応が難しそうと言うことが分かりましたのでrsyncを利用して対応を検討させて頂きます。
guest

0

lsyncdは使ったことないですが、一般論が通じるとすると、

source = "/source/latest/.",

.をつけるとどうでしょうか?

投稿2021/05/20 04:58

otn

総合スコア84423

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mukimukiman

2021/05/20 05:44

ご回答ありがとうございます! 教えて頂いた設定に変更してみたのですが、事象は変わらずでした。
otn

2021/05/20 08:56

動的に変更したいと言うことだったんですね。
mukimukiman

2021/05/20 12:37

説明が不足しておりましてすみませんでした。 ご回答頂きましてありがとうございました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問