rsync命令的基本使用

                    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 1 ];then
    echo "请输入参数";
    exit
fi


#获取文件路径
file=$@

#获取子路径
filename=`basename $file`

#获取父路径
dirpath=`dirname $file`

#获取完整路径
cd $dirpath
fullpath=`pwd -P`

#同步文件到DataNode
for (( i=102;i<=104;i++ ))
do
    #使终端变绿色 
    tput setaf 2
    echo =========== s$i %file ===========
    #使终端变回原来的颜色,即白灰色
    tput setaf 7
    #远程执行命令
    rsync -lr $filename `whoami`@s$i:$fullpath
    #判断命令是否执行成功
    if [ $? == 0 ];then
        echo "命令执行成功"
    fi
done
原文地址:https://www.cnblogs.com/yinzhengjie/p/8948415.html