centos7下rsync+crontab如何定期同步備份

這篇文章給大家分享的是有關(guān)centos7下rsync+crontab如何定期同步備份的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

成都創(chuàng)新互聯(lián)公司堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都做網(wǎng)站、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的益陽網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

這次整一個Linux下的腳本sh,執(zhí)行定期自動備份數(shù)據(jù)

centos7下rsync+crontab如何定期同步備份

客戶端:192.168.0.100(rsync-Linux)

服務(wù)端:192.168.0.252(存儲)

rsync簡介:

rsync是linux系統(tǒng)下的數(shù)據(jù)鏡像備份工具。使用快速增量備份工具Remote Sync可以遠程同步,支持本地復(fù)制,或者與其他SSH、rsync主機同步。

1.服務(wù)端配置:

rsync的服務(wù)端主要是群輝的存儲,所以直接有界面式的配置,所以這邊就不詳細講解,如下圖:

centos7下rsync+crontab如何定期同步備份

2.客戶端配置:

創(chuàng)建密碼文件,/etc/rsyncd/rsyncd.pass,并修改為 600 權(quán)限

[root@localhost ~]# mkdir rsyncd
[root@localhost ~]# vim /rsyncd/rsyncd.pass
[root@localhost ~]# chmod 600 /rsyncd/rsyncd.pass

▲說明:/rsyncd/rsyncd.pass其內(nèi)密碼需要和服務(wù)端內(nèi)/etc/rsyncd/rsyncd.pass或存儲rsync指定用戶的密碼保持一致

客戶端向服務(wù)端傳輸文件,如果是 873 端口,可以把 --port 去掉

rsync -arvz --progress /data rsync@192.168.0.252::log --password-file=/rsyncd/rsyncd.pass

若有需要也可以從服務(wù)端拉取文件,需要把服務(wù)器的 /etc/rsyncd/rsyncd.conf 中的 write only = yes 給去掉

#拉取整個目錄
rsync -arvz --progress --password-file=/rsyncd/rsyncd.pass --port=873 rsync@192.168.0.252::log /var/log
#拉取單個文件
rsync -arvz --progress --password-file=/rsyncd/rsyncd.pass --port=873 rsync@192.168.0.252::log/a.log /var/log

rsync服務(wù)端配置參數(shù):

