1 #! /bin/sh
2
3 ### BEGIN INIT INFO4 # Provides: rsyncd5 # Required-Start: $remote_fs $syslog6 # Required-Stop: $remote_fs $syslog7 # Should-Start: $named autofs8 # Default-Start: 2 3 4 5
9 # Default-Stop:10 # Short-Description: fast remote filecopy program daemon11 # Description: rsync is a program that allows files to be copied to and12 # from remote machines inmuch the same way as rcp.13 # This provides rsyncd daemon functionality.14 ### END INIT INFO15
16 set -e17
18 # /etc/init.d/rsync: start and stop the rsync daemon19
20 DAEMON=/usr/bin/rsync21 RSYNC_ENABLE=false
22 RSYNC_OPTS=''
23 RSYNC_DEFAULTS_FILE=/etc/default/rsync24 RSYNC_CONFIG_FILE=/etc/rsyncd.conf25 RSYNC_PID_FILE=/var/run/rsync.pid26 RSYNC_NICE_PARM=''
27 RSYNC_IONICE_PARM=''
28
29 test -x $DAEMON || exit 0
30
31 . /lib/lsb/init-functions32
33 if [ -s $RSYNC_DEFAULTS_FILE ]; then
34 . $RSYNC_DEFAULTS_FILE35 case "x$RSYNC_ENABLE" in
36 xtrue|xfalse) ;;37 xinetd) exit 0
38 ;;39 *) log_failure_msg "Value of RSYNC_ENABLE in $RSYNC_DEFAULTS_FILE must be either 'true' or 'false';"
40 log_failure_msg "not starting rsync daemon."
41 exit 1
42 ;;43 esac
44 case "x$RSYNC_NICE" in
45 x[0-9]|x1[0-9]) RSYNC_NICE_PARM="--nicelevel $RSYNC_NICE";;46 x) ;;47 *) log_warning_msg "Value of RSYNC_NICE in $RSYNC_DEFAULTS_FILE must be a value between 0 and 19 (inclusive);"
48 log_warning_msg "ignoring RSYNC_NICE now."
49 ;;50 esac
51 case "x$RSYNC_IONICE" in
52 x-c[123]*) RSYNC_IONICE_PARM="$RSYNC_IONICE";;53 x) ;;54 *) log_warning_msg "Value of RSYNC_IONICE in $RSYNC_DEFAULTS_FILE must be -c1, -c2 or -c3;"
55 log_warning_msg "ignoring RSYNC_IONICE now."
56 ;;57 esac
58 fi
59
60 export PATH="${PATH:+$PATH:}/usr/sbin:/sbin"
61
62 rsync_start() {63 if [ ! -s "$RSYNC_CONFIG_FILE" ]; then
64 log_failure_msg "missing or empty config file $RSYNC_CONFIG_FILE"
65 log_end_msg 1
66 exit 0
67 fi
68 # See ionice(1)69 if [ -n "$RSYNC_IONICE_PARM" ] && [ -x /usr/bin/ionice ] &&
70 /usr/bin/ionice "$RSYNC_IONICE_PARM" true 2>/dev/null; then
71 /usr/bin/ionice "$RSYNC_IONICE_PARM" -p$$ > /dev/null 2>&1
72 fi
73 if start-stop-daemon --start --quiet --background \74 --pidfile $RSYNC_PID_FILE --make-pidfile \75 $RSYNC_NICE_PARM --exec $DAEMON \76 -- --no-detach --daemon --config "$RSYNC_CONFIG_FILE"$RSYNC_OPTS77 then
78 rc=0
79 sleep 1
80 if ! kill -0 $(cat $RSYNC_PID_FILE) >/dev/null 2>&1; then
81 log_failure_msg "rsync daemon failed to start"
82 rc=1
83 fi
84 else
85 rc=1
86 fi
87 if [ $rc -eq 0 ]; then
88 log_end_msg 0
89 else
90 log_end_msg 1
91 rm -f $RSYNC_PID_FILE92 fi
93 } # rsync_start94
95
96 case "$1" in
97 start)98 if "$RSYNC_ENABLE"; then
99 log_daemon_msg "Starting rsync daemon" "rsync"
100 if [ -s $RSYNC_PID_FILE ] && kill -0 $(cat $RSYNC_PID_FILE) >/dev/null 2>&1; then
101 log_progress_msg "apparently already running"
102 log_end_msg 0
103 exit 0
104 fi
105 rsync_start106 else
107 if [ -s "$RSYNC_CONFIG_FILE" ]; then
108 [ "$VERBOSE" != no ] && log_warning_msg "rsync daemon not enabled in $RSYNC_DEFAULTS_FILE, not starting..."
109 fi
110 fi
111 ;;112 stop)113 log_daemon_msg "Stopping rsync daemon" "rsync"
114 start-stop-daemon --stop --quiet --oknodo --pidfile $RSYNC_PID_FILE115 log_end_msg $?
116 rm -f $RSYNC_PID_FILE117 ;;118
119 reload|force-reload)120 log_warning_msg "Reloading rsync daemon: not needed, as the daemon"
121 log_warning_msg "re-reads the config file whenever a client connects."
122 ;;123
124 restart)125 set +e126 if $RSYNC_ENABLE; then
127 log_daemon_msg "Restarting rsync daemon" "rsync"
128 if [ -s $RSYNC_PID_FILE ] && kill -0 $(cat $RSYNC_PID_FILE) >/dev/null 2>&1; then
129 start-stop-daemon --stop --quiet --oknodo --pidfile $RSYNC_PID_FILE || true
130 sleep 1
131 else
132 log_warning_msg "rsync daemon not running, attempting to start."
133 rm -f $RSYNC_PID_FILE134 fi
135 rsync_start136 else
137 if [ -s "$RSYNC_CONFIG_FILE" ]; then
138 [ "$VERBOSE" != no ] && log_warning_msg "rsync daemon not enabled in $RSYNC_DEFAULTS_FILE, not starting..."
139 fi
140 fi
141 ;;142
143 status)144 status_of_proc -p $RSYNC_PID_FILE "$DAEMON"rsync145 exit $? # notreached due to set -e146 ;;147 *)148 echo "Usage: /etc/init.d/rsync {start|stop|reload|force-reload|restart|status}"
149 exit 1
150 esac
151
152 exit 0