How to Compile inotify-tools for Rocky Linux
How to Compile inotify-tools for Rocky Linux
https://docs.rockylinux.org/books/learning_rsync/06_rsync_inotify/
Compile and install¶
Perform the following operations in the server. In your environment, some dependent packages may be missing. Install them by using: dnf -y install autoconf automake libtool
[root@Rocky ~]# wget -c https://github.com/inotify-tools/inotify-tools/archive/refs/tags/3.21.9.6.tar.gz
[root@Rocky ~]# tar -zvxf 3.21.9.6.tar.gz -C /usr/local/src/
[root@Rocky ~]# cd /usr/local/src/inotify-tools-3.21.9.6/
[root@Rocky /usr/local/src/inotify-tools-3.21.9.6]# ./autogen.sh &&
./configure –prefix=/usr/local/inotify-tools &&
make &&
make install
…
[root@Rocky ~]# ls /usr/local/inotify-tools/bin/
inotifywait inotifywatch
Append the environment variable PATH, write it to the configuration file and let it take effect permanently.
[root@Rocky ~]# vim /etc/profile … PATH=$PATH:/usr/local/inotify-tools/bin/ [root@Rocky ~]# . /etc/profile
Why not use the inotify-tools RPM package of the EPEL repository? And the way to use source code to compile and install?
The author personally believes that remote data transmission is a matter of efficiency, especially in a production environment, where there are a large number of files to be synchronised and a single file is particularly large. In addition, the new version will have some bug fixes and function expansions, and perhaps the transmission efficiency of the new version will be higher, so I recommend installing inotify-tools by source code. Of course, this is the author’s personal suggestion, not every user must follow. Kernel parameter adjustment¶
You can adjust the kernel parameters according to the needs of the production environment. By default, there are three files in /proc/sys/fs/inotity/
[root@Rocky ~]# cd /proc/sys/fs/inotify/ [root@Rocky /proc/sys/fs/inotify]# cat max_queued_events ;cat max_user_instances ;cat max_user_watches 16384 128 28014
max_queued_events-maximum monitor queue size, default 16384
max_user_instances-the maximum number of monitoring instances, the default is 128
max_user_watches-the maximum number of files monitored per instance, the default is 8192
Write some parameters and values to /etc/sysctl.conf, examples are as follows. Then use sysctl -p to make the files take effect
fs.inotify.max_queued_events = 16384 fs.inotify.max_user_instances = 1024 fs.inotify.max_user_watches = 1048576
Related commands¶
The inotify-tools tool has two commands, namely:
inotifywait: for continuous monitoring, real-time output results. It is generally used with the rsync incremental backup tool. Because it is a file system monitoring, it can be used with a script. We will introduce the specific script writing later.
inotifywatch: for short-term monitoring, output results after the task is completed.
inotifywait mainly has the following options:
-m means continuous monitoring -r Recursive monitoring -q Simplify output information -e specifies the event type of monitoring data, multiple event types are separated by commas in English status
The event types are as follows: Event Type Description access Access to the contents of a file or directory modify The contents of the file or directory are written attrib The attributes of the file or directory are modified close_write File or directory is opened in writable mode and then closed close_nowrite File or directory is closed after being opened in read-only mode close Regardless of the read/write mode, the file or directory is closed open File or directory is opened moved_to A file or directory is moved to the monitored directory moved_from A file or directory is moved from the monitored directory move There are files or directories that are moved to or removed from the monitoring directory move_self The monitored file or directory has been moved create There are files or directories created in the monitored directory delete A file or directory in the monitored directory is deleted delete_self The file or directory has been deleted unmount File system containing unmounted files or directories
Example: [root@Rocky ~]# inotifywait -mrq -e create,delete /rsync/ Demonstration of inotifywait command¶
Type the command in the first terminal pts/0, and the window is locked after pressing Enter, indicating that it is monitoring
[root@Rocky ~]# inotifywait -mrq -e create,delete /rsync/
In the second terminal pts/1, go to the /rsync/ directory and create a file.
[root@Rocky ~]# cd /rsync/ [root@Rocky /rsync]# touch inotify
Back to the first terminal pts/0, the output information is as follows:
[root@Rocky ~]# inotifywait -mrq -e create,delete /rsync/ /rsync/ CREATE inotify
Combination of inotifywait and rsync¶
tip
We are operating in Rocky Linux 8 server, using SSH protocol for demonstration.
For the password-free authentication login of the SSH protocol, please refer to rsync password-free authentication login, which is not described here. An example of the content of a bash script is as follows. You can add different options after the command according to your needs to meet your needs. For example, you can also add –delete after the rsync command.
#!/bin/bash a=”/usr/local/inotify-tools/bin/inotifywait -mrq -e modify,move,create,delete /rsync/” b=”/usr/bin/rsync -avz /rsync/* testfedora@192.168.100.5:/home/testfedora/” $a | while read directory event file do $b &» /tmp/rsync.log done
[root@Rocky ~]# chmod +x rsync_inotify.sh [root@Rocky ~]# bash /root/rsync_inotify.sh &
tip
When using the SSH protocol for data synchronisation transmission, if the SSH service port of the target machine is not 22, you can use a method similar to this—— b=”/usr/bin/rsync -avz -e ‘ssh -p [port-number]’ /rsync/* testfedora@192.168.100.5:/home/testfedora/”
tip
If you want to start this script at boot [root@Rocky ~]# echo “bash /root/rsync_inotify.sh &” » /etc/rc.local [root@Rocky ~]# chmod +x /etc/rc.local
If you are using the rsync protocol for synchronisation, you need to configure the rsync service of the target machine, please refer to rsync demo 02, rsync configuration file, rsync free Secret authentication login April 10, 2024