全局參數(shù)
在文件中[module]之前的所有參數(shù)都是全局參數(shù),當然也可以在全局參數(shù)部分定義模塊參數(shù),這時候該參數(shù)的值就是所有模塊的默認值。
port
指定后臺程序使用的端口號,默認為873。
motd file
"motd file"參數(shù)用來指定一個消息文件,當客戶連接服務(wù)器時該文件的內(nèi)容顯示給客戶,默認是沒有motd文件的。
log file
"log file"指定rsync的日志文件,而不將日志發(fā)送給syslog。比如可指定為“/var/log/rsyncd.log”。
pid file
指定rsync的pid文件,通常指定為“/var/run/rsyncd.pid”。
syslog facility
指定rsync發(fā)送日志消息給syslog時的消息級別,常見的消息級別是:uth, authpriv, cron, daemon, ftp, kern, lpr, mail, news, security, sys-log, user, uucp, local0, local1, local2, local3,local4, local5, local6和local7。默認值是daemon。
模塊參數(shù)
主要是定義服務(wù)器哪個目錄要被同步。其格式必須為“[module]”形式,這個名字就是在rsync 客戶端看到的名字,其實有點象Samba服務(wù)器提供的共享名。而服務(wù)器真正同步的數(shù)據(jù)是通過 path 來指定的。我們可以根據(jù)自己的需要,來指定多個模塊,模塊中可以定義以下參數(shù):
comment
給模塊指定一個描述,該描述連同模塊名在客戶連接得到模塊列表時顯示給客戶。默認沒有描述定義。
path
指定該模塊的供備份的目錄樹路徑,該參數(shù)是必須指定的。
use chroot
如 果"use chroot"指定為true,那么rsync在傳輸文件以前首先chroot到path參數(shù)所指定的目錄下。這樣做的原因是實現(xiàn)額外的安全防護,但是缺 點是需要以roots權(quán)限,并且不能備份指向外部的符號連接所指向的目錄文件。默認情況下chroot值為true。
uid
該選項指定當該模塊傳輸文件時守護進程應(yīng)該具有的uid,配合gid選項使用可以確定哪些可以訪問怎么樣的文件權(quán)限,默認值是"nobody"。
gid
該選項指定當該模塊傳輸文件時守護進程應(yīng)該具有的gid。默認值為"nobody"。
max connections
指定該模塊的最大并發(fā)連接數(shù)量以保護服務(wù)器,超過限制的連接請求將被告知隨后再試。默認值是0,也就是沒有限制。
list
該選項設(shè)定當客戶請求可以使用的模塊列表時,該模塊是否應(yīng)該被列出。如果設(shè)置該選項為false,可以創(chuàng)建隱藏的模塊。默認值是true。
read only
該選項設(shè)定是否允許客戶上載文件。如果為true那么任何上載請求都會失敗,如果為false并且服務(wù)器目錄讀寫權(quán)限允許那么上載是允許的。默認值為true。
exclude
用來指定多個由空格隔開的多個文件或目錄(相對路徑),并將其添加到exclude列表中。這等同于在客戶端命令中使用--exclude來指定模式,一個 模塊只能指定一個exclude選項。但是需要注意的一點是該選項有一定的安全性問題,客戶很有可能繞過exclude列表,如果希望確保特定的文件不能 被訪問,那就最好結(jié)合uid/gid選項一起使用。
exclude from
指定一個包含exclude模式的定義的文件名,服務(wù)器從該文件中讀取exclude列表定義。
include
用來指定不排除符合要求的文件或目錄。這等同于在客戶端命令中使用--include來指定模式,結(jié)合include和exclude可以定義復(fù)雜的exclude/include規(guī)則。
include from
指定一個包含include模式的定義的文件名,服務(wù)器從該文件中讀取include列表定義。
auth users
該選項指定由空格或逗號分隔的用戶名列表,只有這些用戶才允許連接該模塊。這里的用戶和系統(tǒng)用戶沒有任何關(guān)系。如果"auth users"被設(shè)置,那么客戶端發(fā)出對該模塊的連接請求以后會被rsync請求challenged進行驗證身份這里使用的 challenge/response認證協(xié)議。用戶的名和密碼以明文方式存放在"secrets file"選項指定的文件中。默認情況下無需密碼就可以連接模塊(也就是匿名方式)。
secrets file
該選項指定一個包含定義用戶名:密碼對的文件。只有在"auth users"被定義時,該文件才有作用。文件每行包含一個username:passwd對。一般來說密碼最好不要超過8個字符。沒有默認的 secures file名,需要限式指定一個(例如:/etc/rsyncd.passwd)。注意:該文件的權(quán)限一定要是600,否則客戶端將不能連接服務(wù)器。
strict modes
該選項指定是否監(jiān)測密碼文件的權(quán)限,如果該選項值為true那么密碼文件只能被rsync服務(wù)器運行身份的用戶訪問,其他任何用戶不可以訪問該文件。默認值為true。
hosts allow
該選項指定哪些IP的客戶允許連接該模塊??蛻裟J蕉x可以是以下形式:
單個IP地址,例如:192.167.0.1
整個網(wǎng)段,例如:192.168.0.0/24,也可以是192.168.0.0/255.255.255.0
多個IP或網(wǎng)段需要用空格隔開,“*”則表示所有,默認是允許所有主機連接。
hosts deny
指定不允許連接rsync服務(wù)器的機器,可以使用hosts allow的定義方式來進行定義。默認是沒有hosts deny定義。
ignore errors
指定rsyncd在判斷是否運行傳輸時的刪除操作時忽略server上的IO錯誤,一般來說rsync在出現(xiàn)IO錯誤時將將跳過--delete操作,以防止因為暫時的資源不足或其它IO錯誤導(dǎo)致的嚴重問題。
ignore nonreadable
指定rysnc服務(wù)器完全忽略那些用戶沒有訪問權(quán)限的文件。這對于在需要備份的目錄中有些文件是不應(yīng)該被備份者得到的情況是有意義的。
lock file
指定支持max connections參數(shù)的鎖文件,默認值是/var/run/rsyncd.lock。
transfer logging
使rsync服務(wù)器使用ftp格式的文件來記錄下載和上載操作在自己單獨的日志中。
log format
通過該選項用戶在使用transfer logging可以自己定制日志文件的字段。其格式是一個包含格式定義符的字符串,可以使用的格式定義符如下所示:
%h 遠程主機名
%a 遠程IP地址
%l 文件長度字符數(shù)
%p 該次rsync會話的進程id
%o 操作類型:"send"或"recv"
%f 文件名
%P 模塊路徑
%m 模塊名
%t 當前時間
%u 認證的用戶名(匿名時是null)
%b 實際傳輸?shù)淖止?jié)數(shù)
%c 當發(fā)送文件時,該字段記錄該文件的校驗碼
默認log格式為:"%o %h [%a] %m (%u) %f %l",一般來說,在每行的頭上會添加"%t [%p] "。在源代碼中同時發(fā)布有一個叫rsyncstats的perl腳本程序來統(tǒng)計這種格式的日志文件。
timeout
通過該選項可以覆蓋客戶指定的IP超時時間。通過該選項可以確保rsync服務(wù)器不會永遠等待一個崩潰的客戶端。超時單位為秒鐘,0表示沒有超時定義,這也是默認值。對于匿名rsync服務(wù)器來說,一個理想的數(shù)字是600。
refuse options
通過該選項可以定義一些不允許客戶對該模塊使用的命令參數(shù)列表。這里必須使用命令全名,而不能是簡稱。但發(fā)生拒絕某個命令的情況時服務(wù)器將報告錯誤信息然后退出。如果要防止使用壓縮,應(yīng)該是:"dont compress = *"。
dont compress
用來指定那些不進行壓縮處理再傳輸?shù)奈募?,默認值是*.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz

