rsync同步数据
本文最后更新于 2343 天前,其中的信息可能已经有所发展或是发生改变。

一、rsync 命令格式

Local:  rsync [OPTION...] SRC... [DEST]

       Access via remote shell:
         Pull: rsync [OPTION...] [[email protected]]HOST:SRC... [DEST]
         Push: rsync [OPTION...] SRC... [[email protected]]HOST:DEST

       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

二、rsync常用选项

-a 归档模式,表示以递归方式传输文件,并保持所有属性,等同于-rlptgoD, -a选项后面可以跟一个 –no-OPTION 这个表示关闭-rlptgoD中的某一个例如-a–no-l 等同于-rptgoD
-r 对子目录以递归模式处理,主要是针对目录来说的,如果单独传一个文件不需要加-r,但是传输的是目录必须加-r选项
-v 打印一些信息出来,比如速率,文件数量等
-l 保留软链接
-L 向对待常规文件一样处理软链接,如果是SRC中有软链接文件,则加上该选项后将会把软链接指向的目标文件拷贝到DST
-p 保持文件权限
-o 保持文件属主信息
-g 保持文件属组信息
-D 保持设备文件信息
-t 保持文件时间信息
-z 压缩数据
--delete 删除那些dst中src没有的文件
--exclude=PATTERN 指定排除不需要传输的文件,等号后面跟文件名,可以是万用字符模式(如*.txt)
--progress 在同步的过程中可以看到同步的过程状态,比如统计要同步的文件数量、同步的文件传输速度等等
-u 加上这个选项后将会把dst中比src还新的文件排除掉,不会覆盖

三、rsync选项讲解

rsync -av   dir1/ dir2/   

其中dir2/目录可以不存在,记得同步目录时一定要在末尾加上/

-a 会把软连接原原本本的拷贝过去,那有时候我们想拷贝源文件怎么办?就时候就用到一个 -L

rsync -avL test1/ test2/ 

-u 选项的作用是,如果目标文件比源文件新,那么会忽略掉该文件

touch test2/1.txt
rsync -avu test1/ test2/
rsync -av --delete test1/ test2/   

这样会把test2/目录比test1/目录多出来的文件删除掉

rsync -a --exclude="2.txt" test1/ test2/  

在同步的过程中,会忽略掉2.txt这个文件

rsync -a --progress --exclude="*.txt" test1/ test2/ 

 
--progress 显示同步过程的详细信息 --exclude后面也可以使用通配符*

四、rsync应用实例 – ssh方式

rsync -avL test1/ [email protected]:/tmp/test2/
rsync -avL 192.168.0.101:/tmp/test2/ ./test3/

由于需要输入密码所以不适合写到脚本中,但可以通过创建秘钥对,让两台机器产生信任关系从而不用输入密码

如果ssh端口不是22,那么需要写成这样的形式:

rsync -av "--rsh=ssh -p port"  /dir1/ 192.168.0.101:/tmp/dir2/

五、rsync应用实例 – 后台服务方式

编辑rsyncd.conf文件

vim /etc/rsyncd.conf

内容如下:

port=873                          # 监听端口默认为873,也可以是别的端口
log file=/var/log/rsync.log       # 指定日志
pid file=/var/run/rsyncd.pid      # 指定pid
address=192.168.0.10              # 可以定义绑定的ip

以上部分为全局配置部分,以下为模块内的设置

[test]    # 为模块名自定义

path=/root/rsync       # 指定该模块对应在哪个目录下
use chroot=true        # 是否限定在该目录下,默认为true,当有软连接时,需要改为fasle
max connections=4      # 指定最大可以连接的客户端数
read only=no           # 是否为只读
list=true              # 是否可以列出模块名
uid=root               # 以哪个用户的身份来传输
gid=root               # 以哪个组的身份来传输
auth users=test        # 指定验证用户名,可以不设置
secrets file=/etc/rsyncd.passwd   # 指定密码文件,如果设定验证用户,这一项必须设置
hosts allow=192.168.0.101         # 设置可以允许访问的主机,可以是网段,多网段空格隔开,允许所有:0.0.0.0/
hosts deny=192.168.0.101          # 设置拒绝访问的主机,可以是网段

密码文件 /etc/rsyncd.passwd 的内容格式为:

username:password

如:

test:123456

权限一定得是 600 不然怎么也不会成功

chmod 600 /etc/rsyncd.passwd

启动服务的命令是:

rsync --daemon

rsync默认去使用 /etc/rsyncd.conf 这个配置文件

也可以指定配置文件:

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

可使用的选项有:

rsync --daemon --help

--password-file=FILE 客户端指定密码文件,只需要输入密码。

权限也一定得是 600

暂无评论

发送评论 编辑评论


|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