一.Rsync本地模式和远程模式
1.命令说明
纯通过rsync的命令,来实现,数据目录A 拷贝到数据目录B
也就是模拟cp的用法 很简单
rsync [选项] 源数据 目的数据
1.安装
yum install rsync -y
2.命令语法,分几个模式
- 本地模式
rsync 参数 源路径 目标路径
rsync -xxxxx /var/log /tmp
- 远程模式,推送方式,把自己的数据推送到另一台机器上(上传)
语法1 ,rsync默认走ssh协议
rsync 参数 源路径 user@ip:目标路径
rsync -avzP /var/log/ [email protected]:/tmp/
语法2
rsync 参数 源路径 user@ip::目标路径
- 远程模式,拉取方式,拉取别人机器的数据到自己的机器上(下载)
rsync 参数 user@ip:源路径 目标路径
rsync 参数 user@ip::源路径目标路径
rsync -avzP [email protected]:/var/log/ /tmp/
参数解释
-v 详细模式输出
-a 归档模式,递归的方式传输文件,并保持文件的属性,等同于 -rlptgoD
-r 递归拷贝目录
-l 保留软链接
-p 保留原有权限
-t 保留原有时间(修改)
-g 保留属组权限
-o 保留属主权限
-D 等于--devices --specials 表示支持b,c,s,p类型的文件
-R 保留相对路径
-H 保留硬链接
-A 保留ACL策略
-e 指定要执行的远程shell命令
-E 保留可执行权限
-X 保留扩展属性信息 a属性
比较常用的组合参数
rsync -avzP
-a 保持文件原有属性
-v 显示传输细节情况
-z 对传输数据压缩传输
-P 显示文件传输的进度信息
你在命令行里,执行命令,喜欢看到命令的执行过程
-avzP
脚本里面?
bash xxx.sh
rsync -az
2.本地模式
linux机器本身,数据来回发送
以后cp可以放一旁了,用rsync当cp使就行
用rsync,支持增量备份
对文件同步
[root@rsync-41 ~]#yum install rsync -y
把本地的的/var/log/messages 文件 拷贝到/opt下
拷贝单个文件
[root@rsync-41 ~]#rsync -avzP /var/log/messages /opt
sending incremental file list
messages
985,500 100% 56.79MB/s 0:00:00 (xfr#1, to-chk=0/1)
sent 123,300 bytes received 35 bytes 246,670.00 bytes/sec
total size is 985,500 speedup is 7.99
拷贝单个大文件,拷贝大文件时,要注意限速,否则占用磁盘IO太多
--bwlimit=10
先生成一个5G文件
dd bs=100M count=50 if=/dev/zero of=/var/log/my_self.log
rsync -avzP /var/log/my_self.log /opt
iotop查看磁盘的读写IO情况
限制单个大文件的传输,速度只给他20M每秒
[root@rsync-41 ~]#rsync -avzP --bwlimit=20 /var/log/my_self.log /opt
sending incremental file list
my_self.log
393,117,696 7% 20.14MB/s 0:03:55
对目录同步(注意语法的区别)
拷贝后的数据,是否携带该目录本身
[root@rsync-41 ~]#rsync -avzP /var/log /opt
[root@rsync41 /opt]#ls
log
不拷贝该目录本身,拷贝目录下的数据
[root@rsync-41 ~]#rsync -avzP /var/log/ /opt
测试文件夹的增量拷贝
[root@rsync41 ~]#mkdir /{test1,test2}
[root@rsync41 ~]#touch /test1/{1..5}.png
[root@rsync41 ~]#rsync -avzP /test1/ /test2
sending incremental file list
./
1.png
0 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=4/6)
2.png
0 100% 0.00kB/s 0:00:00 (xfr#2, to-chk=3/6)
3.png
0 100% 0.00kB/s 0:00:00 (xfr#3, to-chk=2/6)
4.png
0 100% 0.00kB/s 0:00:00 (xfr#4, to-chk=1/6)
5.png
0 100% 0.00kB/s 0:00:00 (xfr#5, to-chk=0/6)
[root@rsync-41 ~]#echo "123" >/test1/1.png
[root@rsync-41 ~]#rsync -avzP /test1/ /test2
sending incremental file list
1.png
4 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=4/6)
sent 175 bytes received 35 bytes 420.00 bytes/sec
total size is 4 speedup is 0.02
无差异化拷贝
使用--delete参数 将目标目录的数据清空,保证完全和源目录的数据一致
rsync -azvP --delete /test1/ /test2/
[root@rsync-41 /test2]#rsync -azvP --delete /test1/ /test2/
sending incremental file list
deleting 行者孙.png
# rsync拷贝文件夹,携带目录本身
# 把test1目录本身,连带着数据,都拷贝到test2下
rsync -avzP /test1 /test2/
最终会生成
/test2/test1/ 该文件夹的数据,和源数据目录 /test1是一样的
对rsync限速,因为rsync在传输数据时,会占用大量的磁盘IO,以及如果是网络传输的话,占用网络带宽,会导致其他程序受影响
所以rsync这样的备份服务,都是在夜里,凌晨操作,被影响其他程序
--bwlimit
实现 /root 和/tmp 完全一样
[root@rsync-41 /test2]#rsync -avzP --delete /root/ /tmp/
3.远程模式
把rsync-41 /root下的数据
拷贝到 nfs-31 /tmp下
实现如scp的作用
#PUSH 推送模式,上传模式
把rsync-41 /root下的数据,拷贝到 nfs-31 /tmp下
登录rsync41
用ip形式、再用主机名形式
添加无差异化参数,该参数,慎用!搞清楚了你在做什么!
rsync -avzP --delete /root/ [email protected]:/tmp/
#PULL 拉取模式(你要琢磨,数据最终放在了哪)
# 把rsync-41 /root下的数据,拷贝到 nfs-31 /tmp下
rsync -avzP [email protected]:/root/ /tmp/
# 拉取rsync41的/etc/passwd文件到 nfs-31的/opt下,使用主机名通信
rsync -avzP root@rsync-41:/etc/passwd /opt/
#传输整个目录,包含目录本身
rsync -avzP [email protected]:/root /tmp/
#只传输目录下的文件,不包含目录本身
rsync -avzP [email protected]:/root/ /tmp/
#不同主机之间同步数据 --delete
rsync -avzP --delete [email protected]:/root /tmp/
#如果/和一个空目录进行完全同步,那么效果和删根一样
#坑:传输过程不限速导致带宽被占满 ,--bwlimit=50
远程传输 nfs-31下的 /tmp/2G.log 备份到 rsync-41的/opt下
rsync -avzP /tmp/2G.log [email protected]:/opt
-a 保持文件原有属性
-v 显示传输过程
-z 压缩传输数据
-P 显示传输进度
远程备份文件,且改名
[root@nfs-31 /tmp]#rsync -avzP /tmp/2G.log [email protected]:/opt/2G.logggggggggggggggggggggg
远程传输 nfs-31下的 /tmp/2G.log 备份到 rsync-41的/opt下,且是无差异化备份
等于清空原有/opt下的数据
rsync -avzP --delete /tmp/2G.log [email protected]:/opt/2G.log
标签:tmp,rsync,同步,log,数据,41,avzP,root From: https://blog.51cto.com/yiyuan/8726326