rsync常用命令:

-v, --verbose 詳細模式輸出
 -q, --quiet 精簡輸出模式
 -c, --checksum 打開校驗開關(guān),強制對文件傳輸進行校驗
 -a, --archive 歸檔模式,表示以遞歸方式傳輸文件,并保持所有文件屬性,等于-rlptgoD
 -r, --recursive 對子目錄以遞歸模式處理
 -R, --relative 使用相對路徑信息
 -b, --backup 創(chuàng)建備份,也就是對于目的已經(jīng)存在有同樣的文件名時,將老的文件重新命名為~filename??梢允褂?-suffix選項來指定不同的備份文件前綴。
 --backup-dir 將備份文件(如~filename)存放在在目錄下。
 -suffix=SUFFIX 定義備份文件前綴
 -u, --update 僅僅進行更新,也就是跳過所有已經(jīng)存在于DST,并且文件時間晚于要備份的文件。(不覆蓋更新的文件)
 -l, --links 保留軟鏈結(jié)
 -L, --copy-links 想對待常規(guī)文件一樣處理軟鏈結(jié)
 --copy-unsafe-links 僅僅拷貝指向SRC路徑目錄樹以外的鏈結(jié)
 --safe-links 忽略指向SRC路徑目錄樹以外的鏈結(jié)
 -H, --hard-links 保留硬鏈結(jié)
 -p, --perms 保持文件權(quán)限
 -o, --owner 保持文件屬主信息
 -g, --group 保持文件屬組信息
 -D, --devices 保持設(shè)備文件信息
 -t, --times 保持文件時間信息
 -S, --sparse 對稀疏文件進行特殊處理以節(jié)省DST的空間
 -n, --dry-run現(xiàn)實哪些文件將被傳輸
 -W, --whole-file 拷貝文件,不進行增量檢測
 -x, --one-file-system 不要跨越文件系統(tǒng)邊界
 -B, --block-size=SIZE 檢驗算法使用的塊尺寸,默認是700字節(jié)
 -e, --rsh=COMMAND 指定使用rsh、ssh方式進行數(shù)據(jù)同步
 --rsync-path=PATH 指定遠程服務(wù)器上的rsync命令所在路徑信息
 -C, --cvs-exclude 使用和CVS一樣的方法自動忽略文件,用來排除那些不希望傳輸?shù)奈募?
 --existing 僅僅更新那些已經(jīng)存在于DST的文件,而不備份那些新創(chuàng)建的文件
 --delete 刪除那些DST中SRC沒有的文件
 --delete-excluded 同樣刪除接收端那些被該選項指定排除的文件
 --delete-after 傳輸結(jié)束以后再刪除
 --ignore-errors 及時出現(xiàn)IO錯誤也進行刪除
 --max-delete=NUM 最多刪除NUM個文件
 --partial 保留那些因故沒有完全傳輸?shù)奈募?,以是加快隨后的再次傳輸
 --force 強制刪除目錄,即使不為空
 --numeric-ids 不將數(shù)字的用戶和組ID匹配為用戶名和組名
 --timeout=TIME IP超時時間,單位為秒
 -I, --ignore-times 不跳過那些有同樣的時間和長度的文件
 --size-only 當決定是否要備份文件時,僅僅察看文件大小而不考慮文件時間
 --modify-window=NUM 決定文件是否時間相同時使用的時間戳窗口,默認為0
 -T --temp-dir=DIR 在DIR中創(chuàng)建臨時文件
 --compare-dest=DIR 同樣比較DIR中的文件來決定是否需要備份
 -P 等同于 --partial
 --progress 顯示備份過程
 -z, --compress 對備份的文件在傳輸時進行壓縮處理
 --exclude=PATTERN 指定排除不需要傳輸?shù)奈募J?
 --include=PATTERN 指定不排除而需要傳輸?shù)奈募J?
 --exclude-from=FILE 排除FILE中指定模式的文件
 --include-from=FILE 不排除FILE指定模式匹配的文件
 --version 打印版本信息
 --address 綁定到特定的地址
 --config=FILE 指定其他的配置文件,不使用默認的rsyncd.conf文件
 --port=PORT 指定其他的rsync服務(wù)端口
 --blocking-io 對遠程shell使用阻塞IO
 -stats 給出某些文件的傳輸狀態(tài)
 --progress 在傳輸時現(xiàn)實傳輸過程
 --log-format=formAT 指定日志文件格式
 --password-file=FILE 從FILE中得到密碼
 --bwlimit=KBPS 限制I/O帶寬,KBytes per second
 -h, --help 顯示幫助信息

