您的位置:首页 > 运维架构 > Linux

用rsync实现镜像服务器之间的定时数据同步及备份(下)

2011-09-14 14:56 706 查看
rsync定时自动备份

要实现rsync定时自动备份,首先需要让ssh能够自动登陆而不用输入密码,其实需要crontab来控制rsync的同步时间。

ssh自动登陆

A为本地主机(即用于控制其他主机的机器,即Client) ;

B为远程主机(即被控制的机器Server), 假如ip为192.168.2.11;

A和B的系统都是Linux

在A上运行命令:

# ssh-keygen -t rsa (连续三次回车,即在本地生成了公钥和私钥,不设置密码)

# ssh root@192.168.60.110 "mkdir .ssh; chmod 0700 .ssh" (登陆到Server后在当前目录下建立.ssh目录,并且将其属性修改为0700;需要输入密码)

# scp ~/.ssh/id_rsa.pub root@192.168.60.110:.ssh/id_rsa.pub (将本机生成的公钥传送至Server的.ssh目录下;需要输入密码)

在B上的命令:

# touch /root/.ssh/authorized_keys2 (如果已经存在这个文件, 跳过这条)

# cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys2 (将id_rsa.pub的内容追加到 authorized_keys2 中)

回到A机器进行试验:

# ssh root@192.168.60.110 (不需要密码, 登录成功)

用crontab脚本来控制rsync实现定时同步
crontab的语法:
crontab [-u username] [-l|-e|-r]

參數:

-u :只有 root 才能進行這個任務,亦即幫其他使用者建立/移除 crontab;

-e :編輯 crontab 的工作內容

-l :查閱 crontab 的工作內容

-r :移除 crontab 的工作內容

範例:

範例一:用 dmtsai 在每天的 12:00 發信給自己

[dmtsai@linux ~]$ crontab -e

# 此時會進入 vi 的編輯畫面讓您編輯工作!注意到,每項工作都是一行。

0 12 * * * mail dmtsai -s "at 12:00" < /home/dmtsai/.bashrc

分 時 日 月 週 |<==============指令串========================>|

任 何使用者只要不被列入 /etc/cron.deny 當中,那麼他就可以直接下達『 crontab -e 』去編輯自己的例行性命令了!整個過程就如同上面提到的,會進入 vi 的編輯畫面, 然後以一個工作一行來編輯,編輯完畢之後,輸入『 :wq 』儲存後離開 vi 就可以了! 而每項工作的格式都是『 五個時間參數 實際動作指令 』,那麼那五個時間參數代表什麼呢?

代表意義分鐘小時日期月份
數字範圍0-590-231-311-120-7
比較有趣的是那個『週』喔!當週為 0 或 7 時,都代表『星期天』的意思!另外, 還有一些輔助的字符,大概有底下這些:

特殊字符代表意義
*代表任何時刻都接受的意思!舉例來說,上表的範例一,那個日、月、週都是 * , 就代表著『不論何月、何日的禮拜幾的 12:00 都執行後續指令』的意思!
,代表分隔時段的意思。舉例來說,如果要下達的工作是 3:00 與 6:00 時,就會是:

0 3,6 * * * command
還是有五欄,不過第二欄是 3,6 ,代表 3 與 6 都適用!
-代表一段時間範圍內,舉例來說, 8 點到 12 點之間的每小時的 20 分都進行一項工作:

20 8-12 * * * command
仔細看到第二欄變成 8-12 喔!代表 8,9,10,11,12 都適用的意思!
/n那個 n 代表數字,亦即是『每隔 n 單位間隔』的意思,例如每五分鐘進行一次,則:

*/5 * * * * command
很簡單吧!用 * 與 /5 來搭配,也可以寫成 0-59/5 ,相同意思!
假如每五分鐘需要執行 /home/rsync/test.sh 一次,使用 crontab -e 進入編輯:

*/5 * * * * /home/rsync/test.sh

你每個星期五下午4:30需要同步,使用 crontab -e

30 16 * * 5 /home/rsync/test.sh
test.sh就是预先编辑好的rsync指令,如:
#!/bin/bash

/home/rsync/bin/rsync -azu --progress root@192.168.2.11:/tmp/test/. /home/test/
编辑完成后,chmod 755 /home/rsync/test.sh,赋予该文件执行权限。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Linux 主机 ssh