前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >rsync 工具详解

rsync 工具详解

作者头像
老七Linux
发布2018-05-09 15:46:39
8720
发布2018-05-09 15:46:39
举报
文章被收录于专栏:Laoqi's Linux运维专列
rsync工具 :

rsync 工具几乎在每天的工作当中都会用到,是日常工作的必备工具之一。我们必须要对 此工具了如指掌!

(1)本地–>本地备份 (2)本地–>网络备份 (3)网络备份–>本地

假设有个需求,有个A目录里面的一直不停的被写些日志或者数据,但是我们需要同步到B目录,每隔一小时就要同步一下。假如一个小时就更新了一个小文件,使用cp就会从头到尾的复制一次,这样会浪费很多资源和时间。

#rsync 就可以实验增量拷贝。
rsync格式:
代码语言:javascript
复制
rsync [OPTION] … SRC   DEST  
rsync [OPTION] … SRC   [[email protected]]host:DEST
rsync [OPTION] … [[email protected]]host:SRC   DEST
rsync [OPTION] … SRC   [[email protected]]host::DEST
rsync [OPTION] … [[email protected]]host::SRC   DEST
代码语言:javascript
复制
##### #rsync -av /etc/passwd /tmp/12.txt      
// -a:包含了多个选项;-v:可视化
代码语言:javascript
复制
##### #rsync -av /etc/passwd [email protected]192.168.30.158:/tmp/123.txt
//备份本地目录/etc/passwd 到远程电脑的/tmp/123.txt

rsync常用选项 :

-a 包含-rtplgoD -r 同步目录时要加上,类似cp时的-r选项 -v 同步时显示一些信息,让我们知道同步的过程 在写脚本的时候千万不要添加-v -l 保留软连接 -L 加上该选项后,同步软链接时会把源文件给同步 -p 保持文件的权限属性 -o 保持文件的属主 -g 保持文件的属组 -D 保持设备文件信息 -t 保持文件的时间属性 –delte 删除DEST中SRC没有的文件 –exclude 过滤指定文件,如–exclude “logs”会把文件名包含logs的文件或者目录过滤掉,不同步 -P 显示同步过程,比如速率,比-v更加详细 在写脚本的时候千万不要添加-P -u 加上该选项后,如果DEST中的文件比SRC新,则不同步 -z 传输时压缩


rsync实例 :
小插曲:在使用时报错如下:
代码语言:javascript
复制
[[email protected] sbin]# rsync -avP /tmp/data/ [email protected]:/tmp/databak/
rsync: Failed to exec ssh: No such file or directory (2)
rsync error: error in IPC code (code 14) at pipe.c(84) [sender=3.0.9]
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in IPC code (code 14) at io.c(605) [sender=3.0.9]
解放方案:Solution
代码语言:javascript
复制
[root@zhdy-01 sbin]# yum -y install openssh-clients

代码语言:javascript
复制
[[email protected]01 ~]# rsync -avL /root/111/ /tmp/111_dest
sending incremental file list
created directory /tmp/111_dest
./
12.txt.bak
123.tar.gz
22.txt.bak
322.ipt
wqe/
wqe/asd/

sent 1105042 bytes  received 99 bytes  2210282.00 bytes/sec
total size is 1104583  speedup is 1.00

软连接所指向的源文件一起拷贝过去。

例如,假如我们在目标目录内增加了些文件,但是我们不希望这些增加的文件存在,需要保持源目录的文件和目标目录保持一致:

代码语言:javascript
复制
[[email protected]01 ~]# touch /tmp/111_dest/asd.txt
[[email protected]01 ~]# rsync -avL --delete /root/111/ /tmp/111_dest/
sending incremental file list
./
deleting asd.txt        

sent 149 bytes  received 17 bytes  332.00 bytes/sec
total size is 1104583  speedup is 6654.11

例如:我们需要在同步的时候不同步.bak的文件:

