Rsync (remote sync)
官网
rsync (samba.org)
Logo
从官网看最新版本是3.2.7,我们在线安装的版本试试是多少(试过是3.1.2)
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo
yum clean all && yum makecache
#版本的差异性具体可以看官网说明
yum install rsync -y
systemctl stop firewalld
systemctl disable firewalld
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
#操作后重启服务器
创建共享目录,存入测试文件
mkdir -p /home/share
配置文件详解
######配置文件位置:/etc/rsyncd.conf
##############以下是配置文件主内容##############
#服务器信息文件,同步文件的时候展示的内容
motd file = /etc/rsyncd.motd
#是否开启文件传输日志功能
transfer logging = yes
#日志文件名称
log file = /var/log/rsyncd.log
#进程号保存文件
pid file = /var/run/rsyncd.pid
#锁文件名称
lock file = /var/run/rsync.lock
#服务器监听的端口号
port = 873
#服务器监听网卡接口的ip地址
address = 0.0.0.0
#设置进行数据传输时所使用的账号名称或ID号
uid = 0
#设置进行数据传输时所使用的组名称或者GID号
gid = 0
#chroot为yes会改变根目录,会将根目录映射到path选项的目录下,对客户端,系统的根就是path所指的路径,这样做需要root权限
use chroot = yes
#设置并发数,0代表无限制,如果超出并发数,依然有客户端连接的话,就会收到稍后重试的提示
max connections = 10
##############以下是模块内容##############
#rsync通过模块定义同步的目录,与samba定义共享目录的效果,可以定义多个模块
#模块名称
[test]
#模块说明
comment = then is test
#同步目录
path = /home/share
#忽略一些IO错误
ignore errors
#exclude可以指定例外的目录,对/home/share目录下的某个目录设置为不同步数据
#exclude = test/
#设置允许连接服务端的账号,账号可以是系统中不存在的用户
auth users = test1
#设置密码验证文件名称和路径,文件权限要求为只读,权限建议600,仅在设置auth users参数后有效
secrets file = /etc/rsyncd.secrets
#客户端请求显示模块列表外,是否显示
list = true
创建密码文件
echo 'test1:123456' >> /etc/rsyncd.secrets
chmod 600 /etc/rsyncd.secrets
#可以在服务器信息文件写入一些描述
echo 'Welcome to Rsync' >> /etc/rsyncd.motd
#其实就是启动一个服务,对于centos7来说
systemctl restart rsyncd
#配置开机启动起
systemctl enable rsyncd
##按照前面的设置安装rsync即可,唯一的区别就是不用配置文件和daemon运行
rsync --version
rsync 命令使用
SRC 表示源路径,DEST 表示目标路径
本地复制
rsync [选项] SRC [DEST]
通过远程 shell 执行复制
下载数据:rsync [选项] [USER@]HOST:SRC [DEST]
上传数据:rsync [选项] SRC [USER@]HOST:DEST
通过 rsync 进程复制
下载数据:
rsync [选项] [USER@]HOST::SRC [DEST]
rsync [选项] rsync://[USER@]HOST[:PORT]/SRC [DEST]
上传数据:
rsync [选项] SRC [USER@]HOST::DEST
rsync [选项] SRC rsync://[USER@]HOST[:PORT]/DEST
第一个路径参数一定是源文件路径,即作为同步基准的一方,可以同时指定多个源文件路径。最后一个路径参数则是目标文件路径,也就是待同步方。路径的格式可以是本地路径,也可以是使用user@host:path或user@host::path的远程路径,如果主机和path路径之间使用单个冒号隔开,表示使用的是远程shell通信方式,而使用双冒号隔开的则表示的是连接rsync daemon。另外,连接rsync daemon时,还提供了URL格式的路径表述方式rsync://user@host/path
选项
选项 | 说明 |
---|---|
-v | 显示详细信息 |
-q | 静默模式,无错误信息 |
-a | 归档模式,主要保留文件属性 |
-r | 递归 |
-b | 存在同名文件则旧的重命名为【~filename】,使用 --suffix指定不同的备份前缀 |
–back-dir | 将备份文件保存指定目录 |
–suffix | 指定备份文件前缀 |
-u | 目标地址要比下载的文件新,则不执行同步,不会用旧文件去覆盖新的 |
-l | 保留符号链接 |
-p | 保留文件属性 |
-H | 保留硬链接 |
-A | 保留ACL权限 |
-X | 保留文件附加属性 |
-o | 保留文件所有者属性 |
-g | 保留文件所属组属性 |
–devices | 保留设备文件 |
–specials | 保留特殊文件 |
-D | 等同于 --devices --specials |
-t | 保留修改时间属性(任何时候使用都应该加上) |
-W | 不做增量检查,直接复制全部文件 |
-e | 指定远程shell |
–existing | 仅同步目标路径已经有的文件,不下载源路径下的新文件 |
–delete | 删除那些仅在目标中存在的文件(源路径不存在) |
-z | 传输过程中对数据进行压缩 |
–include=PATTERN | 匹配不排除的文件 |
–exclude=PATTERN | 匹配需要排除的文件 |
–progress | 显示数据传输的进度信息 |
-partial | 保留因故障未传输完的文件 |
-P | 等同于–progress -partial |
–password-file=FILE | 指定密码文件,将密码写入文件,实现非交互式数据同步 |
–list-only | 仅列出服务器模块列表 |
-R | 使用相对路径。意味着将命令行中指定的全路径而非路径最尾部的文件名发送给服务端,包括它们的属性 |
rsync -avzt /home/share /tmp
rsync /etc/fstab /tmp
#不加任何参数复制文件会导致文件的修改时间
rsync -Rr /home/share /tmp
rsync -Rr /var/log/./audit/audit.log /home
下载数据:rsync [选项] [USER@]HOST:SRC [DEST]
上传数据:rsync [选项] SRC [USER@]HOST:DEST
rsync -avzt [email protected]:/home/share /home
rsync -avzt /home/ceshi.txt [email protected]:/home/share
服务端查看这个文件
要在客户端设置密码文件
echo "123456" > /etc/rsync.pass
chmod 600 /etc/rsync.pass
下载数据:
rsync [选项] [USER@]HOST::SRC [DEST]
rsync [选项] rsync://[USER@]HOST[:PORT]/SRC [DEST]
上传数据:
rsync [选项] SRC [USER@]HOST::DEST
rsync [选项] SRC rsync://[USER@]HOST[:PORT]/DEST
rsync --list-only [email protected]::
rsync -avzt [email protected]::test /tmp
#输入密码后即可下载到本地
rsync -avzt --password-file=/etc/rsync.pass [email protected]::test /tmp
#客户端每次连接rsync输入密码都比较麻烦,我们创建密码文件/etc/rsync.pass,文件中包含了密码,就可以指定了,注意这个密码文件的权限