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/