Advertisement
Guest User

s

a guest
Apr 8th, 2013
174
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.04 KB | None | 0 0
  1. #! /bin/sh
  2.  
  3. ### BEGIN INIT INFO
  4. # Provides: rsyncd
  5. # Required-Start: $remote_fs $syslog
  6. # Required-Stop: $remote_fs $syslog
  7. # Should-Start: $named
  8. # Default-Start: 2 3 4 5
  9. # Default-Stop:
  10. # Short-Description: fast remote file copy program daemon
  11. # Description: rsync is a program that allows files to be copied to and
  12. # from remote machines in much the same way as rcp.
  13. # This provides rsyncd daemon functionality.
  14. ### END INIT INFO
  15.  
  16. set -e
  17.  
  18. # /etc/init.d/rsync: start and stop the rsync daemon
  19.  
  20. DAEMON=/usr/bin/rsync
  21. RSYNC_ENABLE=false
  22. RSYNC_OPTS=''
  23. RSYNC_DEFAULTS_FILE=/etc/default/rsync
  24. RSYNC_CONFIG_FILE=/etc/rsyncd.conf
  25. RSYNC_PID_FILE=/var/run/rsync.pid
  26. RSYNC_NICE_PARM=''
  27. RSYNC_IONICE_PARM=''
  28.  
  29. test -x $DAEMON || exit 0
  30.  
  31. . /lib/lsb/init-functions
  32.  
  33. if [ -s $RSYNC_DEFAULTS_FILE ]; then
  34. . $RSYNC_DEFAULTS_FILE
  35. 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]) RSYNC_NICE_PARM="--nicelevel $RSYNC_NICE";;
  46. x1[0-9]) RSYNC_NICE_PARM="--nicelevel $RSYNC_NICE";;
  47. x) ;;
  48. *) log_warning_msg "Value of RSYNC_NICE in $RSYNC_DEFAULTS_FILE must be a value between 0 and 19 (inclusive);"
  49. log_warning_msg "ignoring RSYNC_NICE now."
  50. ;;
  51. esac
  52. case "x$RSYNC_IONICE" in
  53. x-c[123]*) RSYNC_IONICE_PARM="$RSYNC_IONICE";;
  54. x) ;;
  55. *) log_warning_msg "Value of RSYNC_IONICE in $RSYNC_DEFAULTS_FILE must be -c1, -c2 or -c3;"
  56. log_warning_msg "ignoring RSYNC_IONICE now."
  57. ;;
  58. esac
  59. fi
  60.  
  61. export PATH="${PATH:+$PATH:}/usr/sbin:/sbin"
  62.  
  63. rsync_start() {
  64. if [ ! -s "$RSYNC_CONFIG_FILE" ]; then
  65. log_failure_msg "missing or empty config file $RSYNC_CONFIG_FILE"
  66. log_end_msg 1
  67. exit 0
  68. fi
  69. # See ionice(1)
  70. if [ -n "$RSYNC_IONICE_PARM" ] && [ -x /usr/bin/ionice ] &&
  71. /usr/bin/ionice "$RSYNC_IONICE_PARM" true 2>/dev/null; then
  72. /usr/bin/ionice "$RSYNC_IONICE_PARM" -p$$ > /dev/null 2>&1
  73. fi
  74. if start-stop-daemon --start --quiet --background \
  75. --pidfile $RSYNC_PID_FILE --make-pidfile \
  76. $RSYNC_NICE_PARM --exec $DAEMON \
  77. -- --no-detach --daemon --config "$RSYNC_CONFIG_FILE" $RSYNC_OPTS
  78. then
  79. rc=0
  80. sleep 1
  81. if ! kill -0 $(cat $RSYNC_PID_FILE) >/dev/null 2>&1; then
  82. log_failure_msg "rsync daemon failed to start"
  83. rc=1
  84. fi
  85. else
  86. rc=1
  87. fi
  88. if [ $rc -eq 0 ]; then
  89. log_end_msg 0
  90. else
  91. log_end_msg 1
  92. rm -f $RSYNC_PID_FILE
  93. fi
  94. } # rsync_start
  95.  
  96.  
  97. case "$1" in
  98. start)
  99. if "$RSYNC_ENABLE"; then
  100. log_daemon_msg "Starting rsync daemon" "rsync"
  101. if [ -s $RSYNC_PID_FILE ] && kill -0 $(cat $RSYNC_PID_FILE) >/dev/null 2>&1; then
  102. log_progress_msg "apparently already running"
  103. log_end_msg 0
  104. exit 0
  105. fi
  106. rsync_start
  107. else
  108. if [ -s "$RSYNC_CONFIG_FILE" ]; then
  109. [ "$VERBOSE" != no ] && log_warning_msg "rsync daemon not enabled in $RSYNC_DEFAULTS_FILE, not starting..."
  110. fi
  111. fi
  112. ;;
  113. stop)
  114. log_daemon_msg "Stopping rsync daemon" "rsync"
  115. start-stop-daemon --stop --quiet --oknodo --pidfile $RSYNC_PID_FILE
  116. log_end_msg $?
  117. rm -f $RSYNC_PID_FILE
  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 +e
  126. 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_FILE
  134. fi
  135. rsync_start
  136. 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" rsync
  145. exit $? # notreached due to set -e
  146. ;;
  147. *)
  148. echo "Usage: /etc/init.d/rsync {start|stop|reload|force-reload|restart|status}"
  149. exit 1
  150. esac
  151.  
  152. exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement