Howto backup system
if (window.showTocToggle) { var tocShowText = “显示”; var tocHideText = “隐藏”; showTocToggle(); }
生成密钥
在Frontend机器上生成密钥
# cd ~/.ssh/
# ssh-keygen
# ls -l
total 32
-rw------- 1 root root 1671 Jul 31 11:27 id_rsa
-rw------- 1 root root 395 Jul 31 11:27 id_rsa.pub
-rw-r--r-- 1 root root 10323 Jul 31 16:07 known_hosts
复制密钥
将公共密钥复制到需要同步的服务器上:
Fedora linux & Solaris 9
# scp id_rsa.pub root@ondosrv:/root/.ssh/authorized_keys2
Redhad linux
# scp id_rsa.pub root@ondosrv:/root/.ssh/authorized_keys
测试ssh
在Frontend机器上测试
# ssh root@ondosrv
注释:应该不需要输入密码。
编写同步程序
在Frontend机器上编写同步程序
# cd /backup
# vi sync.sh
# chmod 700 sync.sh
----------------------------
Linux:
rsync -avlR --delete -e ssh root@192.168.100.1:/usr/share/tomcat5/ /backup/ondo/
rsync -avlR --delete /home/utstar/ /backup/frontend/
rsync -avlR --delete /var/named/ /backup/frontend/
rsync -avlR --delete /etc/ /backup/frontend/
----------------------------
在Windows机器上编写同步程序
rsync -avlR --delete -e ssh '/cygdrive/d/html/PCMS_document/design_document' root@frontend:/backup/hz_3g_filesrv/
参数意义如下
-a, --archive
It is a quick way of saying you want recursion and want to preserve almost everything.
-v, --verbose
This option increases the amount of information you are given during the transfer.
-l, --links
When symlinks are encountered, recreate the symlink on the destination.
-R, --relative
Use relative paths. 保留相对路径...才不让子目录跟 parent 挤在同一层...
--delete
是指如果服务器端删除了这一文件,那么客户端也相应把文件删除,保持真正的一致。
-e ssh
建立起加密的连接。
rsync命令的使用请参照:http://hi.baidu.com/finet/blog/item/e43dd8f2df3fb412b07ec5ca.html
备份目录规则
备份根目录:
/backup
按机器名称建立子目录:
/backup/ondosrv
/backup/frontend
/backup/mailsrv
......
定时执行备份程序
# crontab -e
0 2 * * * /backup/sync.sh
注释:每天凌晨2点运行进行同步。
FAQ
如何备份 Solaris 9 上的文件
Q1: rsync运行出错,e.g. Solaris machine?
[root@frontend backup]# rsync -avlR --delete -e ssh root@jstart:/jstart/ /backup/vgmsu2/
ksh: rsync: not found
rsync: connection unexpectedly closed (0 bytes received so far) [receiver]
rsync error: error in rsync protocol data stream (code 12) at io.c(434)
A: 目的机器上的rsync路径不对,无法找到rsync
root@vgmsu2:/usr/bin>which rsync
/usr/local/bin/rsync
root@vgmsu2:/usr/bin>ln /usr/local/bin/rsync /usr/bin/rsync
root@vgmsu2:/usr/bin>which rsync
/usr/bin/rsync
如何备份 Windows 上的文件
Q2: 使用 ssh 登录 Windows 服务器总是需要输入口令,如何避免口令的输入?
sshd配置
Refer to ‘quickstart.txt’
$> cd c:\Program Files\OpenSSH\bin
$> mkgroup -l >> ..\etc\group (local groups)
mkgroup -d >> ..\etc\group (domain groups)
$> mkpasswd -l [-u <username>] >> ..\etc\passwd (local users)
mkpasswd -d [-u <username>] >> ..\etc\passwd (domain users)
$> net start opensshd
现在可以从别的机器用 ssh 登录到 Windows
修复用户 home 配置
修改 c:\Program Files\OpenSSH\etc\passwd
root:unused_by_nt/2000/xp:1012:513:root,U-HZ_3G_FILESRV\root,S-1-5-21-448539723-1450960922-725345543-1012:/cygdrive/c/documents and settings/root:/cygdrive/c/program files/openssh/bin/switch
使用 /cygdrive/c/documents and settings/root 代替 /home/root/
避免输入口令
Refer to ‘key_authentication.txt’
复制客户机上的公共密钥到服务器上
$> mkdir C:\Documents and Settings\root\.ssh
$> copy id_rsa.pub C:\Documents and Settings\root\.ssh\authorized_keys
copy id_rsa.pub C:\Documents and Settings\root\.ssh\authorized_keys2
如果还是需要输入口令,则需要修改 sshd 配置文件 sshd.conf / sshd_config
原来的配置:
StrictModes yes
修改后的配置:
StrictModes no
重启 sshd 服务,就大功告成了。
rsync -avlR --delete -e ssh administrator@hz_3g_filesrv:'/cygdrive/d/html/PCMS_document/design_document/' /backup/hz_3g_filesrv/
rsync -avlR --delete -e ssh administrator@hz_3g_filesrv:'/cygdrive/f/share1/PCMS_document/8250/design_document/' /backup/hz_3g_filesrv/
rsync -avlR --delete -e ssh administrator@hz_3g_filesrv:'/cygdrive/f/share1/PCMS_document/8260/design_document/' /backup/hz_3g_filesrv/