1. 程式人生 > 其它 >Rsync配合crontab實現檔案定時異地備份

Rsync配合crontab實現檔案定時異地備份

一、壓縮打包

1.使用指令碼進行壓縮打包

[root@localhost ~]# cat DataBack.sh

#!/bin/bash

DATE=`(date +"%Y-%m-%d")`

tar -cPvzf /directory/backup/backup$DATE.tar.gz /directory/backup --exclude /directory/backup/a  --exclude /directory/backup/b --exclude /directory/backup/c >> tar.log

 

#該指令碼表示使用絕對路徑以日期形式打包/directory/backup目錄下除a、b、c以外的目錄(引數為:--exclude $directory),並將打包日誌記錄到tar.log中。

 

2.tar日誌定時切割,防止日誌檔案佔用太多空間

[root@localhost ~]# cat /etc/logrotate.d/tar

/root/log/tar.log{

    rotate 5

    weekly

    copytruncate

    missingok

    dateext

}

# rotate 5      表示最多儲存5個歸檔日誌

Weekly        日誌檔案按周進行輪循

Copytruncate 用於還在開啟中的日誌檔案,把當前日誌備份並截斷

Missingok     在日誌輪循期間,忽略任何錯誤

Datext        生成的日誌檔案自動加上時間標籤

二、備份伺服器Rsync配置

1.配置Rsync配置檔案

[root@localhost ~]# vim /etc/rsyncd.conf

#全域性配置檔案

uid = 0                            #指定檔案傳輸的UID

gid = 0                            #指定檔案傳輸的GID

use chroot = no                    #是否限定在該目錄下,預設為        #true,當有軟連線時,需要改為fasle,如果為

#true就限定為模組預設目錄,通常都在內網使用rsync所#以不配也可以

max connections = 200              #設定最大連線數

timeout = 600                      #超時時間

ignore errors                      #忽略io錯誤

read only = false                  #指定是否允許客戶上傳檔案。若為 true 則不允許上傳;若為 false 並且伺服器目錄也具有讀寫許可權則允許上傳。

list = false              #指定當客戶請求列出可以使用的模組列表時,該模組是否應該被列出。

auth users = root         #指定以空格或逗號分隔使用者,他們可以使用這個模組,使用者不需要再本

                              #系統存在,預設所有使用者都可以無密碼登入

secrets file = /etc/rsync.password #指定使用者名稱和密碼檔案 格式: 使用者名稱:密碼

log file = /var/log/rsyncd.log     #日誌檔案路徑

 

[backup]                 #設定傳輸模組

path = /directory/backup/ #該傳輸模組傳送到的路徑

[root@localhost ~]# vim /etc/rsync.password   #生成認證檔案

Root:password

[root@localhost ~]# chmod 600 /etc/rsync.pasword  #設定許可權為600

三、客戶端伺服器配置定時任務備份資料

1.配置crontab定時任務

[root@localhost ~]# crontab -e

10 23 * * 6 /bin/sh /root/DataBack.sh > /dev/null 2>&1   #週六晚上23:10分打包備份的資料夾,輸出定向到空防止/var/spool/clientmqueue爆滿導致定時任務無法正常執行,清空命令:ls | xargs rm -f

 

30 00 * * 7 rsync -avz --delete --password-file=/etc/rsync.password /directory/backup/ [email protected]::backup >> /directory/bakcup/backup.log  #週日凌晨00:30rsync增量備份到備份伺服器上,rsync輸出記錄到/directory/bakcup/backup.log檔案中

 

0 0 1 */1 * find /root/backup -type f -name "*.gz" -mtime +60 -exec rm {} \;  #每月1號執行任務刪除超過60天的備份檔案防止備份檔案太多導致磁碟爆滿。