rsync


一、什么是rsync


  rsync,remote synchronize顾名思意就知道它是一款实现远程同步功能的软件,它在同步文件的同时,可以保持原来文件的权限、时间、软硬链接等附加信息。 rsync是用 “rsync 算法”提供了一个客户机和远程文件服务器的文件同步的快速方法,而且可以通过ssh方式来传输文件,这样其保密性也非常好,另外它还是免费的软件。

  rsync 包括如下的一些特性:


  能更新整个目录和树和文件系统;

  有选择性的保持符号链链、硬链接、文件属于、权限、设备以及时间等;

  对于安装来说,无任何特殊权限要求;

  对于多个文件来说,内部流水线减少文件等待的延时;

  能用rsh、ssh 或直接端口做为传输入端口;

  支持匿名rsync 同步文件,是理想的镜像工具;



SYNOPSIS

       Local:  rsync [OPTION...] SRC... [DEST]


       Access via remote shell:

         Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]

         Push: rsync [OPTION...] SRC... [USER@]HOST:DEST


       Access via rsync daemon:

         Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]

               rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]

         Push: rsync [OPTION...] SRC... [USER@]HOST::DEST

               rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST


    rsync有六种不同的工作模式:

    1、拷贝本地文件,当SRC和DEST路径信息都不包含有单个冒号“:”分隔符时就启动这种工作模式。

    2、使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。当DEST路径地址包含单个冒号“:”分隔符时启动该模式。

    3、使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当DEST路径地址包含单个冒号“:”分隔符时启动该模式。

    4、从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含“::”符时启动文具模式。

    5、从本地机器拷贝文件到远程rsync服务器中。当DEST路径信息包含“::”分隔符时启动该模式。

    6、列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉梧桐信息即可。




    常用的选项:


    -a, --archive               archive mode; equals -rlptgoD (no -H,-A,-X)   

    归档  也就-rlptgoD的集合


    -r, --recursive             recurse into directories

    递归目录


    -l, --links                 copy symlinks as symlinks

    链接文件,意思是拷贝链接文件;


     -z, --compress              compress file data during the transfer

      传输时压缩


     -v, --verbose               increase verbosity

      传输时的进度信息,和-P差不多,


     -e, --rsh=COMMAND           specify the remote shell to use

      ssh的参数建立起加密的连接


     -u, --update                skip files that are newer on the receiver

      只进行更新,防止本地被重写,这个选项下有很子选项,可以自己去看看


       -h, --human-readable        output numbers in a human-readable format

                --progress              show progress during transfer

                以人类可读的方式

                显示进程在传输的过程


      --delete 删除那些DEST中SRC没有的文件

      --password-file=FILE   //从FILE中得到密码





   实际操作:


rsync -avh test/ root@172.16.253.125:/opt //本地将test目录下的文件复制给172.16.253.125的/opt目录 下

rsync -avzh /mnt/ya jeep@172.16.254.251:/home/jeep/ //将ya目录复制到/home/jeep下复制的是普通用户,那么复制的位置只能是普通用户能写的位置 ,否则将Permission Denied.

rsync -zvah /test /mnt   //将test整个目录复制给/mnt下

rsync -zvah /test/ /mnt //将test下的文件复制给/mnt下


rsync -avz --delete /empty/file/ /have/file/   //这个就将大文件给清空的命令




这只是客户端的简单用法,如果有问题可以去man文档,服务器篇下一次在说。