7.18任务

 

10.28 rsync工具介绍

rsync对运维是一个非常重要的一个工具,类似于cp,但是与cp不一样。

假设我们有两个目录AB,我想实现把A目录的数据保存到B中,A目录是不断更新的。每个小时都拷贝一次,如果使用cp的话只能全部覆盖,这样的话浪费时间浪费磁盘。

rsync命令就可以实现增量的拷贝。这是本机下的拷贝。

rsync也可以实现不同机器下的远程同步。

[root@localhost: ~]# rsync -av /etc/passwd /tmp/1.txt
sending incremental file list
passwd

sent 1,667 bytes  received 35 bytes  3,404.00 bytes/sec
total size is 1,575  speedup is 0.93

远程也是可以的,格式与scp差不多

192.168.17.100:
[root@localhost: ~]# rsync -av /etc/passwd root@192.168.17.101:/tmp/lhy_passwd.txt
root@192.168.17.101's password: 
sending incremental file list
passwd

sent 1,667 bytes  received 35 bytes  378.22 bytes/sec
total size is 1,575  speedup is 0.93


192.168.17.101:
[root@localhost: ~]# ls /tmp/lhy_passwd.txt 
/tmp/lhy_passwd.txt

常用格式:

  1. rsync [OPTION] ... SRC   DEST
  2. rsync [OPTION] ... SRC   [user@]host:DEST //不写user默认当前用户,不管对方有没有,所以建议一定要写上。
  3. rsync [OPTION] ... [user@]host:SRC   DEST  //不写user默认当前用户,不管对方有没有,所以建议一定要写上。
  4. rsync [OPTION] ... SRC    [user@]host::DEST //两个冒号和单冒号是不一样的,我们后续介绍。
  5. rsync [OPTION] ... [user@]host::SRC   DEST

 10.29/30 rsync常用选项

rsync常用选项:

  • -a 包含-rtplgoD
  • -r 同步目录是要加上,递归
  • -v 同步时显示一些信息
  • -l 保留软链接
  • -L 同步软链接时,也会同步源文件
  • -p 保持文件的权限属性
  • -o 保持文件的属主
  • -g 保持文件的属组
  • -D 保持设配文件的信息(了解)
  • -t 保持文件的时间属性
  • --delete 删除DEST中SRC没有的文件
  • --exclude 过滤指定文件,不同步
  • -P 显示同步过程,比-v更详细
  • -u 更新,如果DEST中的文件比SRC新,则不同步
  • -z 传输时压缩

 下面为了演示上述选项,我们选择在本机上同步。

[root@localhost: ~]# ll
total 2448
-rw-------. 1 root root    1312 Jun 11 16:02 anaconda-ks.cfg
drwxr-xr-x. 2 root root      71 Jul 19 15:41 awk
-rw-r--r--  1 root root     771 Jul 17 12:30 ipt.txt
-rw-r--r--. 1 root root    3342 Jul 11 17:58 xxx
-rw-r--r--. 1 root root 2494444 Aug 11  2017 zsh-5.0.2-28.el7.x86_64.rpm
[root@localhost: ~]# ll awk/
total 8
-rw-r--r--. 1 root root 1413 Jul  6 19:51 passwd
-rw-r--r--. 1 root root   29 Jul  6 15:07 test.txt
lrwxrwxrwx  1 root root   30 Jul 19 15:41 zsh-5.0.2-28.el7.x86_64.rpm -> ../zsh-5.0.2-28.el7.x86_64.rpm
[root@localhost: ~]# rsync -av /root/awk/ /tmp/awk_dest/
sending incremental file list
created directory /tmp/awk_dest
./
passwd
test.txt
zsh-5.0.2-28.el7.x86_64.rpm -> ../zsh-5.0.2-28.el7.x86_64.rpm

sent 1,703 bytes  received 96 bytes  3,598.00 bytes/sec
total size is 1,472  speedup is 0.82
[root@localhost: ~]# ll /tmp/awk_dest/
total 8
-rw-r--r-- 1 root root 1413 Jul  6 19:51 passwd
-rw-r--r-- 1 root root   29 Jul  6 15:07 test.txt
lrwxrwxrwx 1 root root   30 Jul 19 15:41 zsh-5.0.2-28.el7.x86_64.rpm -> ../zsh-5.0.2-28.el7.x86_64.rpm //失效,原因是软链接使用了相对路径

-av选项就是常用选项。

[root@localhost: ~]# rsync -avL /root/awk/ /tmp/awk_dest/
sending incremental file list
zsh-5.0.2-28.el7.x86_64.rpm

sent 2,495,219 bytes  received 35 bytes  4,990,508.00 bytes/sec
total size is 2,495,886  speedup is 1.00
[root@localhost: ~]# ll /tmp/awk_dest/
total 2444
-rw-r--r-- 1 root root    1413 Jul  6 19:51 passwd
-rw-r--r-- 1 root root      29 Jul  6 15:07 test.txt
-rw-r--r-- 1 root root 2494444 Aug 11  2017 zsh-5.0.2-28.el7.x86_64.rpm

L选项会覆盖掉l选项,这时候同步过去的就不是软链接了,而是真正的文件。

--delete删除目标目录下的源文件不存在的文件或目录。

[root@localhost: ~]# touch /tmp/awk_dest/new.txt
[root@localhost: ~]# rsync -avL /root/awk/ /tmp/awk_dest/
sending incremental file list
./

