rsync命令的基本使用
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
rsync服务软件是一款开源,高速的,数据同步(拷贝)工具。
一.rsync服务的特点
1>.本地拷贝
可以把数据从一个路径复制到另一个路径,类似与cp和mv的功能。
2>.异地拷贝
可以从一台机器把数据复制到另一台机器,类似与scp。
3>.增量备份
可以实现增量拷贝,只把多的内容拷过去,效率很高。
4>.删除功能
rsync本身并没有删除功能,但是可以通过它的参数来实现删除功能,类似于Linux的rm命令。
5>.rsync服务模式
可以挂起后台进程,接受别人访问,这也是它的特殊的地方。
二.rsync实操案例
1>.本地拷贝
[root@yinzhengjie ~]# rsync -avz /var/log/messages /tmp/
与cp不同的是它默认就是增量拷贝,当第一个拷贝一个较大的文件时,若第二次在继续拷贝该文件时,它只会拷贝新增的内容。
rsync命令参数:
-v:--verbose,显示输出过程
-z:--compress,压缩
-a:--archive,多参数集合,也叫归档模式,包括多个参数,相当于:-rlptgoD(no -H,-A,-X)。
-r:--recursive,递归
-t:--times,保持修改时间属性
-o:--owner 保持属主不变
-p:--perms 保持权限不变
-g:--group 保持用户组不变
-l:--links 保证用户组不变
-q:--quiet 安静的拷贝
2>.删除功能
[root@yinzhengjie ~]# mkdir /yinzhengjie
[root@yinzhengjie ~]# rsync -avz --delete /yinzhengjie/ /opt/
表示将目标文件的内容和本文件的内容一致,若目标文件中存在本目录中不存在的文件时,直接删除!
3>.排除文件
--exclude:排除文件,当然也支持排除多个文件,用“{a.log,b.log,c.log}”替换图中的"a.log"即可。
--exclude-from:从文件中排除
4>.异地拷贝
[root@yinzhengjie ~]# rsync -avz /yinzhengjie -e 'ssh -p 5200' yinzhengjie@172.16.3.210:~
可以从一台机器把数据赋值到另一台机器,相当于scp命令。只不过scp命令是全量拷贝,而rsync是增量拷贝(只拷贝变化的文件),各自有自己的特点。
提示:"/yinzhengjie"和"/yinzhengjie/"这两个目录的区别是什么?
/yinzhengjie: 指的是目录本身及目录下的内容。
/yinzhengjie/ :指的是目录下的内容。
5>.关于远程拷贝的shell脚本
#!/bin/bash
#@author :yinzhengjie
#blog:http://www.cnblogs.com/yinzhengjie
#EMAIL:y1053419035@qq.com #判断用户是否传参
if [ $# -lt ];then
echo "请输入参数";
exit
fi #获取文件路径
file=$@ #获取子路径
filename=`basename $file` #获取父路径
dirpath=`dirname $file` #获取完整路径
cd $dirpath
fullpath=`pwd -P` #同步文件到DataNode
for (( i=;i<=;i++ ))
do
#使终端变绿色
tput setaf
echo =========== s$i %file ===========
#使终端变回原来的颜色,即白灰色
tput setaf
#远程执行命令
rsync -lr $filename `whoami`@s$i:$fullpath
#判断命令是否执行成功
if [ $? == ];then
echo "命令执行成功"
fi
done