crontab簡介:

crond是linux下用來周期性的執(zhí)行某種任務(wù)或等待處理某些事件的一個守護進程,與windows下的計劃任務(wù)類似,當安裝完成操作系統(tǒng)后,默認會安裝此服務(wù)工具,并且會自動啟動crond進程,crond進程每分鐘會定期檢查是否有要執(zhí)行的任務(wù),如果有要執(zhí)行的任務(wù),則自動執(zhí)行該任務(wù)。
Linux下的任務(wù)調(diào)度分為兩類:系統(tǒng)任務(wù)調(diào)度和用戶任務(wù)調(diào)度。
系統(tǒng)任務(wù)調(diào)度:系統(tǒng)周期性所要執(zhí)行的工作,比如寫緩存數(shù)據(jù)到硬盤、日志清理等。在/etc目錄下有一個crontab文件,這個就是系統(tǒng)任務(wù)調(diào)度的配置文件。
/etc/crontab文件包括下面幾行:

[root@localhost ~]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=""HOME=/

# run-parts
51 * * * * root run-parts /etc/cron.hourly
24 7 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

前四行是用來配置crond任務(wù)運行的環(huán)境變量,第一行SHELL變量指定了系統(tǒng)要使用哪個shell,這里是bash,第二行PATH變量指定了系統(tǒng)執(zhí)行命令的路徑,第三行MAILTO變量指定了crond的任務(wù)執(zhí)行信息將通過電子郵件發(fā)送給root用戶,如果MAILTO變量的值為空,則表示不發(fā)送任務(wù)執(zhí)行信息給用戶,第四行的HOME變量指定了在執(zhí)行命令或者腳本時使用的主目錄。

用戶任務(wù)調(diào)度:用戶定期要執(zhí)行的工作,比如用戶數(shù)據(jù)備份、定時郵件提醒等。用戶可以使用 crontab 工具來定制自己的計劃任務(wù)。所有用戶定義的crontab 文件都被保存在 /var/spool/cron目錄中。其文件名與用戶名一致。

crontab文件的含義:

用戶所建立的crontab文件中,每一行都代表一項任務(wù),每行的每個字段代表一項設(shè)置,它的格式共分為六個字段,前五段是時間設(shè)定段,第六段是要執(zhí)行的命令段,格式如下:

minute   hour   day   month   week   command

其中:

minute: 表示分鐘,可以是從0到59之間的任何整數(shù)。

hour:表示小時,可以是從0到23之間的任何整數(shù)。

day:表示日期,可以是從1到31之間的任何整數(shù)。

month:表示月份,可以是從1到12之間的任何整數(shù)。

week:表示星期幾,可以是從0到7之間的任何整數(shù),這里的0或7代表星期日。

command:要執(zhí)行的命令,可以是系統(tǒng)命令,也可以是自己編寫的腳本文件。

centos7下rsync+crontab如何定期同步備份

在以上各個字段中,還可以使用以下特殊字符:

星號(*):代表所有可能的值,例如month字段如果是星號,則表示在滿足其它字段的制約條件后每月都執(zhí)行該命令操作。

逗號(,):可以用逗號隔開的值指定一個列表范圍,例如,“1,2,5,7,8,9”

中杠(-):可以用整數(shù)之間的中杠表示一個整數(shù)范圍,例如“2-6”表示“2,3,4,5,6”

正斜線(/):可以用正斜線指定時間的間隔頻率,例如“0-23/2”表示每兩小時執(zhí)行一次。同時正斜線可以和星號一起使用,例如*/10,如果用在minute字段,表示每十分鐘執(zhí)行一次。

