10.28 rsync工具介绍


rsync传输数据,备份到远程,类似于cp

rsync不仅可以实现A机器到B机器,也可以实现从本机A目录到B目录的数据传输


cp的话,如果是不断写入的文件,cp过去,覆盖文件,文件过大的话,既浪费时间,又占磁盘IO,此时使用rsync


rsync可以实现增量拷贝,只增加变更过的文件

2018-1-30 8周2次课 rsync_2次课_02


·拷贝文件:

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

sent 1053 bytes  received 31 bytes  2168.00 bytes/sec
total size is 979  speedup is 0.90


·远程去同步、拷贝:rsync -av 目录 用户名@ip:目录

[root@localhost ~]# rsync -av /etc/passwd root@192.168.133.130:/tmp/1.txt

2018-1-30 8周2次课 rsync_8周_04


rsync格式:

rsync [OPTION] … SRC   DEST

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

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

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

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

(两个 :即是目标也是源)





10.29 rsync常用选项(上)


rsync常用选项:

        -a 包含-rtplgoD

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

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

        -l 保留软连接

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

        -p 保持文件的权限属性

        -o 保持文件的属主

        -g 保持文件的属组

        -D 保持设备文件信息

        -t 保持文件的时间属性

        --delete 删除DEST中SRC没有的文件(使DEST和SRC目录完全一样,为了安全可以不加)

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

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

        -u 加上该选项后,如果DEST中的文件比SRC新,则不同步

        -z 传输时压缩





10.30 rsync常用选项(下)


·rsync常用:rsync -av = rsync -rtplgoDv

[root@localhost ~]# rsync -av /root/111/ /tmp/111_dest/
sending incremental file list
created directory /tmp/111_dest
./
1.txt
a.txt
b.txt
yum.log -> /tmp/yum.log
awk/
awk/1.txt
awk/10
awk/test.txt
sent 1907 bytes  received 136 bytes  4086.00 bytes/sec
total size is 1484  speedup is 0.73


·同步软链接时会把源文件给同步:rsync -L

[root@localhost ~]# ll 111/
总用量 8
-rw-r--r--. 1 root root   0 1月  25 21:56 1.txt
-rw-r--r--. 1 root root 426 1月  25 21:49 a.txt
drwxr-xr-x. 2 root root  45 1月  25 21:50 awk
-rw-r--r--. 1 root root 136 1月  25 21:49 b.txt
lrwxrwxrwx. 1 root root  12 1月  25 22:00 yum.log -> /tmp/yum.log
[root@localhost ~]# ll /tmp/111_dest/
总用量 8
-rw-r--r--. 1 root root   0 1月  25 21:56 1.txt
-rw-r--r--. 1 root root 426 1月  25 21:49 a.txt
drwxr-xr-x. 2 root root  45 1月  25 21:50 awk
-rw-r--r--. 1 root root 136 1月  25 21:49 b.txt
lrwxrwxrwx. 1 root root  12 1月  25 22:00 yum.log -> /tmp/yum.log
[root@localhost ~]# rsync -avL /root/aminglinux/ /tmp/111_dest/    ##加L选项会把 l 选项覆盖
sending incremental file list
yum.log

sent 190 bytes  received 32 bytes  444.00 bytes/sec
total size is 1472  speedup is 6.63
[root@localhost ~]# ll /tmp/111_dest/
总用量 8
-rw-r--r--. 1 root root   0 1月  25 21:56 1.txt
-rw-r--r--. 1 root root 426 1月  25 21:49 a.txt
drwxr-xr-x. 2 root root  45 1月  25 21:50 awk
-rw-r--r--. 1 root root 136 1月  25 21:49 b.txt
-rw-r--r--. 1 root root   0 1月  25 22:01 yum.log     ##软链接被替换成链接文件


给源文件增加一些内容,那么rsync后会把内容同步

[root@localhost ~]# echo "128yyuhaoiuhfliaud" > /tmp/yum.log
[root@localhost ~]# rsync -avL 111/ /tmp/111_dest/
sending incremental file list
yum.log

sent 213 bytes  received 32 bytes  490.00 bytes/sec
total size is 1491  speedup is 6.09
[root@localhost ~]# ll /tmp/111_dest/
总用量 12
-rw-r--r--. 1 root root   0 1月  25 21:56 1.txt
-rw-r--r--. 1 root root 426 1月  25 21:49 a.txt
drwxr-xr-x. 2 root root  45 1月  25 21:50 awk
-rw-r--r--. 1 root root 136 1月  25 21:49 b.txt
-rw-r--r--. 1 root root  19 1月  25 22:12 yum.log
[root@localhost ~]# cat !$
cat /tmp/111_dest/
cat: /tmp/111_dest/: 是一个目录
[root@localhost ~]# cat /tmp/111_dest/yum.log
128yyuhaoiuhfliaud


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

