rsync 的最简使用(快速上手)

参考地址:
[1]. rsync实现免密码操作的一种实现方式
[2]. rsync error: error in socket IO (code 10) at clientserver.c(128) [Receiver=3.1.1]
[3]. rsync的介绍和配置
[4]. Rsync同步过程中遇到的常见问题

一、Rsync 安装

服务端客户端都要安装
使用 yum 或 apt 安装

# yum 安装
yum -y install rsync
# apt 安装
sudo apt-get install rsync

二、Rsync 使用

# 提交 远程工作目录默认为用户主目录
rsync <local-file> <username>@<host>:<dir>
# 拉取
rsync <username>@<host>:<file> <local-dir>

# 将本机当前所在目录下的 file1 文件上传至目标机器的 /home/user/ 下
# 随后会提示输入密码
rsync ./file1 user@192.168.137.100:/home/user/
# 拉取文件
rsync user@192.168.137.100:/home/user/hello.c ./

2-1)无密码配置

上面的方法每次都要交互输入密码,很不方便,配置不输密码的方式:
1. 在服务端编辑配置文件 /etc/rsyncd.conf(服务端)

vim /etc/rsyncd.conf
uid = 1000
gid = 1000
pid file = /var/run/rsyncd.pid
log file = /var/log/rsyncd.log
secrets file = /etc/rsyncd.secrets
auth users = user	# 认证用户 user1,user2,...

[share]  # 模块名自定义               
path = /home/user/share	# 路径
read only = no

2. 编辑文件 /etc/rsyncd.secrets(服务端)

vim /etc/rsyncd.secrets
user:12345	# user:password

3. 以守护进程方式工作(服务端)

rsync --daemon --config=/etc/rsyncd.conf

4. 修改 /etc/secrets 权限(服务端)

chmod 600 /etc/secrets

5. 环境变量配置密码(客户端)

export RSYNC_PASSWORD=12345
# 全局环境变量配置
# 在末尾添加上面的内容
sudo vim /etc/profile

6. 无密码传输方式(客户端)

rsync file2 user@192.168.137.100::share
rsync user@192.168.137.100::share/hello.c ./

2-2)优化使用

2-2-1)主机名替代主机地址

每次输入都要使用地址,为这个地址设置别名(客户端)

vim /etc/hosts
# 添加一行
192.168.137.100		nfs
# 以后可以使用 nfs 代替 192.168.137.100
rsync file2 user@nfs::share

2-2-2)传输慢的问题

使用的时候,发现传输很慢,即使很小的文件都要5秒以上
原因1:服务端反向解析的原因
原因2:网络问题

# 在服务端做以下修改
vim /etc/hosts
# 添加客户端信息
192.168.137.102		nfs

至于网络问题,由于我的使用环境是一台 Win 主机,一台虚拟机,主机通过以太网外连接一台 Linux 主机,当时发现虚拟机把文件上传至 Linux 主机时,即使很小也非常慢,上面的方式虽然解决了一点,提速 30% 吧,但是问题还在。于是尝试 Linux 主机 ping 虚拟机时发现 ping 不通(虚拟机网段:192.168.197.xxx;Linux 主机网段:192.168.137.xxx),虚拟机能 ping 通 Linux 主机。在 Window 中我将虚拟机网卡和以太网建立一个网桥,让 Wifi 共享网络到这个网桥中,于是 Linux 主机和虚拟机都在一个网段上了,这时候去尝试上传文件,秒传。问题解决,over。

改进前:(197.131 -> 197.1 -> 137.1 -> 137.100)

Windows
137.1
197.1
虚拟机(Ubuntu)
192.168.197.131
Linux (Raspberry)
192.168.137.100

改进后:(137.102 -> 137.1 -> 137.100)

虚拟机(Ubuntu)
192.168.137.102
Linux (Raspberry)
192.168.137.100

三、其它

3-1)免密传输的第二种方式

在上面介绍的免密方法日常使用非常方便,但是笔者在使用 Visual Studio 进行远程 Linux 驱动开发时,生成的文件需要从虚拟机中传输到目标开发板的 Linux 系统中。起初尝试在 Makefile 中执行 rsync 之前去设置环境变量,但是依然要求输入密码,导致卡死。
于是笔者找到了第二种免密传输的方式。具体思路是,预先将密码保存在客户端的文件中,rsync 有一个参数可以从文件中读取密码。
这种方式的缺点是必须获取 root 权限

# 创建一个保存密码的文件(客户端)
vim /etc/rsyncd.passwd
# 将密码保存,只保存密码
123456
# 修改权限
chmod 600 /etc/rsyncd.passwd
# 传输命令如下
rsync --password-file=/etc/rsyncd.passwd hello.ko user@nfs::share
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值