带你走进rsync的世界


导读Rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件,也可以使用 Rsync 同步本地硬盘中的不同目录。rsync共有3种使用方法,在配置rsync也是有6个步骤的。下面我们就从rsync的介绍,rsync的使用和rsync的配置带你走进rsync的世界
一.rsync简介

Rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件,也可以使用 Rsync 同步本地硬盘中的不同目录。 在使用 rsync 进行远程同步时,可以使用两种方式:远程 Shell 方式(建议使用 ssh,用户验证由 ssh 负责)和 C/S 方式(即客户连接远程 rsync 服务器,用户验证由 rsync 服务器负责)。rsync 被称为是一个文件同步的快速方法,主要是因为其在同步文件时会检查文件之间是否有差异,它只同步存在差异或者不存在的文件,但是首次同步时速度依然很慢。

rsync有许多选项:
    -n: 在不确定命令是否能按意愿执行时,务必要事先测试;-n可以完成此功能;
    -v: --verbose,详细输出模式
    -q: --quiet,静默模式
    -c: --checksum,开启校验功能,强制对文件传输进行校验
    -r: --recursive,递归复制;
    -a: --archives,归档,保留文件的原有属性
    -p: --perms 保留文件的权限
    -t: --times 保留文件的时间戳
    -l: --links 保留文件的符号链接 
    -g: --group 保留文件的属组
    -o: --owner 保留文件的属主
    -D: --devices 保留设备文件
    -H, --hard-links 保留硬链结;
    -S, --sparse 对稀疏文件进行特殊处理以节省DST的 空间;
    -e ssh: 表示使用ssh协议作承载
    -z: 对文件压缩后传输
    --progress:显示进度条
    --stats: 显示如何执行压缩和传输
    --delete:删除那些DST中有而SRC没有的文件,即删除DST中多余的文件;

带你走进rsync的世界带你走进rsync的世界

二,rsync使用方法

rsync可以在此处下载   http://rsync.samba.org/  ,CentOS系统上rsync默认是安装的。

rsync有六种不同的工作模式:

1. 拷贝本地文件

当SRC和DES路径信息都不包含有单个冒号”:”分隔符时就启动这种工作模式。

[root@localhost ~]# rsync -avSH /home/feiyu/ /bak/
2.将本地机器的内容拷贝到远程机器

使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。当DST路径地址包含单个冒号”:”分隔符时启动该模式。

[root@localhost ~]# rsync -av /home/feiyu/ 192.168.0.24:/home/feiyu/
3.将远程机器的内容拷贝到本地机器

使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当SRC地址路径包含单个冒号”:”分隔符时启动该模式。

[root@localhost ~]# rsync -av 192.168.0.24:/home/feiyu/  /home/feiyu/ 

注意:rsync命令使用中,如果源参数的末尾有斜线,就会复制指定目录的内容,而不复制目录本身;没有斜线,则会复制目录本身;目标参数末尾的斜线没有作用;因此下面的命令

[root@localhost ~]# rsync -r /mydata/data /backups/ : 会把目录data直接同步至/backups目录中
 
[root@localhost ~]# rsync -r /mydata/data/ /backups/: 会把目录data/中的内容的同步至/backups目录中

后面三种模式都是在rsync作为服务器时才能使用的,下面就开始配置rsync作为一个服务。

三,配置rsync服务

配置一个简单的rsync服务并不复杂,但是我们安装好rsync后,并没有发现配置文件,所以你需要手动建立一些配置文件。rsync可以经由xinetd启动daemon,或者作为一个独立进程启动daemon。如果把它作为一个独立进程来启动,只需要运行命令:rsync –daemon即可;但是我们一般将其作为超级守护进程使用。下面是安装步骤:

1.安装并启动xinetd
[root@localhost ~]# yum -y install xinetd 
 
[root@localhost ~]# ls  /etc/xinetd.d/    #rsync的xinetd配置文件已经存在
chargen-dgram   daytime-dgram   discard-dgram   echo-dgram   rsync          time-dgram
chargen-stream  daytime-stream  discard-stream  echo-stream  tcpmux-server  time-stream
2. 为rsync服务提供配置文件

配置文件为/etc/rsyncd.conf,获取帮助的方式:man rsyncd.conf。配置文件需要定义一个全局配置和多个rsync共享配置。

