rsync隨機啟動腳本

来源:http://www.cnblogs.com/chenglee/archive/2017/07/13/7159168.html
-Advertisement-
Play Games

服務端 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 scri ...


服務端

 

 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.conf
12         sleep 2
13         myport=`netstat -lnt|grep 873|wc -l`
14         if [ $myport -eq 2 ]
15         then
16         action "rsync start"   /bin/true
17         else
18         action "rsync start"   /bin/false
19         fi
20         ;;
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/null
27         sleep 2
28         killall rsync &>/dev/null
29         sleep 1
30         fi
31         myport=`netstat -lnt|grep 873|wc -l`
32         if [ $myport -ne 2 ]
33         then
34         action "rsync stop"   /bin/true
35         else
36         action "rsync stop"   /bin/false
37         fi
38         ;;
39   restart)
40         if [ `netstat -lnt|grep 873|wc -l` -eq 0 ]
41         then
42         /usr/local/rsyncd/bin/rsync --daemon --config=/etc/rsyncd.conf
43         sleep 2
44         myport=`netstat -lnt|grep 873|wc -l`
45         if [ $myport -eq 2 ]
46         then
47         action "rsync restart"   /bin/true
48         else
49         action "rsync restart"   /bin/false
50         exit
51         fi
52         else
53         killall rsync &>/dev/null
54         sleep 2
55         killall rsync &>/dev/null
56         sleep 1
57         /usr/local/rsyncd/bin/rsync --daemon --config=/etc/rsyncd.conf
58         sleep 2
59         myport=`netstat -lnt|grep 873|wc -l`
60         if [ $myport -eq 2 ]
61         then
62         action "rsync restart"   /bin/true
63         else
64         action "rsync restart"   /bin/false
65         fi
66         fi
67         ;;
68   status)
69         myport=`netstat -lnt|grep 873|wc -l`
70         if [ $myport -eq 2 ]
71         then
72         echo  "rsync is running"
73         else
74         echo "rsync is stoped"
75         fi
76         ;;
77   *)
78         echo $"Usage: $0 {start|stop|status|restart}"
79         ;;
80 esac
View Code

 

 

客戶端

 

  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; then
101         log_progress_msg "apparently already running"
102         log_end_msg 0
103         exit 0
104         fi
105             rsync_start
106         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_FILE
115     log_end_msg $?
116     rm -f $RSYNC_PID_FILE
117     ;;
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
View Code

 

 


開機自動啟動rsync

1. 扔腳本進去/etc/init.d/


2. 授權
chmod +x rsync


3. 一旦拋出:binsh^M錯誤就執行編碼改寫
設置dos統一編碼
(請看rsync腳本拋出binsh^M bad interpreter文檔)


4. 添加到服務
chkconfig --add ningx


5. 隨機啟動腳本帶動rsync開機啟動
chkconfig --level 2345 rsync on

 

 


 

執行腳本時發現如下錯誤:
/bin/sh^M: bad interpreter: 沒有那個文件或目錄

錯誤分析:
因為操作系統是windows,我在windows下編輯的腳本,所以有可能有不可見字元。
腳本文件是DOS格式的, 即每一行的行尾以\n\r來標識, 其ASCII碼分別是0x0D, 0x0A.

可以有很多種辦法看這個文件是DOS格式的還是UNIX格式的, 還是MAC格式的

解決方法:
vim filename
然後用命令
:set ff? #可以看到dos或unix的字樣. 如果的確是dos格式的。


然後用
:set ff=unix #把它強製為unix格式的, 然後存檔退出。
再次運行腳本。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 查看當前目錄: pwd 查看文件具體大小: ls -l 返回上一級: cd.. 返回根目錄: cd / 創建一個隱藏文件 vim .test 顯示隱藏文件:ls -a 編輯文件: 1.vim 文件名 2.按i進入插入模式 3.寫完文件之後按esc,再按shift+:鍵,再輸入wq,回車,文件就保存了 ...
  • 最近對linux伺服器特別感興趣,通過自己對已有資源的學習和使用,總結了我踩過的坑,已經如何填坑的 ...
  • vi/vim是什麼? Linux世界幾乎所有的配置文件都是以純文本形式存在的,而在所有的Linux發行版系統上都有vi編輯器,因此利用簡單的文字編輯軟體就能夠輕鬆地修改系統的各種配置了,非常方便。vi就是一種功能強大的文本編輯器,而vim則是高級版的vi,不但可以用不同顏色顯示文字內容,還能進行諸如 ...
  • 附上腳本 三大配置文件請看rsync安裝與配置 第一步:創建同步腳本並賦予執行許可權 cd /etc/rsyncshell/rsyncshell.sh 內容如下: #!/bin/sh /usr/bin/rsync -avzP --password-file=/etc/rsyncd.secrets ro ...
  • 轉自:http://www.cnblogs.com/metoy/p/4320813.html iptables簡介 netfilter/iptables(簡稱為iptables)組成Linux平臺下的包過濾防火牆,與大多數的Linux軟體一樣,這個包過濾防火牆是免費的,它可以代替昂貴的商業防火牆解決 ...
  • 作業需求: (1)運行程式輸出第一級菜單(2)選擇一級菜單某項,輸出二級菜單,同理輸出三級菜單(3)讓用戶選擇是否要退出(4)有返回上一級菜單的功能 1 data = { 2 "天津":{ 3 "南開區":{ 4 "南開大學":{ 5 "歷史系":{}, 6 "文學系":{}, 7 "英語系":{} ...
  • 服務端配置安裝 伺服器 第一步: 下載rsync 安裝包(線上安裝或者線下安裝) wget https://download.samba.org/pub/rsync/rsync-3.1.2.tar.gz tar -xzf rsync-3.1.2.tar.gz cd rsync-3.1.2 ./con ...
  • Linux使用小Tips 整理些Linux些常遇到的問題。 修改網卡ens33為eth0 在使用RHEL和Centos7,發現網卡名稱變成了EnoX,挺不習慣。現更改回舊名稱eth0看著順眼。 1. 備份/etc/sysconfig/grub文件 2. 編輯/etc/sysconfig/grub文件 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...