sent 131 bytes  received 19 bytes  300.00 bytes/sec
total size is 2,495,886  speedup is 16,639.24
[root@localhost: ~]# ll /tmp/awk_dest/
total 2444
-rw-r--r-- 1 root root       0 Jul 19 15:47 new.txt
-rw-r--r-- 1 root root    1413 Jul  6 19:51 passwd
-rw-r--r-- 1 root root      29 Jul  6 15:07 test.txt
-rw-r--r-- 1 root root 2494444 Aug 11  2017 zsh-5.0.2-28.el7.x86_64.rpm
[root@localhost: ~]# rsync -avL --delete /root/awk/ /tmp/awk_dest/
sending incremental file list
deleting new.txt

sent 124 bytes  received 23 bytes  294.00 bytes/sec
total size is 2,495,886  speedup is 16,978.82
[root@localhost: ~]# ll /tmp/awk_dest/
total 2444
-rw-r--r-- 1 root root    1413 Jul  6 19:51 passwd
-rw-r--r-- 1 root root      29 Jul  6 15:07 test.txt
-rw-r--r-- 1 root root 2494444 Aug 11  2017 zsh-5.0.2-28.el7.x86_64.rpm

--exclude过滤,支持多个,支持通配,不支持连写

[root@localhost: ~]# rm -fr /tmp/awk_dest/*
[root@localhost: ~]# rsync -avL --exclude "*.txt" /root/awk/ /tmp/awk_dest/
sending incremental file list
./
passwd
zsh-5.0.2-28.el7.x86_64.rpm

sent 2,496,655 bytes  received 57 bytes  4,993,424.00 bytes/sec
total size is 2,495,857  speedup is 1.00        
[root@localhost: ~]# ll awk/
total 8
-rw-r--r--. 1 root root 1413 Jul  6 19:51 passwd
-rw-r--r--. 1 root root   29 Jul  6 15:07 test.txt
lrwxrwxrwx  1 root root   30 Jul 19 15:41 zsh-5.0.2-28.el7.x86_64.rpm -> ../zsh-5.0.2-28.el7.x86_64.rpm
[root@localhost: ~]# ll /tmp/awk_dest/
total 2440
-rw-r--r-- 1 root root    1413 Jul  6 19:51 passwd
-rw-r--r-- 1 root root 2494444 Aug 11  2017 zsh-5.0.2-28.el7.x86_64.rpm

-P显示百分比,显示传输速度。

[root@localhost: ~]# !rm
rm -fr /tmp/awk_dest/*
[root@localhost: ~]# rsync -avP /root/awk/ /tmp/awk_dest/
sending incremental file list
./
passwd
          1,413 100%    0.00kB/s    0:00:00 (xfr#1, to-chk=2/4)
test.txt
             29 100%   28.32kB/s    0:00:00 (xfr#2, to-chk=1/4)
zsh-5.0.2-28.el7.x86_64.rpm -> ../zsh-5.0.2-28.el7.x86_64.rpm

sent 1,703 bytes  received 60 bytes  3,526.00 bytes/sec
total size is 1,472  speedup is 0.83

-u选项,检查mtime

[root@localhost: ~]# cat awk/test.txt 
1 2
qa     vv
aaa
s+dg   sgh
[root@localhost: ~]# echo "sag" > /tmp/awk_dest/test.txt 
[root@localhost: ~]# cat !$
cat /tmp/awk_dest/test.txt
sag
[root@localhost: ~]# rsync -avP /root/awk/ /tmp/awk_dest/
sending incremental file list
test.txt
             29 100%    0.00kB/s    0:00:00 (xfr#1, to-chk=1/4)

sent 241 bytes  received 35 bytes  552.00 bytes/sec
total size is 1,472  speedup is 5.33
[root@localhost: ~]# cat /tmp/awk_dest/test.txt
1 2
qa     vv
aaa
s+dg   sgh
[root@localhost: ~]# echo "sag" > /tmp/awk_dest/test.txt 
[root@localhost: ~]# rsync -avu /root/awk/ /tmp/awk_dest/
sending incremental file list

sent 165 bytes  received 12 bytes  354.00 bytes/sec
total size is 1,472  speedup is 8.32
[root@localhost: ~]# cat /tmp/awk_dest/test.txt
sag

-z传输时压缩,小文件没有什么明显效果。

10.31 rsync通过ssh同步

之前已经提过,从A机器同步到B机器,就是使用的ssh的方式同步的。

​
192.168.17.100:
[root@localhost: ~]# rsync -av /etc/passwd root@192.168.17.101:/tmp/lhy_passwd.txt
root@192.168.17.101's password: 
sending incremental file list
passwd

sent 1,667 bytes  received 35 bytes  378.22 bytes/sec
total size is 1,575  speedup is 0.93


192.168.17.101:
[root@localhost: ~]# ls /tmp/lhy_passwd.txt 
/tmp/lhy_passwd.txt

​

要求两边的机器都要有rsync工具。

如果对方的端口并不是22,可以使用-e选项,

[root@localhost: ~]# rsync -avP -e "ssh -p 1122" /etc/passwd 192.168.17.101:/tmp/awk_dest/

 

 

转载于:https://my.oschina.net/u/3866688/blog/1859541

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值