全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

CeraNetworks网络延迟测速工具IP归属甄别会员请立即修改密码
查看: 5043|回复: 22

[经验] rsync最简配置方案,直接使用ssh

[复制链接]
发表于 2011-10-11 11:49:27 | 显示全部楼层 |阅读模式
大家都知道rsync用于增量同步是很好用的。
但是我看大家怎么配置的那么纠结……
其实不需要rsyncd就能同步,rsync是支持ssh协议的
因此,下面的方法就不需要配置路径啊,账户啊,神马一堆都不需要。

只需要
服务器端安装了ssh,你得帐号可以登录。
客户端安装rsync,无需配置,直接脚本命令(+cron如果你需要定时工作)即可。

原创,转载请注明来自:配置rsync+ssh+密码登录

rsync的更新是差量的,即有变化的文件才更新,最大程度的减少了数据传输量和时间。
但是配置起来比较繁琐。即需要rsyncd和rsync共同配置。

实际上,rsync是支持ssh协议的,只要走ssh协议就可以了。走ssh协议速度稍慢一些,但是配置非常简单。
同时,ssh协议的缺点就是,密码问题不好搞定,因为需要非交互模式,我们使用sshpass来避免配置密钥免登录。

1、安装rsync和sshpass
安装rsync。我们走的是rsync over ssh协议,因此不需要在服务器端安装rsyncd,只要服务器开了ssh就行。

yum install rsync

yum install sshpass

基于Debian的发行版一般都有sshpass,如果你的CentOS没有,直接去下载,编译一个,无依赖,非常简单.
sshpass开源项目:http://sourceforge.net/projects/sshpass/files/


2、一次更新
在rsync over ssh的基础上,我们采用sshpass解决非交互模式输入密码的问题。(传统做法是:使用密钥,但是很麻烦。)

我们先得成功登录一次remotehost,之后就可以使用sshpass了。

ssh remote_user@remote_host

特别提醒:如果今后远程主机重装系统,或者换了机器,一定要删除本地~/.ssh/known_host,否则是会无法登录的。

下面测试rsync over ssh,密码登录。

sshpass -p remote_password rsync -avz --delete -e ssh remote_user@remote_host:/remote/dir /local/dir

上面的命令中:
remote_use/remote_password是远程的密码
-avz是打包传送、显示明细、压缩
-e ssh是关键,即over ssh
我们要从远程同步到本地
/remote/dir是远程服务器路径
/local/dir是本地服务器路径

3、加入cron job
在上一步中,我们已经完成了一步的同步,下面我们要加入cron job
不同发行版本中,cron job的用法有细微差别,下面以Turbo Linux为例,理论上它应该适用于所有同源于RHEL的发行版本。

首先,准备一下要执行的脚本,将第2步中,下述内容写入到rsync-xx,注意符合cron job的命名规则

vim rsync-xx
sshpass -p remote_password rsync -avz --delete -e ssh remote_user@remote_host:/remote/dir /local/dir

安装cron
sudo yum install vixie-cron

启动crond服务,注意添加crond到开机启动服务[code]
sudo /etc/init.d/crond start

我们要每3分钟检查一次,如果你准备又多个同步脚本,建议采用run-parts的方案1,如果只有一两个,可以直接在crontab写,即方案2

[方案1]
使用run-parts

#创建cron.min,把要执行的N个脚本拷贝过来
sudo mkdir cron.min
cp rsync-xx ./

#更改cron table
vim /etc/crontab
*/3 * * * * root run-parts /etc/cron.min

[方案2]
直接写cron table

#假设我们的脚本位于/path/cron.min
vim /etc/crontab
*/3 * * * * /path/cron.min
如果没有问题的的话,就会每隔三分钟更新了!

有问题欢迎留言或者跟贴,写的不对的地方欢迎纠正……

评分

参与人数 3威望 +45 收起 理由
cnx + 20 精品文章
Service + 5 原创内容
lxfy + 20 原创内容

查看全部评分

 楼主| 发表于 2011-10-11 12:48:40 | 显示全部楼层
补充,可使用flock实现shell互斥。
即解决:一次cron job执行没完成,又紧接着执行了下一次的问题。

flock -xn $LOCK -c $CMD
发表于 2011-10-11 13:00:59 | 显示全部楼层
看不懂
发表于 2011-10-11 13:01:30 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2011-10-11 13:06:22 | 显示全部楼层
技术贴。
发表于 2011-10-11 13:07:37 | 显示全部楼层
收藏
发表于 2011-10-11 13:08:21 | 显示全部楼层
可以把DH上的东西弄下来的不?
发表于 2011-10-11 13:13:15 | 显示全部楼层
帅气!
发表于 2011-10-11 13:14:45 | 显示全部楼层
技术帝、
发表于 2011-10-11 13:14:52 | 显示全部楼层
收藏
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2024-5-3 22:02 , Processed in 0.087114 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表