第十章、日常运维(补)

10.28 rsync工具介绍

10.29/10.30 rsync常用选项

10.31 rsync通过ssh同步

10.32/10.33 rsync通过服务同步

10.34 linux系统日志

10.35 screen工具

10.36  xargs用法详解

 

 

10.28 rsync工具介绍(rsync要掌握)

Linux文件同步工具-rsync

Rsync命令是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。rsync使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,同时可以对上传部分先进行压缩,因此rsync效率很高。rsync可以复制显示目录属性及文件,而且可以选择性地压缩及递归复制。但是rsync每次执行rsync命令都会遍历目标目录,如果文件数达到了一定规模,每次遍历就会消耗很多资源。

Rsync 可以搭配 rsh 或 ssh 甚至使用 daemon 模式。 Rsync server 会打开一个 873 的服务通道 (port) ,等待对方 Rsync 连接。连接时, Rsync server 会检查口令是否相符,若通过口令查核,则可以开始进行文件传输。第一次连通完成时,会把整份文件传输一次,下一次就只传送二个文件之间不同的部份。

Rsync 支持大多数的类 Unix 系统,无论是 Linux 、 Solaris 还是 BSD 上都经过了良好的测试。此外,它在 windows 平台下也有相应的版本,比较知名的有 cwRsync 和 Sync2NAS 。

Rsync 的基本特点如下:

1.可以镜像保存整个目录树和文件系统;

2.可以很容易做到保持原来文件的权限、时间、软硬链接等;

3.无须特殊权限即可安装;

4.优化的流程,文件传输效率高;

5.可以使用 rcp 、 ssh 等方式来传输文件,当然也可以通过直接的 socket 连接;

6.支持匿名传输。

核心算法介绍:

假定在名为α和β的两台计算机之间同步相似的文件 A 与 B ,其中α对文件 A 拥有访问权,β对文件 B 拥有访问权。并且假定主机α与β之间的网络带宽很小。那么 rsync 算法将通过下面的五个步骤来完成:

1.β将文件 B 分割成一组不重叠的固定大小为 S 字节的数据块。最后一块可能会比 S 小。

2.β对每一个分割好的数据块执行两种校验:一种是 32 位的滚动弱校验,另一种是 128 位的 MD4 强校验。

3.β将这些校验结果发给α。

4.α通过搜索文件 A 的所有大小为 S 的数据块 ( 偏移量可以任选,不一定非要是 S 的倍数 ) ,来寻找与文件 B 的某一块有着相同的弱校验码和强校验码的数据块。这项工作可以借助滚动校验的特性很快完成。

5.α发给β一串指令来生成文件 A 在β上的备份。这里的每一条指令要么是对文件 B 经拥有某一个数据块而不须重传的证明,要么是一个数据块,这个数据块肯定是没有与文件 B 的任何一个数据块匹配上的。

 

#rsync能传输文件,备份数据;实现本机到本机的传输,也能本机到远程的传输;

#rsync是增量备份

yum  install -y  rsync     #安装rsync命令

 

##假设现在有两个目录A、B,A目录内的数据是实时更新的;需求是每隔一小时将A目录数据拷贝到B目录

 可以使用rsync,因为rsync是增量备份,会备份A新增加或变更的数据到B,也能远程使用rsync

 

例:将/etc/passwd 拷贝到/tmp/1.txt文件

rsync -av /etc/passwd    /tmp/1.txt

[root@xinlinux-02 tmp]# rsync -av /etc/passwd  ./1.txt

sending incremental file list

passwd

 

sent 1,329 bytes  received 35 bytes  2,728.00 bytes/sec

total size is 1,237  speedup is 0.91

 

远程拷贝/etc/passwd到192.168.233.129的/tmp/1.txt

rsync -av /etc/passwd  root@192.168.233.129:/tmp/1.txt

然后会提示输入192.168.188.128的密码

[root@xinlinux-02 tmp]# rsync -av /etc/passwd  root@192.168.233.129:/tmp/1.txt

bash: rsync: 未找到命令

rsync: connection unexpectedly closed (0 bytes received so far) [sender]

rsync error: remote command not found (code 127) at io.c(226) [sender=3.1.2]

 

##原因是192.168.233.129没有安装rsync

[root@xinlinux-02 tmp]# rsync -av /etc/passwd  root@192.168.233.129:/tmp/1.txt

