Chinaunix首页 | 论坛 | 博客
  • 博客访问: 271973
  • 博文数量: 87
  • 博客积分: 4061
  • 博客等级: 上校
  • 技术积分: 1032
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-12 16:28
文章分类

全部博文(87)

文章存档

2012年(1)

2009年(85)

2008年(1)

我的朋友

分类: BSD

2009-03-17 09:07:24

rsync 和 ssh 备份笔记

Rsync 非常适合在两台机器之间快速同步大型、复杂的目录,例如论坛的附件目录。再配合 ssh ,则安全性也有保证,且可以利用 ssh public key 和 cron 来进行自动定时同步。

说明:两台机器分别为 localhost 和 remotehost ;用户分别为 localuser 和 remoteuser。
环境:FreeBSD 4.9 和 FreeBSD 6.1

设置 ssh public key 认证

$ssh-keygen -t dsa -b 2048

生成所需的密钥

$scp /home/localuser/.ssh/id_dsa.pub remoteuser@remotehost:/home/remoteuser/.ssh/localuser_id_dsa.pub

将公钥拷贝至 remotehost

$ssh remoteuser@remotehost

登录到遠端

$cd .ssh/ ; cat localuser_id_dsa.pub >> authorized_keys

至此,设置 ssh 认证完毕。

设置 rsync
确认两端机器都安装 rsync , freeBSD 有 ports ,安装非常方便。

写个脚本名为 backup.sh ,内容如下:

#!/bin/sh

RSYNC=/usr/local/bin/rsync
SSH=/usr/bin/ssh
KEY=/home/localuser/.ssh /id_rsa
RUSER=remoteuser
RHOST=remotehost
RPATH=/remote/dir
LPATH=/this/dir

$RSYNC -az—delte -e “$SSH -i $KEY” $RUSER@$RHOST:$RPATH $LPATH

-a 选项相当于选项 -rlptgoD 。简单来讲,此选项可递归并将几乎所有的东西同步过去,非常有用。注意的是, -a 默认不会保存 hardlinks ,不过可以单独用 -H 选项来实现。
-z 选项在传输中压缩文件,这无疑加快同步速度。
-delete 选项会删除接受方一些不应存在的文件,此文件在发送方已经被删除,这将保持目录完全同步。

让 cron 每天凌晨1点来跑这个脚本
$crontab -e
0 1 * * * /home/localuser/bin/backup.sh

参考链接

阅读(925) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~