[root@localhost ~]# ls /tmp/111_dest/
1.txt  a.txt  awk  b.txt  yum.log
[root@localhost ~]# touch /tmp/111_dest/new.txt
[root@localhost ~]# rsync -avL --delete 111/ /tmp/111_dest/
sending incremental file list
./
deleting new.txt
sent 146 bytes  received 16 bytes  324.00 bytes/sec
total size is 1491  speedup is 9.20
[root@localhost ~]# ls /tmp/111_dest/
1.txt  a.txt  awk  b.txt  yum.log


·过滤指定文件:rsync --exclude

[root@localhost ~]# ls /tmp/111_dest/
1.txt  a.txt  awk  b.txt  yum.log
[root@localhost ~]# rm -rf /tmp/1
111_dest/ 1.txt
[root@localhost ~]# rm -rf /tmp/111_dest/*
[root@localhost ~]# ls /tmp/111_dest/
[root@localhost ~]# rsync -avL --exclude "*.txt" 111/ /tmp/111_dest/
sending incremental file list
./
yum.log
awk/
awk/10

sent 240 bytes  received 57 bytes  594.00 bytes/sec
total size is 67  speedup is 0.23
[root@localhost ~]# ls /tmp/111_dest/
awk  yum.log

(支持多个--exclude来过滤多种文件)



·显示同步过程(比如速率,比-v更加详细)rsync -P

[root@localhost ~]# rsync -avP 111/ /tmp/111_dest/
sending incremental file list
./
1.txt
0 100%    0.00kB/s    0:00:00 (xfer#1, to-check=7/9)
a.txt
426 100%    0.00kB/s    0:00:00 (xfer#2, to-check=6/9)
b.txt
136 100%  132.81kB/s    0:00:00 (xfer#3, to-check=5/9)
yum.log -> /tmp/yum.log
awk/
awk/1.txt
16 100%    7.81kB/s    0:00:00 (xfer#4, to-check=2/9)
awk/10
48 100%   23.44kB/s    0:00:00 (xfer#5, to-check=1/9)
awk/test.txt
846 100%  413.09kB/s    0:00:00 (xfer#6, to-check=0/9)

sent 1899 bytes  received 136 bytes  4070.00 bytes/sec
total size is 1484  speedup is 0.73


·让DEST中的文件比SRC新(新的不会被删除):rsync -u

[root@localhost ~]# cat 111/a.txt
[root@localhost ~]# echo "12l3rw8yrioauh" > /tmp/111_dest/a.txt
[root@localhost ~]# rsync -avu 111/ /tmp/111_dest/
sending incremental file list
./

sent 167 bytes  received 16 bytes  366.00 bytes/sec
total size is 1484  speedup is 8.11
[root@localhost ~]# cat /tmp/111_dest/a.txt
12l3rw8yrioauh


·传输时压缩:rsync -z

[root@localhost ~]# rsync -avPz 111/ /tmp/111_dest/
sending incremental file list

sent 164 bytes  received 13 bytes  354.00 bytes/sec
total size is 1484  speedup is 8.38

(没有什么明显效果,如果文件多时,可以节省带宽)





10.31 rsync通过ssh同步


环境:A机器IP:192.168.65.128,B机器IP:192.168.65.129,互相可以通信


·rsync通过ssh方式同步(推文件)rsync [OPTION] … SRC   [user@]host:DEST

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

sent 1053 bytes  received 31 bytes  240.89 bytes/sec
total size is 979  speedup is 0.90


B机器上文件内容:

2018-1-30 8周2次课 rsync_2次课_06


·可以反过来同步(拉文件):rsync [OPTION] … [user@]host:SRC   DEST

[root@localhost ~]# rsync -avP 192.168.65.129:/tmp/arsenal.txt /tmp/123.txt
root@192.168.65.129's password:
receiving incremental file list
arsenal.txt
979 100%  956.05kB/s    0:00:00 (xfer#1, to-check=0/1)

sent 30 bytes  received 1063 bytes  312.29 bytes/sec

2018-1-30 8周2次课 rsync_8周_08


·连接指定端口:

[root@localhost ~]# rsync -av -e "ssh -p 22" /etc/passwd 192.168.65.129:/tmp/123.txt
root@192.168.65.129's password:
sending incremental file list
passwd

sent 1053 bytes  received 31 bytes  240.89 bytes/sec
total size is 979  speedup is 0.90

(-e 后面接命令,ssh -p 连接远程端口)