代码语言:javascript
复制
[root@zhdy-01 ~]# rm -rf /tmp/111_dest/*
[root@zhdy-01 ~]# ls !$
ls /tmp/111_dest/*
ls: 无法访问/tmp/111_dest/*: 没有那个文件或目录
[root@zhdy-01 ~]# ls /root/111/
123.tar.gz  12.txt.bak  22.txt.bak  322.ipt  wqe
[root@zhdy-01 ~]# rsync -avL --exclude "*.bak" /root/111/ /tmp/111_dest/
sending incremental file list
./
123.tar.gz
322.ipt
wqe/
wqe/asd/

sent 247603 bytes  received 61 bytes  495328.00 bytes/sec
total size is 247363  speedup is 1.00

我们也可以同时制定多个 –exclude

代码语言:javascript
复制
[[email protected]01 111]# ls
123.tar.gz  123.txt  12.txt.bak  213sa.txt  22.txt.bak  322.ipt  asd.txt  wqe
[[email protected]01 111]# rsync -avL --exclude "*.txt" --exclude "322*" /root/111/ /tmp/111_dest/
sending incremental file list
./
12.txt.bak
123.tar.gz
22.txt.bak
wqe/
wqe/asd/

sent 1101166 bytes  received 80 bytes  2202492.00 bytes/sec
total size is 1100780  speedup is 1.00

同时过滤以.txt结尾的,顺便以322开头的,不需要同步。
代码语言:javascript
复制
[[email protected]01 111]# rsync -avP /root/111/ /tmp/111_dest
sending incremental file list
./
12.txt.bak
         552 100%    0.00kB/s    0:00:00 (xfer#1, to-check=8/10)
123.tar.gz
      243560 100%  232.28MB/s    0:00:00 (xfer#2, to-check=7/10)
123.txt
           0 100%    0.00kB/s    0:00:00 (xfer#3, to-check=6/10)
213sa.txt
           0 100%    0.00kB/s    0:00:00 (xfer#4, to-check=5/10)
22.txt.bak
      856668 100%   81.70MB/s    0:00:00 (xfer#5, to-check=4/10)
322.ipt
        3803 100%  371.39kB/s    0:00:00 (xfer#6, to-check=3/10)
asd.txt
           0 100%    0.00kB/s    0:00:00 (xfer#7, to-check=2/10)
wqe/
wqe/asd/

sent 1105209 bytes  received 156 bytes  2210730.00 bytes/sec
total size is 1104583  speedup is 1.00

这就是加上-P 的作用。更加直观的去展现传输的速度(大文件更能直观的看出来!)

还有这样一个情况,加入咱们在目标目录中创建一个文件,并写了一些东西,但是我希望在同步的时候不覆盖目标目录内的文件内容:

代码语言:javascript
复制
[[email protected]01 111_dest]# ls
123.tar.gz  123.txt  12.txt.bak  213sa.txt  22.txt.bak  322.ipt  asd.txt  wqe
[[email protected]01 111_dest]# vim asd.txt 
[[email protected]01 111_dest]# cat asd.txt 
sdasdasdad
asdasdasdas
ddsasdsad
sadsadasd
[[email protected]01 111_dest]# rsync -avPu /root/111/ /tmp/111_dest
sending incremental file list
./

sent 199 bytes  received 17 bytes  432.00 bytes/sec
total size is 1104583  speedup is 5113.81
[[email protected]01 111_dest]# cat asd.txt 
sdasdasdad
asdasdasdas
ddsasdsad
sadsadasd

rsync的ssh同步: :

ssh备份本地的文件+目录到远程主机(这里我没有输入密码是因为之前已经做了密钥认证,一般情况还是需要输入密码的。)

代码语言:javascript
复制
[[email protected]01 ~]# rsync -avP /etc/passwd [email protected]192.168.96.130:/tmp/11.txt
sending incremental file list
passwd
        1197 100%    0.00kB/s    0:00:00 (xfer#1, to-check=0/1)

sent 1271 bytes  received 31 bytes  2604.00 bytes/sec
total size is 1197  speedup is 0.92

当然我们也可以从远程服务器下载一个文件或目录到本地。

代码语言:javascript
复制
[root@zhdy-01 ~]# rsync -avP [email protected]:/tmp/11.txt /tmp/22.txt
receiving incremental file list
11.txt
        1197 100%    1.14MB/s    0:00:00 (xfer#1, to-check=0/1)

sent 30 bytes  received 1276 bytes  2612.00 bytes/sec
total size is 1197  speedup is 0.92
[root@zhdy-01 ~]# cat !$
cat /tmp/22.txt
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

有时候为了安全我们一般都会修改ssh默认端口 22 到假如是 777:

代码语言:javascript
复制
[[email protected]01 ~]# rsync -avP  -e "ssh -p 777" [email protected]192.168.96.130:/tmp/11.txt /tmp/22.txt
receiving incremental file list
11.txt
        1197 100%    1.14MB/s    0:00:00 (xfer#1, to-check=0/1)

sent 30 bytes  received 1276 bytes  2612.00 bytes/sec
total size is 1197  speedup is 0.92
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016/07/19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • rsync工具 :
    • #rsync 就可以实验增量拷贝。
      • rsync格式:
      • rsync常用选项 :
      • rsync实例 :
        • 小插曲:在使用时报错如下:
          • 解放方案:Solution
          • rsync的ssh同步: :
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档