- 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
```
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。