sending incremental file list

passwd

 

sent 1,329 bytes  received 35 bytes  909.33 bytes/sec

total size is 1,237  speedup is 0.91

 

 

rsync格式

rsync [OPTION] … SRC   DEST                    

 #本机拷贝

rsync [OPTION] … SRC   [user@]host:DEST    

 ##通过ssh的方式同步本机拷贝到远程机器

rsync [OPTION] … [user@]host:SRC   DEST

#通过ssh的方式将远程机器的文件拷贝到本机

rsync [OPTION] … SRC   [user@]host::DEST

#通过服务的方式同步本机拷贝到远程机器

rsync [OPTION] … [user@]host::SRC   DEST

#通过服务的方式同步将远程机器的文件拷贝到本机

#SRC是源目录/文件

#DEST是目标目录/文件

#user@可以不写,如果不写的话表示当前用户

 

 

10.29/10.30 rsync常用选项

rsync常用选项

  • -a 包含-rtplgoD选项

  • -r 同步目录时要加上,类似cp时的-r选项

  • -v 同步时显示一些信息,让我们知道同步的过程

  • -l 保留软连接

  • -L 加上该选项后,同步软链接时会把源文件给同步

  • -p 保持文件的权限属性

  • -o 保持文件的属主

  • -g 保持文件的属组

  • -D 保持设备文件信息

  • -t 保持文件的时间属性

  • --delete 删除DEST中SRC没有的文件

  • --exclude 过滤指定文件,如--exclude “logs”会把文件名包含logs的文件或者目录过滤掉,不同步

  • -P 显示同步过程,比如速率,比-v更加详细

  • -u 加上该选项后,如果DEST中的文件比SRC新,则不同步(文件的新旧指的是mtime的时间

  • -z 传输时压缩(传输前压缩,传输完后解压,节省传输过程带宽)

  • --port   指定端口号

 

本地同步例子

#-L,将root目录下111目录同步到tmp目录下的111_dest目录

rsync  -av    /root/111/    /tmp/111_dest/

[root@xinlinux-02 ~]# rsync  -av    /root/111/    /tmp/111_dest/

sending incremental file list

./

1.txt

test.txt -> /root/2.txt

 

sent 151 bytes  received 41 bytes  384.00 bytes/sec

total size is 11  speedup is 0.06

[root@xinlinux-02 ~]# rsync  -avL    /root/111/    /tmp/111_dest/

sending incremental file list

test.txt

 

sent 129 bytes  received 35 bytes  328.00 bytes/sec

total size is 0  speedup is 0.00

 

 

因为111目录里面有一个软链接,-a选项里面的小l只会同步软链接,并不会同步软链接的源文件,所以同步后的软链接指向的还是原来的源文件

[root@xinlinux-02 ~]# rsync  -av    /root/111/    /tmp/111_dest/

sending incremental file list

./

1.txt

test.txt -> /root/2.txt

 

sent 151 bytes  received 41 bytes  384.00 bytes/sec

total size is 11  speedup is 0.06

[root@xinlinux-02 ~]# ll /tmp/111_dest

总用量 0

-rw-r--r--. 1 root root  0 9月   2 09:12 1.txt

lrwxrwxrwx. 1 root root 11 9月   2 09:24 test.txt -> /root/2.txt

 

如果用了L,那a选项里面的小l的含义会被覆盖掉,同步软链接时会把源文件给同步,软链接文件被替换成了源文件

rsync  -avL    /root/111/    /tmp/111_dest/

[root@xinlinux-02 ~]# rsync  -avL    /root/111/    /tmp/111_dest/

sending incremental file list

test.txt

 

sent 129 bytes  received 35 bytes  328.00 bytes/sec

total size is 0  speedup is 0.00

[root@xinlinux-02 ~]# ll /tmp/111_dest

总用量 0

-rw-r--r--. 1 root root 0 9月   2 09:12 1.txt

-rw-r--r--. 1 root root 0 9月   2 09:24 test.txt

 

##--delete    将111_dest目录下111目录没有的目录或文件删除掉

[root@xinlinux-02 ~]# ls 111/

1.txt  test.txt

[root@xinlinux-02 ~]# ls /tmp/111_dest/

1.txt  5.txt  test.txt

[root@xinlinux-02 ~]#

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值