[root@localhost ~]# cat  /etc/rsyncd.conf 
# Global Settings
# port = 873   端口号默认为873,可以不指定
uid = nobody  //指定当模块传输文件的守护进程UID
gid = nobody  //指定当模块传输文件的守护进程GID
use chroot = no  //使用chroot到文件系统中的目录中
max connections = 5   //最大并发连接数
strict modes = yes      #严格检查文件权限
pid file = /var/run/rsyncd.pid  //指定PID文件
lock file = /usr/local/rsyncd/rsyncd.lock  //指定支持max connection的锁文件,默认为/var/run/rsyncd.lock
log file = /var/log/rsyncd.log  //rsync 服务器的日志
 
# Directory to be synced
[mydata]          //自定义模块
path = /mydata/data    //用来指定要备份的目录
ignore errors = yes    //可以忽略一些IO错误
read only = no  //设置no,客户端可以上传文件,yes是只读
write only = no  //no为客户端可以下载,yes 不能下载
hosts allow = 192.168.0.0/16  //可以连接的IP
hosts deny = *   //禁止连接的IP
list = false       //客户请求时,使用模块列表
uid = root
gid = root	
auth users = myuser   //连接用户名,和linux系统用户名无关系
secrets file = /etc/rsyncd.passwd	//验证密码文件

说明(deny | allow 规则):
1、二者都不出现时,默认为允许访问;
2、只出现hosts allow: 定义白名单;但没有被匹配到的主机由默认规则处理,即为允许;
3、只出现hosts deny: 定义黑名单;出现在名单中的都被拒绝;
4、二者同时出现:先检查hosts allow,如果匹配就allow,否则,检查hosts deny,如果匹配则拒绝;如二者均无匹配,则由默认规则处理,即为允许;

3.创建密码文件

文件格式(明文): username : password

[root@localhost ~]# echo "myuser:mypass" >  /etc/rsyncd.passwd 
 
[root@localhost ~]# chmod 600 /etc/rsyncd.passwd     #权限必须为600
4.启动服务
[root@localhost ~]# service xinetd  start
5.使用方法 ( 后三种模式 )

a. 从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含”::”分隔符时启动该模式。

[root@localhost ~]# rsync -av myuser@192.168.0.23::mydata /tmp/     #myuser为rsync服务器的一个用户

b. 从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含”::”分隔符时启动该模式。

[root@localhost ~]# rsync -av install.log.syslog  myuser@192.168.0.23::mydata 

c. 列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。

[root@localhost ~]# rsync -av myuser@192.168.0.23::mydata



本文原创地址:http://www.linuxprobe.com/use-rsync-file.html

免费提供最新Linux技术教程书籍,为开源技术爱好者努力做得更多更好:http://www.linuxprobe.com/thread


