- 10.28 rsync工具介绍 - 10.29/10.30 rsync常用选项 - 10.31 rsync通过ssh同步 # 10.28 rsync工具介绍 -/A目录 --> /B目录(A目录更新了一个文件,每次更新都需要把A目录拷贝到B目录),如果用cp命令 比较浪费时间,耗费磁盘空间,磁盘压力 读写之类的, -使用rsync -av /etc/passwd /tmp/1.txt -a选项就是包含了好几个选项 ,v 是可视化,可以看到拷贝的过程 ``` [root@aminglinux-001 ~]# rsync -av /etc/passwd /tmp/1.txt sending incremental file list passwd sent 1471 bytes received 31 bytes 3004.00 bytes/sec total size is 1397 speedup is 0.93 [root@aminglinux-001 ~]# ``` -同时支持远程去拷贝,同步 -rsync -av /etc/passwd root@192.168.202.130:/tmp/1.txt -rsync 格式 SRC(源文件) DEST(目标目录) -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没有的文件 --exclude 过滤指定文件,如--exclude "logs" 会把文件名包含logs的文件或者目录过滤掉不同步 -P(大P)显示同步过程,比如速率,比-v更加详细 -u加上该选项后,如果DEST中的文件比SRC新,则不同步 -z 传输时压缩 # 10.30 rsync 常用选项 下 -下面来开始测试下 ``` [root@aminglinux-001 ~]# ls 111 1.txt 2.txt aminglinux biji.txt test 123 1.txt~ 2.txt.bak anaconda-ks.cfg.1 get-pip.py 1_heard.txt 1.txt.bak 3.txt awk grep 1_sorft.txt 234 4.txt bb.txt sed [root@aminglinux-001 ~]# ls 111 12.tx~ 12.txt 12_txt.swp 222 4913 aming3 [root@aminglinux-001 ~]# ls -l 111 总用量 16 -rw-r--r--. 1 root root 0 7月 23 20:29 12.tx~ -rw-r--r--. 1 root root 65 7月 23 20:32 12.txt -rw-r--r--. 1 root root 12288 7月 23 20:29 12_txt.swp drwxr-xr-x. 2 root root 6 7月 23 20:23 222 -rw-r--r--. 1 root root 0 7月 23 20:29 4913 lrwxrwxrwx. 1 root root 11 7月 24 21:17 aming3 -> /tmp/aming2 [root@aminglinux-001 ~]# ls /tmp/ 1.cap 1.txt my.ipt systemd-private-fab301f859c4489e8be3f5afe72fed8b-vmtoolsd.service-ItQGyG [root@aminglinux-001 ~]# ``` -把/root/111/目录 同步到 /tmp/111_dest/ 下并且改名 111_dest -av的作用就是 拷贝目录、时间属性、属主属组,软链接,通通拷贝到111_test目录下去吗 ``` [root@aminglinux-001 ~]# rsync -av /root/111/ /tmp/111_dest/ sending incremental file list created directory /tmp/111_dest ./ .12.txt.swp .12.txt.swx 12.txt 12.tx~ 12_txt.swp 4913 aming3 -> /tmp/aming2 222/ sent 12774 bytes received 136 bytes 25820.00 bytes/sec total size is 12364 speedup is 0.96 [root@aminglinux-001 ~]# ``` -下面来对比下俩个目录下的文件,软链接也同步过去了,这就时一个小写的l , ``` [root@aminglinux-001 ~]# ls -l 111/ 总用量 16 -rw-r--r--. 1 root root 0 7月 23 20:29 12.tx~ -rw-r--r--. 1 root root 65 7月 23 20:32 12.txt -rw-r--r--. 1 root root 12288 7月 23 20:29 12_txt.swp drwxr-xr-x. 2 root root 6 7月 23 20:23 222 -rw-r--r--. 1 root root 0 7月 23 20:29 4913 lrwxrwxrwx. 1 root root 11 7月 24 21:17 aming3 -> /tmp/aming2 [root@aminglinux-001 ~]# ls -l /tmp/111_dest/ 总用量 16 -rw-r--r-- 1 root root 0 7月 23 20:29 12.tx~ -rw-r--r-- 1 root root 65 7月 23 20:32 12.txt -rw-r--r-- 1 root root 12288 7月 23 20:29 12_txt.swp drwxr-xr-x 2 root root 6 7月 23 20:23 222 -rw-r--r-- 1 root root 0 7月 23 20:29 4913 lrwxrwxrwx 1 root root 11 7月 24 21:17 aming3 -> /tmp/aming2 [root@aminglinux-001 ~]# ``` - -L 是同步软链接时把源文件给同步 ``` [root@aminglinux-001 ~]# rsync -avL /root/111/ /tmp/111_dest/ sending incremental file list symlink has no referent: "/root/111/aming3" sent 141 bytes received 13 bytes 308.00 bytes/sec total size is 12353 speedup is 80.21 rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1052) [sender=3.0.9] [root@aminglinux-001 ~]# ls -l 111 总用量 16 -rw-r--r--. 1 root root 0 7月 23 20:29 12.tx~ -rw-r--r--. 1 root root 65 7月 23 20:32 12.txt -rw-r--r--. 1 root root 12288 7月 23 20:29 12_txt.swp drwxr-xr-x. 2 root root 6 7月 23 20:23 222 -rw-r--r--. 1 root root 0 7月 23 20:29 4913 lrwxrwxrwx. 1 root root 11 7月 24 21:17 aming3 -> /tmp/aming2 [root@aminglinux-001 ~]# touch /tmp/aming2 (由于之前的软链接文件已损坏,所以创建一个软链接文件) [root@aminglinux-001 ~]# ls -l 111 总用量 16 -rw-r--r--. 1 root root 0 7月 23 20:29 12.tx~ -rw-r--r--. 1 root root 65 7月 23 20:32 12.txt -rw-r--r--. 1 root root 12288 7月 23 20:29 12_txt.swp drwxr-xr-x. 2 root root 6 7月 23 20:23 222 -rw-r--r--. 1 root root 0 7月 23 20:29 4913 lrwxrwxrwx. 1 root root 11 7月 24 21:17 aming3 -> /tmp/aming2 [root@aminglinux-001 ~]# ``` -再来试下 ``` [root@aminglinux-001 ~]# rsync -avL /root/111/ /tmp/111_dest/ sending incremental file list aming3 sent 193 bytes received 32 bytes 450.00 bytes/sec total size is 12353 speedup is 54.90 [root@aminglinux-001 ~]# [root@aminglinux-001 ~]# ls -l /tmp/111_dest/ 总用量 16 -rw-r--r-- 1 root root 0 7月 23 20:29 12.tx~ -rw-r--r-- 1 root root 65 7月 23 20:32 12.txt -rw-r--r-- 1 root root 12288 7月 23 20:29 12_txt.swp drwxr-xr-x 2 root root 6 7月 23 20:23 222 -rw-r--r-- 1 root root 0 7月 23 20:29 4913 -rw-r--r-- 1 root root 0 9月 13 22:27 aming3 [root@aminglinux-001 ~]# [root@aminglinux-001 ~]# ls -l 111 总用量 16 -rw-r--r--. 1 root root 0 7月 23 20:29 12.tx~ -rw-r--r--. 1 root root 65 7月 23 20:32 12.txt -rw-r--r--. 1 root root 12288 7月 23 20:29 12_txt.swp drwxr-xr-x. 2 root root 6 7月 23 20:23 222 -rw-r--r--. 1 root root 0 7月 23 20:29 4913 lrwxrwxrwx. 1 root root 11 7月 24 21:17 aming3 -> /tmp/aming2 [root@aminglinux-001 ~]# ``` -在aming2里面写入一些东西 ``` [root@aminglinux-001 ~]# echo "12133keidkd" > /tmp/aming2 ``` -再重新拷贝下,再看下这个aming3文件 ``` [root@aminglinux-001 ~]# rsync -avL /root/111/ /tmp/111_dest/ sending incremental file list aming3 sent 209 bytes received 32 bytes 482.00 bytes/sec total size is 12365 speedup is 51.31 [root@aminglinux-001 ~]# ls -l /tmp/111_dest/ 总用量 20 -rw-r--r-- 1 root root 0 7月 23 20:29 12.tx~ -rw-r--r-- 1 root root 65 7月 23 20:32 12.txt -rw-r--r-- 1 root root 12288 7月 23 20:29 12_txt.swp drwxr-xr-x 2 root root 6 7月 23 20:23 222 -rw-r--r-- 1 root root 0 7月 23 20:29 4913 -rw-r--r-- 1 root root 12 9月 13 22:32 aming3 [root@aminglinux-001 ~]# ls -l /tmp/111_dest/aming3 -rw-r--r-- 1 root root 12 9月 13 22:32 /tmp/111_dest/aming3 [root@aminglinux-001 ~]# cat !$ cat /tmp/111_dest/aming3 12133keidkd [root@aminglinux-001 ~]# ``` - [ ] 这就是-L的作用,它可以把软链接所指向的源文件给拷贝过去, --delete 删除DEST中SRC没有的文件 -111目录 和 111_dest 目录下面的文件是一样的,现在在后者目录创建一个新的文件 new.txt的文件 ``` [root@aminglinux-001 ~]# ls 111/ 12.tx~ 12.txt 12_txt.swp 222 4913 aming3 [root@aminglinux-001 ~]# ls /tmp/111_dest/ 12.tx~ 12.txt 12_txt.swp 222 4913 aming3 [root@aminglinux-001 ~]# touch /tmp/111_dest/new.txt [root@aminglinux-001 ~]# ``` -对于源文件111目录来讲,不管你多不多其他文件,只要你对方目录下面有我的文件就可以,但是有时候要求比较严谨,不允许添加任何文件,需要和111目录文件保持一致,-delete 把111_test 中 111目录下没有的文件 给过滤掉 ``` [root@aminglinux-001 ~]# rsync -avL --delete /root/111/ /tmp/111_dest/ sending incremental file list ./ deleting new.txt sent 157 bytes received 16 bytes 346.00 bytes/sec total size is 12365 speedup is 71.47 [root@aminglinux-001 ~]# [root@aminglinux-001 ~]# ls !$ ls /tmp/111_dest/ 12.tx~ 12.txt 12_txt.swp 222 4913 aming3 [root@aminglinux-001 ~]# ``` - [ ] 过程中有一个deleting new.txt 可以看到把这个new.txt文件给删除了 ,问了和源文件 统一 --exclude 过滤指定文件,如--exclude "logs" 会把文件名包含logs的文件或者目录过滤掉不同步 -做之前把之前111_dest/目录里的文件删掉 ``` [root@aminglinux-001 ~]# rm -rf /tmp/111_dest/* ``` -现在我要做一个过滤,把所有的txt文件全部过滤出来,不需要你拷贝txt文件, ``` [root@aminglinux-001 ~]# rsync -avL --exclude "*.txt" /root/111/ /tmp/111_dest/ sending incremental file list ./ 12.tx~ 12_txt.swp 4913 aming3 222/ sent 12605 bytes received 95 bytes 25400.00 bytes/sec total size is 12300 speedup is 0.97 [root@aminglinux-001 ~]# ``` - [ ] 没有出现12.txt ,因为添加了--exclude *.txt - --include 还可以多个添加,再加一个把以aming开头的文件也过滤掉 ``` [root@aminglinux-001 ~]# !rm rm -rf /tmp/111_dest/* [root@aminglinux-001 ~]# rsync -avL --exclude "*.txt" --exclude "aming*" /root/111/ /tmp/111_dest/ sending incremental file list ./ 12.tx~ 12_txt.swp 4913 222/ sent 12535 bytes received 76 bytes 25222.00 bytes/sec total size is 12288 speedup is 0.97 [root@aminglinux-001 ~]# ``` - -P(大P)显示同步过程,比如速率,比-v更加详细 ``` [root@aminglinux-001 ~]# !rm rm -rf /tmp/111_dest/* [root@aminglinux-001 ~]# rsync -avP /root/111/ /tmp/111_dest/ sending incremental file list ./ 12.txt 65 100% 0.00kB/s 0:00:00 (xfer#1, to-check=5/9) 12.tx~ 0 100% 0.00kB/s 0:00:00 (xfer#2, to-check=4/9) 12_txt.swp 12288 100% 11.72MB/s 0:00:00 (xfer#3, to-check=3/9) 4913 0 100% 0.00kB/s 0:00:00 (xfer#4, to-check=2/9) aming3 -> /tmp/aming2 222/ sent 12696 bytes received 98 bytes 8529.33 bytes/sec total size is 12364 speedup is 0.97 [root@aminglinux-001 ~]# ``` -u加上该选项后,如果DEST中的文件比SRC新,则不同步 ``` [root@aminglinux-001 ~]# cd /tmp/111_dest/ [root@aminglinux-001 111_dest]# ls 12.tx~ 12.txt 12_txt.swp 222 4913 aming3 [root@aminglinux-001 111_dest]# vim 4913 kdkkdkdkdkdkdkdkkd lalslslslslslslsls aaaaaaaaaaaaaaaaaa ~ ~ ~ -- 插入 -- [root@aminglinux-001 111_dest]# rsync -avP /root/111/ /tmp/111_dest/ sending incremental file list ./ 4913 0 100% 0.00kB/s 0:00:00 (xfer#1, to-check=2/9) sent 212 bytes received 35 bytes 494.00 bytes/sec total size is 12364 speedup is 50.06 [root@aminglinux-001 111_dest]# ``` -正常拷贝,更新 目标4913文件里的内容 被源文件4913给覆盖了,所以里面东西没有了 ``` [root@aminglinux-001 111_dest]# cat 4913 [root@aminglinux-001 111_dest]# ``` -现在因为目标4913 文件更加新,有一个特殊情况,就是想要目标目录的文件更新一些,有些特殊原因,没有办法编辑111目录下的4913文件,我只需要更新我的目标目录 ,备份目录下的文件就可以了 -如果不加特殊选项u 那也就意味着,所编辑的4913 要被覆盖掉,需要加一个u选项,就可以起到保护的作用,保护目标目录下面给我们更改 更新股的文件,但是、/root/111/4913 依然还是旧的 -使用rsync -avPu /root/111/ /tmp/111_dest/ ``` [root@aminglinux-001 111_dest]# vim 4913 [root@aminglinux-001 111_dest]# [root@aminglinux-001 111_dest]# rsync -avPu /root/111/ /tmp/111_dest/ sending incremental file list ./ sent 173 bytes received 16 bytes 378.00 bytes/sec total size is 12364 speedup is 65.42 [root@aminglinux-001 111_dest]# cat 4913 kdkkdkdkdkdkdkdkkd lalslslslslslslsls aaaaaaaaaaaaaaaaaa [root@aminglinux-001 111_dest]# cat /root/111/4913 [root@aminglinux-001 111_dest]# ``` -z 传输时压缩 rsync -avPz /root/111/ /tmp/111_dest/ (远程传输,尤其是文件很多的时候,加上-z 可以节省带宽和增加速度的) ``` [root@aminglinux-001 111_dest]# rsync -avPz /root/111/ /tmp/111_dest/ sending incremental file list 4913 0 100% 0.00kB/s 0:00:00 (xfer#1, to-check=2/9) sent 206 bytes received 32 bytes 476.00 bytes/sec total size is 12364 speedup is 51.95 [root@aminglinux-001 111_dest]# ``` # 10.31 rsync 通过ssh同步 -rsync通过ssh方式同步 -rsync -av test1/192.168.202.132:/tmp/test2/ -rsync -av -e "ssh -p 22" test1/ 192.168.202.132:/tmp/test2/ -rsync通过服务的方式同步 -要编辑配置文件/etc/rsyncd.conf -启动服务rsync --daemon -格式:rsync -av test1/192.168.202.130::module/dir/ -现在有俩台终端1,终端2 俩台机器是可以互相平通 [root@aminglinux-001 ~]# ping 192.168.202.132 PING 192.168.202.132 (192.168.202.132) 56(84) bytes of data. 64 bytes from 192.168.202.132: icmp_seq=1 ttl=64 time=1.14 ms 64 bytes from 192.168.202.132: icmp_seq=2 ttl=64 time=0.362 ms 64 bytes from 192.168.202.132: icmp_seq=3 ttl=64 time=0.502 ms ^C --- 192.168.202.132 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2003ms rtt min/avg/max/mdev = 0.362/0.669/1.143/0.340 ms [root@aminglinux-001 ~]# -用终端1,把1下面的/etc/passwd 同步到 2终端的 /tmp/aming.txt下 ``` [root@aminglinux-001 ~]# rsync /etc/passwd 192.168.202.132:/tmp/aming.txt root@192.168.202.132's password: bash: rsync: 未找到命令 rsync: connection unexpectedly closed (0 bytes received so far) [sender] rsync error: remote command not found (code 127) at io.c(605) [sender=3.0.9] [root@aminglinux-001 ~]# ``` -这边有一个报错信息,rsync未找到命令,默认下,是没有这命令的,需要安装一些 -在终端2下面安装下 ``` [root@aminglinux-02 ~]# yum install -y rsync 已加载插件:fastestmirror Running transaction 正在安装 : rsync-3.0.9-17.el7.x86_64 1/1 验证中 : rsync-3.0.9-17.el7.x86_64 1/1 已安装: rsync.x86_64 0:3.0.9-17.el7 完毕! [root@aminglinux-02 ~]# ``` -再去终端1下面同步 -av 显示过程 ``` [root@aminglinux-001 ~]# rsync -av /etc/passwd 192.168.202.132:/tmp/aming.txt root@192.168.202.132's password: sending incremental file list passwd sent 1471 bytes received 31 bytes 429.14 bytes/sec total size is 1397 speedup is 0.93 [root@aminglinux-001 ~]# ``` -来cat一下同步的文件 ``` [root@aminglinux-02 ~]# cat /tmp/aming.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 sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin dbus:x:81:81:System message bus:/:/sbin/nologin polkitd:x:998:996:User for polkitd:/:/sbin/nologin tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin chrony:x:997:995::/var/lib/chrony:/sbin/nologin aming:x:1000:1005::/home/aming:/bin/bash user1:x:1001:1001::/home/user1:/bin/bash user2:x:1002:1002::/home/user2:/bin/bash user3:x:1004:1005::/home/user3:/bin/bash user4:x:1006:1005::/home/aming111:/sbin/nologin user5:x:1007:1007::/home/user5:/bin/bash user6:x:1008:1010::/home/user6:/bin/bash saslauth:x:996:76:Saslauthd user:/run/saslauthd:/sbin/nologin tcpdump:x:72:72::/:/sbin/nologin [root@aminglinux-02 ~]# ``` -这个叫做拉文件,rsync -avP 192.168.202.132:/tmp/aming.txt,把文件拉过来 -第一种叫推文件 , rsync -av /etc/passwd 192.168.202.132:/tmp/aming.txt 把文件推过去 ``` [root@aminglinux-001 ~]# rsync -avP 192.168.202.132:/tmp/aming.txt /tmp/123.txtroot@192.168.202.132's password: receiving incremental file list aming.txt 1397 100% 1.33MB/s 0:00:00 (xfer#1, to-check=0/1) sent 30 bytes received 1479 bytes 335.33 bytes/sec total size is 1397 speedup is 0.93 [root@aminglinux-001 ~]# ``` -指定端口 ``` [root@aminglinux-001 ~]# rsync -avP -e "ssh -p 22" /etc/passwd 192.168.202.132:/tmp/aming.txt root@192.168.202.132's password: sending incremental file list sent 31 bytes received 12 bytes 12.29 bytes/sec total size is 1397 speedup is 32.49 [root@aminglinux-001 ~]# ``` -ssh 方式传输数据 ``` [root@aminglinux-001 ~]# ssh -p 22 192.168.202.132 root@192.168.202.132's password: Last login: Thu Sep 14 00:02:08 2017 from 192.168.202.1 [root@aminglinux-02 ~]# 登出 Connection to 192.168.202.132 close ```
转载于:https://blog.51cto.com/ch71smas/1966983