Rsync provides a means of fast low bandwidth incremental file transfer utility. Its connections can be sent in the clear or encrypted via OpenSSH. It is commonly used to do nightly backups and mirror creations.
Daemontools is a collection of tools for managing Unix services. It provides a means of monitoring a service, starting and stopping it and logging any debug and/or error messages. Daemontools provides easy service installation and removal, easy first time service startup, reliable restarts, easy, reliable signalling, clean process state and OS portability.
Ucspi-tcp is a collection of command line tools for building TCP client server applications. It is commonly used as a replacement for inetd and xinetd.
Running rsync from daemontools and ucspi-tcp provides numerous advantages, not the least of which is automatic restarts of crashed services. Ucspi-tcp allows you to restrict the number of connections to the service and limit the connections by IP address. Granted iptables can also limit connections by IP address, but a little defense in depth never hurt.
First verify the daemontools "svscan" process is running. Choose a location where you want the physical service directories. I usually use "/var/service", however any directory may be used as long as it is not "/service".
Create the service directories with the following commands.
# mkdir -m 1755 /var/service/rsync
# mkdir -p -m 755 /var/service/rsync/log
Download the "run" scripts for rsync and its log.
# cd /var/service/rsync
# wget -c
http://www.antagonism.org/scripts/rsync-run
# mv rsync-run run
# chmod 755 run
# cd log
# wget -c
http://www.antagonism.org/scripts/log-run
# mv log-run run
# chmod 755 run
Warning, before using either of my "run" scripts, make sure you understand what the commands do. In the rsync "run" script, the tcpserver options I have configured do the following:
The rsync options I have configured do the following:
Create a "rsync" file in the "/etc/tcp" directory which contains your access controls. A default control list which will allow all traffic may look like this:
:allow
After creating the file, download and edit the Makefile so the line reading "all:" contains the file name "rsync.cdb". Below is an example.
all: rsync.cdb
Running the "make" command will create/update the CDB files as needed.
(The below section is taken almost verbatim from the following page created by John Simpson. I felt that his description on what happens when you activate a service was the most clear and easy to understand, so why change a thing?)
Once the directories are set up, you need to make them start running. This is done by creating a symbolic link from /service/(whatever) to the physical directory where the service lives. The "svscan" program checks /service every five seconds, and when it sees a new directory (or symbolic link) there, it starts a "supervise" process for that directory. In addition, if the directory has the sticky bit set and a child directory called "log", it starts a "supervise" process for the "log" child directory and sets up a pipe between the two processes (so that the main process's logs end up being sent to the log process).
The "supervise" program works by running the "run" script inside of whatever directory it's watching. If that child process (either the "run" script itself, or whatever process it runs using "exec") stops, it starts it back up by running the "run" script again.
The following commands will create the symbolic links needed to start the rsync service.
# ln -s /var/service/sshd /rsync/
After running this command, wait ten seconds (to give it time to start) and then run the "svstat" command to see what's running:
# svstat /service/rsync /service/rsync/log
/service/rsync: up (pid 2542) 7 seconds
/service/rsync/log: up (pid 2544) 7 seconds
As long as the new services show "up" with a timer of more than one second, the services are running correctly. If the timer on a service is 0 or 1 second, then wait about five seconds and run the same command - it should now be higher than 1 second. If it's still 0 or 1, then the service is having a problem and you need to fix it. This page provides some steps to troubleshoot daemontools service installations.
|
||||||||||||||
|
||||||||||||||
|