lsyncd เป็นเครื่องมือช่วยในการ sync ข้อมูลผ่าน rsync โดยไม่ต้องสั่ง rsync ทุกครั้งที่มีข้อมูลเปลี่ยนแปลง lsyncd จะทำงานเป็น deamon คอยดูการเปลี่ยนแปลงของไฟล์ในไดเรคทอรี source และสั่ง sync ไปยังไดเรคทอรีปลายทาง หรือเครื่องปลายทางได้ ยกตัวอย่าง เช่น sync ข้อมูลเครื่องที่ 1 ไปยังเครื่องที่ 2 แบบอัตโนมัติทุกครั้งที่มีการเปลี่ยนแปลง เป็นต้น
เริ่มจากสร้าง ssh key ที่เครื่องหลัก
ssh-keygen
จากนั้นสั่ง ssh-copy-id คัดลอก ssh key ไปยังเครื่องปลายทาง
ssh-copy-id remote_mirror_ip_address
สร้าง source ไดเรคทอรีเก็บไฟล์ที่ต้องการ sync
mkdir /source
ให้ ssh ไปที่เครื่องปลายทาง จากนั้นสร้างไดเรคทอรี /target ที่เครื่องปลายทางดังนี้
mkdir /target
กลับมาที่เครื่องหลัก ติดตั้ง lsyncd ดังนี้
sudo apt-get install lsyncd
เขียน config ลงในไฟล์ /etc/lsyncd/lsyncd.conf.lua ดังนี้
settings { logfile = "/var/log/lsyncd/lsyncd.log", statusFile = "/var/log/lsyncd/lsyncd.status" } sync { default.rsyncssh, source = "/source", host = "remote_mirror_ip_address", targetdir = "/target" }
จากนั้นสั่ง restart lsyncd ได้เลย
sudo service lsyncd restart
ทดลองสร้างไฟล์ลงใน /source ดังนี้
touch /source/file{1..1000}
คุณจะได้ไฟล์ file1-file1000 ใน /source
ให้คุณ ssh ไปยังเครื่องปลายทางจะพบว่า /target มีไฟล์ที่ sync มาจากเครื่องหลักแล้ว