第1章 rsync 命令简介

rsync 是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据镜像同步备份的优秀工具。

1.1.1 语法格式

三种模式:

1)本地模式

rsync [选项] [源文件] [目标文件]

2)通过远程shell访问模式:

拉取(pull) :

rsync  [选项]  用户@主机:源文件 [目标文件]

推送(push) :

rsync [选项]  [源文件]  用户@主机:源文件

3)rsync 守护进程模式

拉取 :

rsync  [选项]  用户@主机::源文件 [目标文件]

rsync  [选项]  rsync://用户@主机:端口/源文件 [目标文件]

推送 :

rsync [选项]  [源文件]  用户@主机:源文件

rsync [选项]  [源文件]  rsync://用户@主机:端口/源文件 [目标文件]

1.1.2 选项说明

-v

详细模式输出

-z

传输时进行压缩以提高传输效率

-a

以递归方式传输文件,并保持所有文件的属性

-r

对子目录以递归模式,即目录下的所有目录都以同样的模式传输,注意是小写的r

-P

显示同步的过程及传输时的进度等信息

-e

使用信道协议,指定替代rsh的shell程序,例如ssh

-n

测试选项,模拟执行

--exclued

指定排除不需要传输的文件模式(和tar参数一样)

--delete

是目标目录内容和源文件保持一致,删除不同的文件

--bwlimit=KBPS

限制传输速度

1.1.3 范例

  • 源地址带与不带(/)的区别

带(/)

[root@centos6 tmp]# rsync -av ex./  /server/file/

[root@centos6 file]# ll

total 20

drwxr-xr-x 8 root root 4096 Jun  2 22:12 1ex

drwxr-xr-x 8 root root 4096 Jun  2 22:30 2ex

drwxr-xr-x 8 root root 4096 Jun  2 21:56 3ex

不带(/)

[root@centos6 tmp]# rsync -av ex.  /server/file/

[root@centos6 file]# ll

total 4

drwxr-xr-x 7 root root 4096 Jun  2 21:52 ex.

注释 源文件后面带(/)表示复制源目录下面的文件 不带(/) 表示 复制此目录

  • 拉取推送文件及目录

[root@centos6 tmp]# rsync -av root@10.0.0.41:/tmp/hosts /tmp

root@10.0.0.41's password:

receiving incremental file list

hosts

sent 30 bytes  received 430 bytes  102.22 bytes/sec

total size is 352  speedup is 0.77

[root@centos6 tmp]# ll          检查10.0.0.200

total 16

-rw-r--r--  1 root root  352 Jun  2 00:19 hosts

  • 推送文件及目录

[root@centos6 tmp]# rsync -av /tmp/hosts  root@10.0.0.41:/tmp/

root@10.0.0.41's password:

sending incremental file list

hosts

sent 425 bytes  received 31 bytes  130.29 bytes/sec

total size is 352  speedup is 0.77

[root@backup tmp]# ll           检查10.0.0.41

total 4

-rw-r--r--  1 root root 352 Jun  2 00:19 hosts

注 rsync 复制时 重复执行复制直至目录下文件相同就不在复制了

  • 利用ssh隧道模式(-e) 拉取推送文件及目录

[root@centos6 tmp]# rsync -av -e 'ssh -p 22' /tmp/hosts root@10.0.0.41:/tmp/

root@10.0.0.41's password:

sending incremental file list

hosts

sent 425 bytes  received 31 bytes  101.33 bytes/sec

total size is 352  speedup is 0.77

[root@backup tmp]# ll           检查10.0.0.41

total 4

-rw-r--r--  1 root root 352 Jun  2 00:19 hosts

注 前面范例使用rsync同步数据都是明文传输,在要求保障数据安全的场景下,可以使用-e 选项借助SSH隧道进行加密传输数据,-p是ssh命令的选项,指定ssh传输的端口号为22.

1.1.4 经验技巧

1)生产场景常用选项-avz,如果在脚本中-v也可以省略

2)关于-z压缩选项的使用建议,如果为内网环境,且没有其他业务占用宽带,可以不用-z选项。不压缩传输,几乎可以满宽带传输(千M网络),压缩传输则网络发送速度就会骤降,压缩的速率赶不上传输的速率

