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天的備份檔案防止備份檔案太多導致磁碟爆滿。