#! /bin/sh ### BEGIN INIT INFO # Provides: rsyncd # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Should-Start: $named autofs # Default-Start: 2 3 4 5 # Default-Stop: # Short-Description: fast remote file copy program daemon # Description: rsync is a program that allows files to be copied to and # from remote machines in much the same way as rcp. # This provides rsyncd daemon functionality. ### END INIT INFO set -e # /etc/init.d/rsync: start and stop the rsync daemon setvar DAEMON = "/usr/bin/rsync" setvar RSYNC_ENABLE = 'false' setvar RSYNC_OPTS = '''' setvar RSYNC_DEFAULTS_FILE = "/etc/default/rsync" setvar RSYNC_CONFIG_FILE = "/etc/rsyncd.conf" setvar RSYNC_PID_FILE = "/var/run/rsync.pid" setvar RSYNC_NICE_PARM = '''' setvar RSYNC_IONICE_PARM = '''' test -x $DAEMON || exit 0 source /lib/lsb/init-functions if test -s $RSYNC_DEFAULTS_FILE { source $RSYNC_DEFAULTS_FILE case{ xtrue|xfalse { } xinetd { exit 0 } * { log_failure_msg "Value of RSYNC_ENABLE in $RSYNC_DEFAULTS_FILE must be either 'true' or 'false';" log_failure_msg "not starting rsync daemon." exit 1 } } case{ x[0-9]|x1[0-9] { setvar RSYNC_NICE_PARM = ""--nicelevel $RSYNC_NICE""} x { } * { log_warning_msg "Value of RSYNC_NICE in $RSYNC_DEFAULTS_FILE must be a value between 0 and 19 (inclusive);" log_warning_msg "ignoring RSYNC_NICE now." } } case{ x-c[123]* { setvar RSYNC_IONICE_PARM = "$RSYNC_IONICE"} x { } * { log_warning_msg "Value of RSYNC_IONICE in $RSYNC_DEFAULTS_FILE must be -c1, -c2 or -c3;" log_warning_msg "ignoring RSYNC_IONICE now." } } } export PATH="${PATH:+$PATH:}/usr/sbin:/sbin" proc rsync_start { if test ! -s $RSYNC_CONFIG_FILE { log_failure_msg "missing or empty config file $RSYNC_CONFIG_FILE" log_end_msg 1 exit 0 } # See ionice(1) if test -n $RSYNC_IONICE_PARM && test -x /usr/bin/ionice && /usr/bin/ionice $RSYNC_IONICE_PARM true 2>/dev/null { /usr/bin/ionice $RSYNC_IONICE_PARM -p$$ > /dev/null 2>&1 } if start-stop-daemon --start --quiet --background \ --pidfile $RSYNC_PID_FILE --make-pidfile \ $RSYNC_NICE_PARM --exec $DAEMON \ -- --no-detach --daemon --config $RSYNC_CONFIG_FILE $RSYNC_OPTS { setvar rc = '0' sleep 1 if ! kill -0 $(cat $RSYNC_PID_FILE) >/dev/null 2>&1 { log_failure_msg "rsync daemon failed to start" setvar rc = '1' } } else { setvar rc = '1' } if test $rc -eq 0 { log_end_msg 0 } else { log_end_msg 1 rm -f $RSYNC_PID_FILE } } # rsync_start case (1) { start { if $RSYNC_ENABLE { log_daemon_msg "Starting rsync daemon" "rsync" if test -s $RSYNC_PID_FILE && kill -0 $(cat $RSYNC_PID_FILE) >/dev/null 2>&1 { log_progress_msg "apparently already running" log_end_msg 0 exit 0 } rsync_start } else { if test -s $RSYNC_CONFIG_FILE { test $VERBOSE != no && log_warning_msg "rsync daemon not enabled in $RSYNC_DEFAULTS_FILE, not starting..." } } } stop { log_daemon_msg "Stopping rsync daemon" "rsync" start-stop-daemon --stop --quiet --oknodo --pidfile $RSYNC_PID_FILE log_end_msg $? rm -f $RSYNC_PID_FILE } reload|force-reload { log_warning_msg "Reloading rsync daemon: not needed, as the daemon" log_warning_msg "re-reads the config file whenever a client connects." } restart { set +e if $RSYNC_ENABLE { log_daemon_msg "Restarting rsync daemon" "rsync" if test -s $RSYNC_PID_FILE && kill -0 $(cat $RSYNC_PID_FILE) >/dev/null 2>&1 { start-stop-daemon --stop --quiet --oknodo --pidfile $RSYNC_PID_FILE || true sleep 1 } else { log_warning_msg "rsync daemon not running, attempting to start." rm -f $RSYNC_PID_FILE } rsync_start } else { if test -s $RSYNC_CONFIG_FILE { test $VERBOSE != no && log_warning_msg "rsync daemon not enabled in $RSYNC_DEFAULTS_FILE, not starting..." } } } status { status_of_proc -p $RSYNC_PID_FILE $DAEMON rsync exit $? # notreached due to set -e } * { echo "Usage: /etc/init.d/rsync {start|stop|reload|force-reload|restart|status}" exit 1 } } exit 0