lsyncdで同期
前回は、CakePHPをComposerからインストールすることに成功しました。
しかしインストールするディレクトリを変更しましたので、ホストマシンからアクセスすることが難しくなってしまいました。開発のしやすさを考えると、共有フォルダを使いたいところです。
そこで、かなり強引な方法ではありますが共有フォルダからインストール先のディレクトリにミラーリングする方法を考えます。
手動で行うのであればrsync
コマンドが使えます。しかし、都度コマンドを叩くのは面倒です。そこで、Google先生にお伺いをたてたところ、lsyncd
というコマンドがあると教えていただきました。
早速試してみましょう。
次のようにしてインストールします。
$ sudo apt -y install lsyncd ↵ Reading package lists... Done Building dependency tree Reading state information... Done The following package was automatically installed and is no longer required: libicu60 Use 'sudo apt autoremove' to remove it. The following additional packages will be installed: liblua5.1-0 lua5.1 The following NEW packages will be installed: liblua5.1-0 lsyncd lua5.1 0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded. Need to get 255 kB of archives. After this operation, 946 kB of additional disk space will be used. Get:1 http://archive.ubuntu.com/ubuntu bionic/universe amd64 liblua5.1-0 amd64 5.1.5-8.1build2 [100 kB] Get:2 http://archive.ubuntu.com/ubuntu bionic/universe amd64 lua5.1 amd64 5.1.5-8.1build2 [93.2 kB] Get:3 http://archive.ubuntu.com/ubuntu bionic/universe amd64 lsyncd amd64 2.1.6-1 [61.5 kB] Fetched 255 kB in 2s (116 kB/s) Selecting previously unselected package liblua5.1-0:amd64. (Reading database ... 104976 files and directories currently installed.) Preparing to unpack .../liblua5.1-0_5.1.5-8.1build2_amd64.deb ... Unpacking liblua5.1-0:amd64 (5.1.5-8.1build2) ... Selecting previously unselected package lua5.1. Preparing to unpack .../lua5.1_5.1.5-8.1build2_amd64.deb ... Unpacking lua5.1 (5.1.5-8.1build2) ... Selecting previously unselected package lsyncd. Preparing to unpack .../lsyncd_2.1.6-1_amd64.deb ... Unpacking lsyncd (2.1.6-1) ... Setting up lua5.1 (5.1.5-8.1build2) ... update-alternatives: using /usr/bin/lua5.1 to provide /usr/bin/lua (lua-interpreter) in auto mode update-alternatives: using /usr/bin/luac5.1 to provide /usr/bin/luac (lua-compiler) in auto mode Setting up liblua5.1-0:amd64 (5.1.5-8.1build2) ... Setting up lsyncd (2.1.6-1) ... Processing triggers for libc-bin (2.27-3ubuntu1) ... Processing triggers for systemd (237-3ubuntu10.39) ... Processing triggers for man-db (2.8.3-2ubuntu0.1) ... Processing triggers for ureadahead (0.100.0-21) ...
ミラーリングするディレクトリを共有フォルダにコピーします。
$ cp -pR /var/www/CakePHP/application_directory/config /vagrant_data/ ↵ $ cp -pR /var/www/CakePHP/application_directory/src /vagrant_data/ ↵ $ cp -pR /var/www/CakePHP/application_directory/templates /vagrant_data/ ↵ $ cp -pR /var/www/CakePHP/application_directory/tests /vagrant_data/ ↵ $ cp -pR /var/www/CakePHP/application_directory/webroot /vagrant_data/ ↵
lsyncd
の設定をします。
$ sudo mkdir /etc/lsyncd ↵ $ sudo vi /etc/lsyncd/lsyncd.conf.lua ↵
/etc/lsyncd/lsyncd.conf.lua
settings { logfile = "/tmp/lsyncd.log", statusFile = "/tmp/lsyncd.status", } sync { default.rsync, source = "/vagrant_data/config/", target = "/var/www/CakePHP/application_directory/config/" } sync { default.rsync, source = "/vagrant_data/src/", target = "/var/www/CakePHP/application_directory/src/" } sync { default.rsync, source = "/vagrant_data/templates/", target = "/var/www/CakePHP/application_directory/templates/" } sync { default.rsync, source = "/vagrant_data/tests/", target = "/var/www/CakePHP/application_directory/tests/" } sync { default.rsync, source = "/vagrant_data/webroot/", target = "/var/www/CakePHP/application_directory/webroot/" }
lsyncd
を起動します。
$ sudo systemctl start lsyncd ↵
lsyncd
が起動したことを確認します。
$ ls -l /tmp/ ↵ total 20 -rw-r--r-- 1 root root 980 May 5 04:10 lsyncd.log -rw-r--r-- 1 root root 2018 May 5 04:10 lsyncd.status drwx------ 2 root root 4096 May 5 00:57 netplan_nta63ywq drwx------ 3 root root 4096 May 5 00:57 systemd-private-658ae01c19774e608ea53b4f05692e1c-apache2.service-ahZ4ur drwx------ 3 root root 4096 May 5 00:57 systemd-private-658ae01c19774e608ea53b4f05692e1c-systemd-resolved.service-9C1AkL
起動が確認できました。
後は使ってみて、思った通りにミラーリングされることを祈りましょう。
参考サイト
Lsyncd - Live Syncing (Mirror) Daemon
Ubuntuにlsyncdを導入する