10.28 rsync工具介绍
rsync传输数据,备份到远程,类似于cp
rsync不仅可以实现A机器到B机器,也可以实现从本机A目录到B目录的数据传输
cp的话,如果是不断写入的文件,cp过去,覆盖文件,文件过大的话,既浪费时间,又占磁盘IO,此时使用rsync
rsync可以实现增量拷贝,只增加变更过的文件
·拷贝文件:
[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
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机器上文件内容:
·可以反过来同步(拉文件):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
·连接指定端口:
[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 连接远程端口)