crontab常用命令:

1.列出crontab文件

   為了列出crontab文件,可以用:

 [root@localhost ~]# crontab -l
 0,15,30,45,18-06 * * * /bin/echo `date` > dev/tty

你將會看到和上面類似的內(nèi)容??梢允褂眠@種方法在$HOME目錄中對crontab文件做一備份:

 [root@localhost ~]# crontab -l > $HOME/mycron

    這樣,一旦不小心誤刪了crontab文件,可以用上一節(jié)所講述的方法迅速恢復(fù)。

2.編輯crontab文件

 如果希望添加、刪除或編輯crontab文件中的條目,而編輯環(huán)境變量又設(shè)置為v i,那么就可以用vi來編輯crontab文件,相應(yīng)的命令為:

[root@localhost ~]# crontab -e

可以像使用vi編輯其他任何文件那樣修改crontab文件并退出。如果修改了某些條目或添加了新的條目,那么在保存該文件時, c r o n會對其進行必要的完整性檢查。如果其中的某個域出現(xiàn)了超出允許范圍的值,它會提示你。

我們在編輯crontab文件時,沒準會加入新的條目。例如,加入下面的一條:

# DT:delete core files,at 3.30am on 1,7,14,21,26,26 days of each month(注釋說明)

 30 3 1,7,14,21,26 * * /bin/find -name "core' -exec rm {} \;

現(xiàn)在保存并退出。最好在crontab文件的每一個條目之上加入一條注釋,這樣就可以知道它的功能、運行時間,更為重要的是,知道這是哪位用戶的作業(yè)。

現(xiàn)在讓我們使用前面講過的crontab -l命令列出它的全部信息:

[root@localhost ~]# crontab -l 
 # (crondave installed on Tue May 4 13:07:43 1999)
 # DT:ech the date to the console every 30 minites
 0,15,30,45 18-06 * * * /bin/echo `date` > /dev/tty1
 # DT:delete core files,at 3.30am on 1,7,14,21,26,26 days of each month
 30 3 1,7,14,21,26 * * /bin/find -name "core' -exec rm {} \;

3.刪除crontab文件

要刪除crontab文件,可以用:

 [root@localhost ~]# crontab -r

crontab使用實例

實例1:每1分鐘執(zhí)行一次command

命令:

* * * * * command

實例2:每星期日的晚上00 : 00執(zhí)行rsync-sh腳本

命令:

[root@localhost ~]# crontab -e
# DT:Execute rsync-sh script every Sunday at 00: 00(注釋說明)
0 0 * * 7 sh /root/rsyncd/rsync-gitbak.sh

rsync客戶端自動與rsync服務(wù)器端同步:

首先,我們來做一個shell腳本

[root@localhost rsyncd]# vim rsyncd.sh
#!/bin/bash
rsync -arvz --progress /data rsync@192.168.0.252::log --password-file=/rsyncd/rsyncd.pass

命令:crontab -e來編輯加入計劃任務(wù)

[root@localhost ~]# crontab -e
# DT:Execute rsync-sh script every Sunday at 00: 00(注釋說明)
0 0 * * 7 sh /root/rsyncd/rsyncd.sh

使用crontab -l查看加入的計劃任務(wù)

[root@localhost ~]# crontab -l
0 0 * * 7 sh /root/rsyncd/rsyncd.sh

注意:

1. 當程式在你所指定的時間執(zhí)行后,系統(tǒng)會寄一封信給你,顯示該程式執(zhí)行的內(nèi)容,若是你不希望收到這樣的信,請在每一行空一格之后加上 > /dev/null 2>&1 即可。

2. %在crontab中被認為是newline,要用\來escape才行。比如crontab執(zhí)行行中,如果有"date +%Y%m%d",必須替換為:"date +\%Y\%m\%d"

遇到的問題和解決方法:

在Windows上面編輯了sh腳本上傳到Linux上面,執(zhí)行報錯:

bad interpreter:No such file or directory

vim rsyncd.sh用命令:set ff?查看是doc還是unix格式,如果是dos格式,用命令:set ff=unix轉(zhuǎn)化為unix格式

感謝各位的閱讀!關(guān)于“centos7下rsync+crontab如何定期同步備份”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

新聞標題:centos7下rsync+crontab如何定期同步備份
當前URL:http://muchs.cn/article14/jcgpge.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)搜索引擎優(yōu)化、自適應(yīng)網(wǎng)站、網(wǎng)站排名、域名注冊、網(wǎng)站導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)