rsync(rem ote synchronize)是一个远程数据同步工具,可通过 LAN/WAN 快速同步多台主机之间的文件。也可以使用 rsync 同步本地硬盘中的不同目录
rsync是用于替代rcp的一个工具,rsync 使用所谓的 rsync算法进行数据同步,这种算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度非常快。
1)本地使用:
rsync [OPTION...] SRC... [DEST]
2)通过远程 Shell 使用:
拉: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
推: rsync [OPTION...] SRC... [USER@]HOST:DEST
3)访问 rsync 服务器:
拉: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
推: rsync [OPTION...] SRC... [USER@]HOST::DEST
拉: rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
推: rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST其中:
SRC: 是要复制的源位置
DEST: 是复制目标位置
若本地登录用户与远程主机上的用户一致,可以省略 USER@
使用远程 shell 同步时,主机名与资源之间使用单个冒号“:”作为分隔符
使用 rsync 服务器同步时,主机名与资源之间使用两个冒号“::”作为分隔符
当访问 rsync 服务器时也可以使用 rsync://URL
“拉”复制是指从远程主机复制文件到本地主机
“推”复制是指从本地主机复制文件到远程主机
当进行“拉”复制时,若指定一个 SRC 且省略 DEST,则只列出资源而不进行复制
下面列出常用选项:
选项 说明
-a,--archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等价于 -rlptgoD (注意不包括 -H)
-r,--recursive 对子目录以递归模式处理
-l,--links 保持符号链接文件
-H,--hard-links 保持硬链接文件
-p,--perms 保持文件权限
-t,--times 保持文件时间信息
-g,--group 保持文件属组信息
-o,--owner 保持文件属主信息 (super-user only)
-D 保持设备文件和特殊文件 (super-user only)
-z,--compress 在传输文件时进行压缩处理
--exclude=PATTERN 指定排除一个不需要传输的文件匹配模式
--exclude-from=FILE 从FILE中读取排除规则
--include=PATTERN 指定需要传输的文件匹配模式
--include-from=FILE 从FILE中读取包含规则
--copy-unsafe-links 拷贝指向SRC路径目录树以外的链接文件
--safe-links 忽略指向SRC路径目录树以外的链接文件(默认)
--existing 仅仅更新那些已经存在于接收端的文件,而不备份那些新创建的文件
--ignore-existing 忽略那些已经存在于接收端的文件,仅备份那些新创建的文件
-b,--backup 当有变化时,对目标目录中的旧版文件进行备份
--backup-dir=DIR 与-b结合使用,将备份的文件存到 DIR 目录中
--link-dest=DIR 当文件未改变时基于 DIR 创建硬链接文件
--delete 删除那些接收端还有而发送端已经不存在的文件
--delete-before 接收者在传输之前进行删除操作 (默认)
--delete-during 接收者在传输过程中进行删除操作
--delete-after 接收者在传输之后进行删除操作
--delete-excluded 在接收方同时删除被排除的文件
-e,--rsh=COMMAND 指定替代 rsh 的 shell 程序
--ignore-errors 即使出现 I/O 错误也进行删除
--partial 保留那些因故没有完全传输的文件,以是加快随后的再次传输
--progress 在传输时显示传输过程
-P 等价于--partial--progress
--delay-updates 将正在更新的文件先保存到一个临时目录(默认为 “.~tmp~”),待传输完毕再更新目标文件
-v,--verbose 详细输出模式
-q,--quiet 精简输出模式
-h,--human-readable 输出文件大小使用易读的单位(如,K,M等)
-n,--dry-run 显示哪些文件将被传输
--list-only 仅仅列出文件而不进行复制
--rsync-path=PROGRAM 指定远程服务器上的 rsync 命令所在路径
--password-file=FILE 从 FILE 中读取口令,以避免在终端上输入口令,通常在 cron 中连接 rsync 服务器时使用
-4,--ipv4 使用 IPv4
-6,--ipv6 使用 IPv6
--version 打印版本信息
--help 显示帮助信息
rsync的基本使用
在本地磁盘同步数据
rsync -a --delete /home /backups
rsync -a --delete /home/ /backups/home.0
在指定复制源时,路径是否有最后的 “/” 有不同的含义,例如:
/home: 表示将整个 /home 目录复制到目标目录
/home/:表示将 /home 目录中的所有内容复制到目标目录
centos7自带rsync,今天简单记录下,以自己环境为例,软件介绍就不说了。
rsync安装配置步骤
服务器端:
1.修改默认配置文件/etc/rsyncd.conf,该成如下:
/etc/rsyncd: configuration file for rsync daemon mode
See rsyncd.conf man page for more options.
configuration example:
uid = root //设置运行rsync 进程的用户
gid = root
use chroot = no
max connections = 4
pid file = /var/run/rsyncd.pid //CentOS7中yum安装不需指定pid file 否则报错
lock file=/var/run/rsyncd.lock
log file = /var/log/rsyncd.log //此文件定义完成后系统会自动创建
exclude = lost+found/
transfer logging = yes
timeout = 900
ignore nonreadable = yes //同步时跳过没有权限的目录
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2 //传输时不压缩的文件
[ftp] //系统自带例子,没删
path = /home/ftp
comment = ftp export area
[simba] //此名字即客户端使用rsync来同步的路径path=/usr/local/simba //实际需要同步的路径
comment=simba //和中括号里名字一样就行
ignore errors
read only=yes //表示可以pull
write only=no //表示可以push
list=no
auth user=rsyncuser //客户端获取文件的身份此用户并不是本机中确实存在的用户
secrets file=/etc/rsyncd.passwd //用来认证客户端的秘钥文件 格式 USERNAME:PASSWD 此文件权
//限一定需要改为600,且属主必须与运行rsync的用户一致。
hosts allow=* //允许所有主机访问
2.创建密钥文件
echo 'rsyncuser:123456'>/etc/rsyncd.passwd //文件用户名和路径为上面定义,别写错,密码自己定
chmod 600 /etc/rsyncd.passwd //修改权限
3.启动rsync服务
systemctl start rsyncd.service
systemctl enable rsyncd.service
启动后可以查看下日志,是否正常
tail /var/log/rsyncd.log
是否有如下提示:
rsyncd version 3.0.9 starting, listening on port 873
本文为Lokie.Wang原创文章,转载无需和我联系,但请注明来自lokie博客http://lokie.wang