Rsync random start script and rsync script
Server
1 #!/bin/sh 2 # chkconfig: 2345 21 60 3 # description: Saves and restores system entropy pool for \ 4 #create by xiaohu 5 #2014.06.02 6 #This script is the Rsync service script 7 . /etc/init.d/functions 8 case "$1" in 9 start)10 echo "rsync is starting"11 /usr/local/rsyncd/bin/rsync --daemon --config=/etc/rsyncd.conf12 sleep 213 myport=`netstat -lnt|grep 873|wc -l`14 if [ $myport -eq 2 ]15 then16 action "rsync start" /bin/true17 else18 action "rsync start" /bin/false19 fi20 ;;21 stop)22 echo "rsync is stoping"23 myport=`netstat -lnt|grep 873|wc -l`24 if [ $myport -eq 2 ]25 then 26 killall rsync &>/dev/null27 sleep 228 killall rsync &>/dev/null29 sleep 130 fi31 myport=`netstat -lnt|grep 873|wc -l`32 if [ $myport -ne 2 ]33 then34 action "rsync stop" /bin/true35 else36 action "rsync stop" /bin/false37 fi38 ;;39 restart)40 if [ `netstat -lnt|grep 873|wc -l` -eq 0 ]41 then42 /usr/local/rsyncd/bin/rsync --daemon --config=/etc/rsyncd.conf43 sleep 244 myport=`netstat -lnt|grep 873|wc -l`45 if [ $myport -eq 2 ]46 then47 action "rsync restart" /bin/true48 else49 action "rsync restart" /bin/false50 exit51 fi52 else53 killall rsync &>/dev/null54 sleep 255 killall rsync &>/dev/null56 sleep 157 /usr/local/rsyncd/bin/rsync --daemon --config=/etc/rsyncd.conf58 sleep 259 myport=`netstat -lnt|grep 873|wc -l`60 if [ $myport -eq 2 ]61 then62 action "rsync restart" /bin/true63 else64 action "rsync restart" /bin/false65 fi66 fi67 ;;68 status)69 myport=`netstat -lnt|grep 873|wc -l`70 if [ $myport -eq 2 ]71 then72 echo "rsync is running"73 else74 echo "rsync is stoped"75 fi76 ;;77 *)78 echo $"Usage: $0 {start|stop|status|restart}"79 ;;80 esac
View Code
Client
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 autofs 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]|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_OPTS 77 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_FILE 92 fi 93 } # rsync_start 94 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; then101 log_progress_msg "apparently already running"102 log_end_msg 0103 exit 0104 fi105 rsync_start106 else107 if [ -s "$RSYNC_CONFIG_FILE" ]; then108 [ "$VERBOSE" != no ] && log_warning_msg "rsync daemon not enabled in $RSYNC_DEFAULTS_FILE, not starting..."109 fi110 fi111 ;;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; then127 log_daemon_msg "Restarting rsync daemon" "rsync"128 if [ -s $RSYNC_PID_FILE ] && kill -0 $(cat $RSYNC_PID_FILE) >/dev/null 2>&1; then129 start-stop-daemon --stop --quiet --oknodo --pidfile $RSYNC_PID_FILE || true130 sleep 1131 else132 log_warning_msg "rsync daemon not running, attempting to start."133 rm -f $RSYNC_PID_FILE134 fi135 rsync_start136 else137 if [ -s "$RSYNC_CONFIG_FILE" ]; then138 [ "$VERBOSE" != no ] && log_warning_msg "rsync daemon not enabled in $RSYNC_DEFAULTS_FILE, not starting..."139 fi140 fi141 ;;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 1150 esac151 152 exit 0
View Code
Start rsync automatically
1. Run the script/etc/init. d/
2. Authorization
Chmod + x rsync
3. If the binsh ^ M error is thrown, rewrite the code.
Set unified dos Encoding
(Please refer to the rsync script to throw binsh ^ M bad interpreter document)
4. Add to service
Chkconfig -- add ningx
5. Random start script to drive rsync startup
Chkconfig -- level 2345 rsync on
The following error was found during script execution:
/Bin/sh ^ M: bad interpreter: No file or directory
Error analysis:
Because the operating system is windows, the script I edited in windows may have invisible characters.
The script file is in DOS format, that is, the end of each row is identified by \ n \ r, and its ASCII code is 0x0D, 0x0A.
There are many ways to check whether the file is in DOS or UNIX or MAC format.
Solution:
Vim filename
Run the following command:
: Set ff? # You can see the dos or unix words. If it is in dos format.
Then use
: Set ff = unix # force it to unix format, and then save the disk and exit.
Run the script again.