<think>好的,我现在需要解决用户关于如何在rsync命令中使用密码进行传输的问题。用户提到了密码的解决方案或配置方法,因此我需要从之前的对话和提供的引用中寻找相关信息。 首先,回顾用户的历史提问,他们之前询问了rsync的使用方法,并得到了包括远程同步、参数详解、排除文件等内容的回答。现在用户更具体地想要了解如何配置密码,特别是在命令行中使用密码,而不是手动输入,这可能涉及到安全性和自动化的问题。 查看用户提供的引用,引用[1]中的示例命令使用了`--password-file`选项,这说明这是客户端指定密码文件的方法。引用[2]提到了配置文件中设置`secrets file`,这可能涉及服务端的密码配置。引用[4]中的测试命令同样使用了`--password-file`参数。这些引用都指向了使用密码文件的方式,而不是在命令行中直接输入密码,这应该是推荐的做法,因为直接在命令行中使用明文密码不安全。 接下来,我需要确定如何配置rsync以使用密码文件。通常有两种情况:作为客户端拉取或推送数据时使用密码文件,以及作为服务端配置模块时需要设置认证用户和密码文件。用户的问题可能更关注客户端的使用,但服务端配置也是相关的,尤其是在设置守护进程模式时。 根据引用[3]中的基本语法,rsync支持通过SSH或rsync守护进程进行传输。如果使用SSH,通常使用SSH密钥认证,可能不需要密码,但用户可能指的是rsync守护进程模式下的密码验证。因此,需要区分这两种情况。 在rsync守护进程模式下,服务端需要配置模块,并指定`auth users`和`secrets file`。客户端连接时需要使用`用户名@主机::模块`的形式,并通过`--password-file`指定密码文件。例如,引用[1]中的命令`rsync -vzrtopg rsync_backup@192.168.100.10::backup/etc/hosts /opt --password-file=/etc/rsync.password`就展示了这种用法。 另外,引用[2]中的配置文件示例显示服务端设置了`secrets file`,并配置了模块的访问权限。客户端需要对应的密码文件来认证。需要注意的是,密码文件的权限必须严格设置,通常为600,否则rsync会报错。 用户可能想知道如何创建密码文件,以及如何在客户端和服务端配置。服务端的密码文件格式是`用户名:密码`,而客户端的密码文件仅包含密码。例如,服务端的`rsyncd.secrets`可能有`rsync_user:password123`,而客户端的`rsync.password`只有`password123`。 同时,用户可能关心如何避免在命令行中明文输入密码,确保安全性。使用`--password-file`是推荐的方法,而不是使用`--password`选项,因为后者可能在历史记录中暴露密码。 还需要提到,如果使用SSH方式,可以通过SSH密钥对实现无密码登录,但这可能不是用户当前的问题焦点,因为用户明确提到了密码的配置。不过,可能作为替代方案提及。 最后,需要总结步骤,确保用户能够按照指导完成配置,并强调安全注意事项,如文件权限和密码文件的保护。</think>以下是根据您的需求整理的$rsync$密码验证配置详解,包含服务端与客户端的完整操作流程: --- ### 一、密码验证的两种模式 #### 1. SSH密码认证(不推荐明文) ```bash rsync -avz -e "sshpass -p '你的密码' ssh" /本地路径 用户@远程IP:/目标路径 ``` *⚠️ 安全隐患:密码会暴露在命令历史记录中*[^3] #### 2. rsync守护进程模式(推荐方案) 通过配置文件实现模块化访问控制,支持密码文件加密验证[^2][^4] --- ### 二、服务端配置步骤(守护进程模式) #### 1. 创建密码文件 ```bash echo "认证用户名:密码明文" > /etc/rsyncd.secrets # 格式:username:password chmod 600 /etc/rsyncd.secrets # 必须设置严格权限 ``` #### 2. 修改配置文件`/etc/rsyncd.conf` ```ini # 全局配置 uid = root gid = root use chroot = no max connections = 5 pid file = /var/run/rsyncd.pid log file = /var/log/rsyncd.log # 模块配置 [my_backup] path = /data/backup comment = 加密传输模块 auth users = sync_admin # 必须与密码文件中的用户名一致 secrets file = /etc/rsyncd.secrets read only = no list = yes ``` #### 3. 启动守护进程 ```bash rsync --daemon --config=/etc/rsyncd.conf ``` --- ### 三、客户端操作指南 #### 1. 创建纯密码文件 ```bash echo "密码明文" > ~/rsync_passwd # 仅包含密码,无用户名 chmod 600 ~/rsync_passwd ``` #### 2. 密码同步命令模板 ```bash rsync -avz --progress \ --password-file=~/rsync_passwd \ 本地路径/ sync_admin@服务器IP::my_backup/目标路径 ``` #### 3. 实战案例演示 ```bash # 推送本地文件到远程模块 rsync -av /var/log/nginx/access.log \ --password-file=/etc/rsync_client.pass \ backup_user@10.0.0.5::web_logs/ # 从远程拉取整个目录 rsync -avz --delete \ --password-file=~/secure_pass \ data_sync@203.0.113.10::db_backup/ /local/backup/ ``` --- ### 四、安全强化措施 1. **密码文件权限** 必须设置`chmod 600`,否则rsync会拒绝执行[^4] 2. **使用SSH隧道加密** 组合SSH加密通道(需预先配置密钥对): ```bash rsync -av -e "ssh -i ~/.ssh/rsync_key" \ --password-file=~/passfile \ /src/ user@host::module ``` 3. **定期轮换密码** 建议每月更新密码文件内容,同步更新服务端和客户端配置 --- ### 五、常见问题排查 #### Q1: 报错"password file must not be other-accessible" ```bash chmod 600 /path/to/password_file # 修正文件权限 ``` #### Q2: 认证失败"auth failed on module" ```bash # 检查三要素: 1. 服务端密码文件格式是否正确(username:password) 2. 客户端密码文件是否只有密码(无用户名) 3. 防火墙是否开放873端口 ``` #### Q3: Windows客户端配置 参考引用[2]配置`rsyncd.conf`: ```ini [win_share] path = D:\backup auth users = win_user secrets file = C:\rsyncd.secrets ``` 客户端命令: ```powershell rsync.exe -avr --password-file=C:\pass.txt .\data\ win_user@linux-host::win_share ``` --- ### 六、模式对比表 | 验证方式 | 安全性 | 配置复杂度 | 适用场景 | |------------------|--------|------------|--------------------| | SSH密码明文 | 低 | 简单 | 临时测试 | | SSH密钥对 | 高 | 中等 | 自动化脚本 | | rsync密码文件 | 中 | 中等 | 内网受控环境 | | 双加密通道 | 最高 | 复杂 | 跨公网敏感数据传输 | ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值