3)选项-n是一个提高安全性的选项,它可以结合-v选项输出模拟的传输过程,如果没有错误,则可以去除-n,传输真正的文件

1.2 rsync守护进程模式

1.2.1 配置服务端

1) 创建配置文件

vim  /etc/rsyncd.conf

rsyncd.conf具体说明:

# rsync_config

#####rsyncd.conf start#####

# 设置rsync守护进程模式保存进程号的文件的位置及名字

pid file = /var/run/rsyncd.pid

# 设置锁文件的位置及名字

lock file = /var/run/rsync.lock

# 设置日志文件的位置及名字,可以通过log format参数设置日志格式

log file = /var/log/rsyncd.log

# 设置进行数据传输时所使用的linux系统的用户或UID号

uid = rsync

# 设置进行数据传输时所使用的linux系统的用户组或GID号

gid = rsync

# 这是一个与安全有关的参数。如果设置use chroot = yes,rsync会首先进行chroot设置,

# 将根映射到path参数路径下,对客户端而言,系统的根就是path参数所指定的路径,但这样做需要root权限,

# 并且在同步符号连接资料时仅会同步名称,而内容将不会同步。

use chroot = no

# 设置并发连接数,0代表无限制。超出并发数后,如果依然有客户端连接请求,则将会接收到稍后重试的提示消息。

max connections = 200

# 超时时间

timeout = 300

# 忽略一些I/O错误

ignore errors

# 是否允许客户端传输数据到服务端,设置为yes表示客户端不可写,也就是只读。

read only = false

# 客户端请求显示模块列表时,是否予以显示。设置为true为显示,设置为false为不显示。

list = false

# 设置允许哪些主机可以同步数据,可以是单个IP,也可以是网段,多个IP和网段之间使用空格分隔。

hosts allow = 172.16.1.0/24

# 设置出hosts allow里面设置的主机以外,要拒绝的IP或网段信息。

hosts deny = 0.0.0.0/32

# 设置允许连接服务端的rsync服务的虚拟用户,此用户与linux系统中的用户没有关系。

auth users = rsync_backup

# 设置秘钥认证文件,此文件要求全县为制度,建议设为600。

secrets file = /etc/rsync.password

# 模块名称,rsync守护进程模式通过模块定义同步的目录,模块以[name]的形式定义。

[backup_test]

# 注释说明,非必须项。

comment = "backup dir by ms"

# 同步目录的真实路径

path = /backup

#####rsyncd.conf end#####

2)根据配置文件创建用户

创建进行数据传输时所使用的linux系统用户

命令:

useradd rsync -s /sbin/nologin -M

检查:

id rsync

3)创建认证密钥文件

配置文件中指定的认证密钥文件默认是不存在的,需要创建出来。

命令:

echo "rsync_backup:oldboyedu" > /etc/rsync.password

检查:

cat /etc/rsync.password

4)设置密钥文件的权限

涉及到密码信息的文件,都应该格外注意安全性,所以尽量将密钥文件的权限将至最低,将安全性提到最高。

rsync的密钥文件只需要root用户自己能够读写即可,所以权限设置为600即可。

命令:

chmod 600 /etc/rsync.password

检查:

ls -l /etc/rsync.password

5)创建本地同步目录

本地同步目录一定要确保存在,不存在的话务必要事先创建,否则在应用时会出错。

命令:

mkdir -p /backup

检查:

ls -ld /backup/

6)设置本地同步目录的属主和属组

由于在配置文件中设定了uid和gid的信息,所以需要将本地同步目录属主和属组为相应的用户。

命令:

chown -R rsync.rsync /backup

检查:

ls -ld /backup/

7)启动rsync服务

命令:

rsync --daemon

8)检查rsync服务是否正常启动

命令:

ps -ef | grep rsync | grep -v grep

netstat -nltup | grep rsync

lsof -i :873

9)设置rsync开机自动启动

想要让rsync服务开机自动启动,可以将其添加至/etc/rc.local文件内。其中/etc/rc.local文件是/etc/rc.d/rc/local文件的软链接。

命令:

echo '# start rsync server when this machine opened.' >> /etc/rc.local

echo '/usr/bin/rsync --daemon' >> /etc/rc.local

10)停止rsync服务(在需要的时候使用,一般修改了服务的配置文件后会需要重启服务)

