Linux学习笔记:Rsync
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux学习笔记:Rsync相关的知识,希望对你有一定的参考价值。
Rsync
目录
Rsync是什么
rsync是一个开源的、快速的、多功能、增量备份工具,可用于本地或远程。类似于cp命令,但优于cp。
在服务器和客户端的界定有点模糊,因为rsync既可以推送也可以拉取,配合ssh,它可以只在一端安装,另外一端完全不知道rsync的存在。
rsync在默认情况下,比对源文件与目标文件的mtime或size是否发生变化,去决定是否进行同步。Rsync保证源有的文件,目标也有。
Rsync的应用场景
用于两台服务器之间的文件备份。
全网备份
配合inotify或者sersync实现实时同步备份
Rsync的工作方式
本地
rsync [OPTION...] SRC... [DEST]
remote shell
Access via remote shell:
Pull: rsync [OPTION...] [[email protected]]HOST:SRC... [DEST]
例子rsync -r [email protected]:~ . #将192.168.5.142上coosh家目录下的所有文件和目录同步到本地当前目录
Push: rsync [OPTION...] SRC... [[email protected]]HOST:DEST
例子rsync -r /test [email protected]:~ #将本地/test目录同步到192.168.5.142的coosh家目录下
daemon
Access via rsync daemon:
Pull: rsync [OPTION...] [[email protected]]HOST::SRC... [DEST]
rsync [OPTION...] rsync://[[email protected]]HOST[:PORT]/SRC... [DEST]
Push: rsync [OPTION...] SRC... [[email protected]]HOST::DEST
rsync [OPTION...] SRC... rsync://[[email protected]]HOST[:PORT]/DEST
常用参数
参数 | 作用 |
-p | 保留属性 |
-r | 递归,用于目录 |
--delete | 删除目标多余的文件,相当于精确匹配 |
-q | 安静模式,不输出内容 |
-c, --checksum | 检查奇偶校验值去判断是否同步,而非修改时间和体积 |
-a, --archive | 归档模式,相当于-rlptgoD (no -H,-A,-X) |
-b, --backup | 同步之前,先进行备份目标文件;--backup-dir=DIR指定备份到的目录,--suffix=SUFFIX指定备份的后缀名,与cp不同的是,rsync仅支持一份备份 |
-u, --update | 如果目标文件更新,则不进行同步 |
-t, --times | 保留时间属性 |
-S, --sparse | 稀疏模式,对稀疏文件非常有效 |
-n, --dry-run | 试运行,非实际执行 |
-e, --rsh=COMMAND | 指定远程的shell,一般就是ssh,如果还需要指定端口,则要使用’ssh -p 端口’(要有引号) |
-m, --prune-empty-dirs | 跳过空目录 |
--contimeout=SECONDS | 设置daemon模式的连接超时时间,单位是秒 |
-T, --temp-dir=DIR | 同步临时目录。同步的文件,先放在目标的临时目录里,等到传输完毕,才自动移动到目标位置。还是蛮有用的,可以防止传输出错导致文件不完整。 |
-z, --compress | 传送时压缩,节约带宽但比较耗时。 |
--exclude=PATTERN | 排除符合指定规则的所有文件 |
--exclude-from=FILE | 排除指定文件 |
-h, --human-readable | 人类可读。优化输出,方便查阅。 |
--progress | 显示整个同步过程 |
--log-file=FILE | 日志文件 |
--password-file=FILE | daemon模式的密码文件 |
--bwlimit=KBPS | 限速 |
--protocol=NUM | 指定rsync的版本 |
--daemon | 以daemon模式运行 |
daemon模式(--daemon)的配置
配置文件的位置是/etc/rsyncd.conf,默认是不存在的,需要手工创建。先来man一下配置文件的写法
[[email protected] ~]# man rsyncd.conf
这个文件是daemon模式的配置文件,用于控制认证、访问、日志以及可用的模块。
如果需要使用chroot,则需用root来运行rsync的daemon模式。
默认情况下,rsync监听TCP 873端口。
修改配置文件后,无需重启rsync服务,当下一个rsync访问时,就会立即生效(也就是说,每次rsync连接都会去读一遍这个配置文件)
全局参数 | 作用 |
motd file | 每次rsync客户端连接时显示的信息文件,通常包括服务信息和法律条文。 |
pid file | 告诉rsync daemon记录pid信息的文件位置。如果该文件已经存在,rsync deamon会退出(仅能运行一个实例) |
port | 监听的端口(默认873) |
address | 监听的本机地址 |
socket options | 很多调优参数,参考man setsockopt。使用--sockopts command-line来指定。 |
log file | 全局日志文件 |
模块参数
模块参数 | 作用 |
[module] | module即对外声称的服务名称,可以是任意的名字,可以包含空格,但不能有斜线。 |
path | 本地路径 |
use chroot | 如果是yes,可以提高安全性,但需root的权限来运行。可以在path路径里,加入点号,例如/var/rsync/./module1 ,那么在进程中,会认为/var/rsync/module1是根。 |
uid | 在以root运行的daemon模式下,指定同步时所使用的用户角色,默认是-2,代表nobody |
gid | 同上 |
max connections | 同一时间的最大连接数 |
log file | 针对模块的日志文件 |
lock file | 锁文件,用于支持max connections参数,因此仅当设置了max connection才生效。预设是/var/run/rsyncd.lock |
read only | 只读,不允许客户端上传文件,但可读。默认是yes |
write only | 只写,不允许客户端下载文件,但可写。默认是no |
list | 模块是否可见,默认可见 |
exclude include | 排除和包含,可使用规则,多个文件可用空格隔开 |
exclude from include from | 可以指定一个文件,根据里面的内容来做过滤条件 |
auth users | 用于认证的虚拟用户,这个用户可以不存在于/etc/passwd,因此它仅仅用于认证,并不会对文件的属主有任何关联。可以指定多个虚拟用户,用逗号或空格隔开 |
secrets file | 指定虚拟用户的认证数据文件。文件内容是每一行一个用户,书写格式是user:password 而且如果打开了strict modes,那么这个文件必须是600权限,否则不能生效。 |
strict modes | 默认是打开的 |
hosts allow | 可以写ip网段,也可以写主机ip或者主机名。rsync daemon会先检查hosts allow,如果匹配则允许访问;然后再检查hosts deny,如果匹配则拒绝访问;如果allow和deny都不能匹配,也是允许访问的。 |
以上是关于Linux学习笔记:Rsync的主要内容,如果未能解决你的问题,请参考以下文章