Linux学习笔记:Rsync

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux学习笔记:Rsync相关的知识,希望对你有一定的参考价值。

Rsync

目录

  1. Rsync是什么

rsync是一个开源的、快速的、多功能、增量备份工具,可用于本地或远程。类似于cp命令,但优于cp

在服务器和客户端的界定有点模糊,因为rsync既可以推送也可以拉取,配合ssh,它可以只在一端安装,另外一端完全不知道rsync的存在。

rsync在默认情况下,比对源文件与目标文件的mtimesize是否发生变化,去决定是否进行同步。Rsync保证源有的文件,目标也有。

 

  1. Rsync的应用场景

  2. 用于两台服务器之间的文件备份。

  3. 全网备份

  4. 配合inotify或者sersync实现实时同步备份

 

  1. Rsync的工作方式

  2. 本地

rsync [OPTION...] SRC... [DEST]

 

  1. remote shell

Access via remote shell:

Pull: rsync [OPTION...] [[email protected]]HOST:SRC... [DEST]

例子rsync -r [email protected]:~  .        #192.168.5.142coosh家目录下的所有文件和目录同步到本地当前目录

 

Push: rsync [OPTION...] SRC... [[email protected]]HOST:DEST

例子rsync -r /test [email protected]:~     #将本地/test目录同步到192.168.5.142coosh家目录下

 

  1. 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

 

  1. 常用参数

参数

作用

-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模式运行

 

  1. daemon模式(--daemon)的配置

配置文件的位置是/etc/rsyncd.conf,默认是不存在的,需要手工创建。先来man一下配置文件的写法

 [[email protected] ~]# man rsyncd.conf

这个文件是daemon模式的配置文件,用于控制认证、访问、日志以及可用的模块。

如果需要使用chroot,则需用root来运行rsyncdaemon模式。

默认情况下,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,如果匹配则拒绝访问;如果allowdeny都不能匹配,也是允许访问的。

 

 


以上是关于Linux学习笔记:Rsync的主要内容,如果未能解决你的问题,请参考以下文章

2018-1-30 Linux学习笔记

2018-1-31 Linux学习笔记

Linux学习笔记第八周二次课(3月27日)

linux学习笔记-rsync+crond定时备份服务

Linux学习笔记第八周三次课(3月28日)

Linux学习笔记:Inotify