可以使用killall或者pkill命令杀掉rsync服务,也可以查到端口号交给kill命令去直接杀掉。

命令:

killall rsync

pkill rsync

kill `cat /var/run/rsyncd.pid`

ps aux |grep rsync |grep -v grep |awk '{print $2}' |xargs kill -9 && rm -f /var/run/rsyncd.pid

1.2.2 客户端配置

客户端也需要安装rsync软件,但不需要编写rsync服务的配置文件rsyncd.conf,也不需要启动rsync服务。

不过,客户端也需要设置认证密钥文件,并且对其进行权限控制。

(1)服务器环境检查

与服务端一样,也应该先进行检查,再上手操作。

所以客户端的第一步也是先检查服务器上是否已经安装了rsync软件。

命令:

rpm -qa rsync

rpm -qa | grep rsync

(2)安装rsync软件(此步视上一步的结果来确定是否需要操作)

如果检查结果是服务器上没有安装rsync软件,那么需要安装一下,一般rsync软件在装机时就已安装好了。

命令:

yum install -y rsync

(3)创建认证密钥文件

此处需要注意,与服务端不同的地方在于,客户端的密钥文件里面只需要存放rsyncd.conf中auth users参数设定的用户的密码,不需要将用户也一并存放进去。

也就是说,如果客户端的密钥文件里面也写成 user:password的形式,反倒是错误的写法,在应用rsync的守护进程模式传输数据时,会导致传输失败。

命令:

echo 'oldboyedu' > /etc/rsync.password

检查:

cat /etc/rsync.password

(4)设置密码文件的权限

涉及到密码信息的文件,都应该格外注意安全性,所以尽量将密钥文件的权限将至最低,将安全性提到最高。rsync的密钥文件只需要用户自己能够读写即可,所以权限设置为600即可。

命令:

chmod 600 /etc/rsync.password

检查:

ls -l /etc/rsync.password

(5)一些说明

a.客户端的/etc/rsync.password里只放密码,不放用户;

b.客户端的/etc/rsync.password里的密码必须与服务端要使用rsync命令的用户的/etc/rsync.password里的密码一致;

c.客户端的/etc/rsync.password文件和服务端的/etc/rsync.password文件没有任何关系,既客户端存放密码的文件名称不需要与服务端存放密码的文件名称相同,只要和客户端rsync命令接的参数--password-file=/etc/rsync.password一致即可。

d.为安全起见,需要对密码文件授权600。

(6)在客户端采用免交互的方式推送数据到服务端

在客户端采用常规方式(也就是非免交互的方式)推送到服务端的命令格式如下:

rsync -avzP /etc/hosts rsync_backup@172.16.1.41::backup_test

在客户端采用免交互的方式推送到服务端的命令格式如下:

rsync -avzP /etc rsync_backup@172.16.1.41::backup_test --password-file=/etc/rsync.password

rsync 参数说明及使用参数笔记的更多相关文章

  1. rsync 参数说明及使用参数笔记好文摘抄

    一.前言 最近发现rsync挺好用的--不过参数有点多,所以这儿写一篇给自己以后要用的时候做个参考. 二.参数说明 这儿全是我翻资料连蒙带猜(有些实在是不好解释)翻译出来的,请各位转载的留个名啊,虽然 ...

  2. Monkey相关参数 笔记

    Monkey相关参数  笔记 Monkey是Android系统自带的一个命令行工具,可运行在模拟器里或实际设备中. Monkey可以向被测试的应用程序发送伪随机的用户事件流(如按键.触屏.手势等),实 ...

  3. rsync的介绍及参数详解,配置步骤,工作模式介绍

    rsync的介绍及参数详解,配置步骤,工作模式介绍 rsync是类unix系统下的数据镜像备份工具.它是快速增量备份.全量备份工具. Sync可以远程同步,支持本地复制,或者与其他SSH.rsync主 ...

  4. Rsync 服务部署与参数详解

    Rsync 简介 rsync 是一款开源的.快速的.多功能的.可实现全量及增量的本地或远程数据同步备份的优秀工具.Rsync软件适用于unix/linux/windows等多种操作系统平台. 传统的 ...

  5. rsync参数说明

    参数说明: log file = /var/log/rsyncd.log   #日志文件位置,启动rsync后自动产生这个文件,无需提前创建 pidfile = /var/run/rsyncd.pid ...

  6. MVC OF UEditor 图片上传- 额外参数 笔记

    最近正巧需要用到UEditor ,因为需求,.需要把上传的图片数据上传到阿里云的OSS与记录图片相关信息到MS SQL中 . 不得已只能翻UEditor的实现代码>_<痛苦. 备忘笔记: ...

  7. rsync 的使用和参数解释

    备份往往可以为我们提供一种恢复的策略,因此在实际的生产应用中我们需要对系统的各个配置以及数据进行备份.然而普通的备份都是在本地磁盘或者相应的设备上进行,其实这样也存在一种缺陷,就是设备也出现问题怎么办 ...

  8. 项目中Zookeeper配置参数笔记

    ZooKeeper是以Fast Paxos算法为基础的,Paxos 算法存在活锁的问题,即当有多个proposer交错提交时,有可能互相排斥导致没有一个proposer能提交成功,而Fast Paxo ...

  9. C#图解教程-方法参数笔记(上)

    一晃大学四年要过去了,期间乱点了很多技能点, 导致每一项技能都只是处于入门阶段.为了将C#作为我的主要技能,准备恶补相关姿势(知识),通过各种技术论坛的推荐,找到了<C#图解教程>这本书. ...

