<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>深度VPS &#187; rsync</title>
	<atom:link href="http://www.deepvps.com/tag/rsync/feed" rel="self" type="application/rss+xml" />
	<link>http://www.deepvps.com</link>
	<description>专注VPS技术，关注前端技术</description>
	<lastBuildDate>Sat, 04 Feb 2023 14:00:33 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>配置 rsync+ssh+密码登录</title>
		<link>http://www.deepvps.com/rsync-ssh-password.html</link>
		<comments>http://www.deepvps.com/rsync-ssh-password.html#comments</comments>
		<pubDate>Wed, 30 Jan 2013 14:11:15 +0000</pubDate>
		<dc:creator>deepvps</dc:creator>
				<category><![CDATA[VPS管理维护]]></category>
		<category><![CDATA[rsync]]></category>
		<category><![CDATA[SSH]]></category>

		<guid isPermaLink="false">http://www.deepvps.com/?p=1268</guid>
		<description><![CDATA[大家都知道rsync用于增量同步是很好用的。
但是我看大家怎么配置的那么纠结……
其实不需要rsyncd就能同步，rsync是支持ssh协议的。
因此，下面的方法就不需要配置路径啊，账户啊，神马一堆都不需要。
只需要：
服务器端安装了ssh，你得帐号可以登录。
客户端安装rsync，无需配置，直接脚本命令（+cron如果你需要定时工作）即可。
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 &#8211;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 &#8211;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 [...]]]></description>
			<content:encoded><![CDATA[<p>大家都知道rsync用于增量同步是很好用的。<br />
但是我看大家怎么配置的那么纠结……<br />
其实不需要rsyncd就能同步，rsync是支持ssh协议的。<br />
因此，下面的方法就不需要配置路径啊，账户啊，神马一堆都不需要。</p>
<p>只需要：<br />
服务器端安装了ssh，你得帐号可以登录。<br />
客户端安装rsync，无需配置，直接脚本命令（+cron如果你需要定时工作）即可。<span id="more-1268"></span></p>
<p>rsync的更新是差量的，即有变化的文件才更新，最大程度的减少了数据传输量和时间。<br />
但是配置起来比较繁琐。即需要rsyncd和rsync共同配置。</p>
<p>实际上，rsync是支持ssh协议的，只要走ssh协议就可以了。走ssh协议速度稍慢一些，但是配置非常简单。<br />
同时，ssh协议的缺点就是，密码问题不好搞定，因为需要非交互模式，我们使用sshpass来避免配置密钥免登录。</p>
<h3>1、安装rsync和sshpass</h3>
<p>安装rsync。我们走的是rsync over ssh协议，因此不需要在服务器端安装rsyncd，只要服务器开了ssh就行。</p>
<blockquote><p>yum install rsync</p>
<p>yum install sshpass</p></blockquote>
<p>基于Debian的发行版一般都有sshpass，如果你的CentOS没有，直接去下载，编译一个，无依赖，非常简单.<br />
sshpass开源项目：http://sourceforge.net/projects/sshpass/files/</p>
<h3>2、一次更新</h3>
<p>在rsync over ssh的基础上，我们采用sshpass解决非交互模式输入密码的问题。（传统做法是：使用密钥，但是很麻烦。）</p>
<p>我们先得成功登录一次remotehost，之后就可以使用sshpass了。</p>
<p>ssh remote_user@remote_host</p>
<p>特别提醒：如果今后远程主机重装系统，或者换了机器，一定要删除本地~/.ssh/known_host，否则是会无法登录的。</p>
<p>下面测试rsync over ssh，密码登录。</p>
<p>sshpass -p remote_password rsync -avz &#8211;delete -e ssh remote_user@remote_host:/remote/dir /local/dir</p>
<p>上面的命令中:<br />
remote_use/remote_password是远程的密码<br />
-avz是打包传送、显示明细、压缩<br />
-e ssh是关键，即over ssh<br />
我们要从远程同步到本地<br />
/remote/dir是远程服务器路径<br />
/local/dir是本地服务器路径</p>
<h3>3、加入cron job</h3>
<p>在上一步中，我们已经完成了一步的同步，下面我们要加入cron job<br />
不同发行版本中，cron job的用法有细微差别，下面以Turbo Linux为例，理论上它应该适用于所有同源于RHEL的发行版本。</p>
<p>首先，准备一下要执行的脚本，将第2步中，下述内容写入到rsync-xx，注意符合cron job的命名规则</p>
<p>vim rsync-xx<br />
sshpass -p remote_password rsync -avz &#8211;delete -e ssh remote_user@remote_host:/remote/dir /local/dir</p>
<p>安装cron<br />
sudo yum install vixie-cron</p>
<p>启动crond服务，注意添加crond到开机启动服务[code]<br />
sudo /etc/init.d/crond start</p>
<p>我们要每3分钟检查一次，如果你准备又多个同步脚本，建议采用run-parts的方案1，如果只有一两个，可以直接在crontab写，即方案2。</p>
<p><strong><span style="color: #3366ff;">[方案1]</span></strong><br />
使用run-parts</p>
<p>#创建cron.min，把要执行的N个脚本拷贝过来<br />
sudo mkdir cron.min<br />
cp rsync-xx ./</p>
<p>#更改cron table<br />
vim /etc/crontab<br />
*/3 * * * * root run-parts /etc/cron.min</p>
<p><strong><span style="color: #3366ff;">[方案2]</span></strong><br />
直接写cron table</p>
<p>#假设我们的脚本位于/path/cron.min<br />
vim /etc/crontab<br />
*/3 * * * * /path/cron.min<br />
如果没有问题的的话，就会每隔三分钟更新了！</p>
<p>来自：<a href="http://www.coder4.com/archives/2323" target="_blank">配置rsync+ssh+密码登录</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.deepvps.com/rsync-ssh-password.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