随机推荐

  1. 如何在所有的mon的损坏情况下将数据恢复如初

    本篇主题 在mon无法启动,或者所有的mon的数据盘都损坏的情况下,如何把所有的数据恢复如初 写本章的缘由 在ceph中国的群里有看到一个技术人员有提到,在一次意外机房掉电后,三台mon的系统盘同时损 ...

  2. 面试腾讯,字节跳动首先要掌握的Java多线程,一次帮你全掌握!

    一.程序,进程,线程联系和区别 其实程序是一段静态的代码,它是应用程序执行的脚本.进程就是程序动态的执行过程,它具有动态性,并发性,独立性.线程是进程调度和执行的单位. 进程:每个进程都有独立的代码和 ...

  3. 在FL Studio编曲软件中查找采样的音高

    相信玩音乐的小伙伴们都遇到过这种情况,在用FL Studio编曲时,想添加一段音频采样,由于采样的调式与我们正在编曲的调式不同,音频之间的衔接就是一个非常头疼的问题,要解决采样的调式,我们就得先确认这 ...

  4. Sonar检测Math.abs(new Random().nextInt()) “Use the original value instead”

    今天早上旁边同事喊我看一个Sonar检测出的问题: 当时看了好几眼没觉得这个有太大问题,于是又看了下Sonar建议: 这是说Math.abs()方法使用在数字上面可能返回最小值,觉得这个挺有意思的,于 ...

  5. kafka 消息存储分析

    kafka 可以支持海量数据发送,轻轻松松QPS过十万,如果JVM内存存储这一块如果不够优秀,根本无法支持这么庞大的QPS. 存储架构(这里这是落地数据,并木有涉及到序列化发送数据到broker) R ...

  6. 蓝桥杯-RP大冒险-未解决

    RP大冒险 问题描述 请尽情使用各种各样的函数来测试你的RP吧~~~ 输入格式 一个数N表示测点编号. 输出格式 一个0~9的数. 样例输入 0 样例输出 X {当且仅当输出仅有一个数X且X为0~9的 ...

  7. Spring beanDefinition载入

    @Override public void refresh() throws BeansException, IllegalStateException { synchronized (this.st ...

  8. @Async失效之谜

    @Async如何使用 异步的方法上加上@Async异步注解 启动类中需要加上@EnableAsync才有效 使用时类似于下列函数: new Thread(()-> System.out.prin ...

  9. 【鸿蒙开发板试用报告】用OLED板实现FlappyBird小游戏(中)

    小伙伴们久等了,在上一篇<[开发板试用报告]用OLED板实现FlappyBird小游戏(上)>中,我们本着拿来主义的原则,成功的让小鸟在OLED屏幕上自由飞翔起来,下面我们将加入按钮交互功 ...

  10. LaTeX中的插图

    插图代码及注释: 显示效果: 更多命令可以看相关文档,通过在命令行终端输入 texdoc graphicx 命令打开文档.