众多数据库服务器的管理过程中,在不同服务器间的文件传输是免不了的。您可以使用scp命令或FTP方法完成文件的发送和接收,这篇文章我将给大家介绍另外一种方法,这就是rsync命令。
rsync是文件传输程序,它的功能和算法描述可以参考维基百科中的介绍。
参考链接:http://zh.wikipedia.org/zh-cn/Rsync

rsync也分服务器端和客户端,使用man查看帮助信息,我们发现rsync有六种不同的工作模式:

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

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

  1. 拷贝本地文件;当SRC和DES路径信息都不包含有单个冒号":"分隔符时就启动这

种工作模式。
  2.使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器

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

。当SRC
地址路径包含单个冒号":"分隔符时启动该模式。
  4. 从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含"::"分隔符时启动

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

动该模式。
  6. 列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信

息即可。
下面以实例来说明:
  # rsync -vazu -progress cnangel@10.1.6.160:~/works/ ~/works
  v:详细提示 
  a:以archive模式操作,复制目录、符号连接,等价于 -rlptgoD 。
  z:压缩
  u:只进行更新,防止本地新文件被重写,注意两者机器的时钟的同时
  -progress:指显示
  以上命令是保持客户机10.1.6.160上的$HOME/works目录和当前机器的$HOME/works目录同
步。
这经常是我们所说的镜像同步就是这么来的,如果断点续传呢?rsync完全可以做到这一点。man手册再次告诉我们:

--partial
      By default, rsync will delete any partially  transferred  file  if  the  transfer  is
      interrupted. In some circumstances it is more desirable to keep partially transferred
      files. Using the --partial option tells rsync to keep the partial file  which  should
      make a subsequent transfer of the rest of the file much faster.

--partial-dir=DIR
      A better way to keep partial files than the --partial option is to specify a DIR that
      will be used to hold the partial data (instead of writing it out to  the  destination
      file).   On  the  next  transfer,  rsync will use a file found in this dir as data to
      speed up the resumption of the transfer and then delete it after it  has  served  its
      purpose.

默认的情况下,当rsync传输中断后,新的rsync传输将删除所有的未完成的残余文件片段,然后开始新的传输。而使用--partial后,将会进行我们所说的断点续传。
值得注意的是-P这个参数是综合了--partial --progress两个参数,所以rsync的断点续传可以用下面的例子来说明:

rsync -avzP /tmp/bigfile cnangel@10.1.6.160:/tmp/bigfile

另外,还有两个参数也经常用到:
  t:修改次数
  r:递归方式
我来通过实验给大家展示一下rsync命令的常用方法。
这里我们演示使用的操作系统是Linux,rsync已经预装好。如果是AIX操作系统,需要单独在IBM网站下载安装包安装。

演示场景:将secDB1服务器SRC目录下的内容同步传输到secDB2服务器DEST目录下,整个过程在secDB1服务器上来完成。

1.在第一台主机的根目录下创建一个名为“SRC”的目录,作为我们传输演示的源目录。
[root@secDB1 /]# mkdir /SRC

2.在SRC目录中创建两个文件f1和f2
[root@secDB1 /]# cd /SRC
[root@secDB1 SRC]# touch f1
[root@secDB1 SRC]# touch f2
[root@secDB1 SRC]# ls -ltr
total 0
-rw-r--r-- 1 root root 0 Feb 21 10:37 f1
-rw-r--r-- 1 root root 0 Feb 21 10:37 f2

3.在第二台主机的根目录下创建一个名为“DEST”的目录,作为我们传输演示的目标目录
[root@secDB2 /]# cd /
[root@secDB2 /]# mkdir /DEST

4.将secDB1服务器SRC目录下的内容同步传输到secDB2服务器DEST目录下
[root@secDB1 SRC]# rsync -avzP /SRC/ -e ssh root@172.17.193.211:/DEST
root@172.17.193.211's password:
building file list ... done
./
f1
f2

sent 162 bytes  received 70 bytes  42.18 bytes/sec
total size is 0  speedup is 0.00

5.验证第二台主机的DEST目录下是否有发送过来的文件
[root@secDB2 /]# cd /DEST
[root@secDB2 DEST]# ls -ltr
total 0
-rw-r--r-- 1 root root 0 Feb 21 02:37 f1
-rw-r--r-- 1 root root 0 Feb 21 02:37 f2

文件发送成功,目的达到。

6.修改DEST目录下的f1文件内容,使之与源目录SRC中的f1目录不相同
[root@secDB2 DEST]# echo "mod" > f1
[root@secDB2 DEST]# cat f1
mod
[root@secDB2 DEST]# ls -ltr
total 4
-rw-r--r-- 1 root root 0 Feb 21 02:37 f2
-rw-r--r-- 1 root root 4 Feb 21 02:59 f1

7.再次将SRC目录下的内容向DEST目录同步
[root@secDB1 SRC]# rsync -avzP /SRC/ -e ssh root@172.17.193.211:/DEST
root@172.17.193.211's password:
building file list ... done
f1

sent 114 bytes  received 48 bytes  46.29 bytes/sec
total size is 0  speedup is 0.00

注意,此时仅仅将有变化的内容f1同步到了DEST目录,这也是rsync命令的优势所在。

8.在经过再次同步之后,此时DEST目录下的文件再一次与SRC目录下的内容保持一致。
[root@secDB2 DEST]# ls -ltr
total 0
-rw-r--r-- 1 root root 0 Feb 21 02:37 f1
-rw-r--r-- 1 root root 0 Feb 21 02:37 f2

9.注意“/”符号带来的差别
如果将“/SRC/”后面的“/”去掉,此时将会将SRC目录和目录的下的所有内容统统的发送到DEST目录下。
[root@secDB1 SRC]# rsync -avzP /SRC -e ssh root@172.17.193.211:/DEST
root@172.17.193.211's password:
building file list ... done
SRC/
SRC/f1
SRC/f2

sent 166 bytes  received 70 bytes  67.43 bytes/sec
total size is 0  speedup is 0.00

10.使用rsync命令的联机帮助文档可以获得更多的提示信息
[root@secDB1 SRC]# rsync -h
……此处内容省略……

11.小结
rsync在给我们传输文件提供另外一种途径的同时,也提高了我们的工作效率。在存在少量差异需要完成文件同步的场合下是不二选择。善用之。

Good luck.

secooler
10.02.21

-- The End --

使用rsync命令提高文件传输效率的更多相关文章

  1. rsync命令

    1.rsync命令(文件同步工具,可以理解为动态备份): rsync是linux系统下的数据镜像备份工具.使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH.rsy ...

  2. Rsync命令参数详解

    在对rsync服务器配置结束以后,下一步就需要在客户端发出rsync命令来实现将服务器端的文件备份到客户端来.rsync是一个功能非常强大的工具,其命令也有很多功能特色选项,我们下面就对它的选项一一进 ...

  3. rsync+inotify实现文件实时同步

    一.相关组件简介 1.rsync 与传统的cp.tar备份方式相比,rsync具有安全性高.备份迅速.支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,例如定期的备份文件服务器 ...

  4. 用rsync命令删除大文件夹

    删除大文件夹 rsync 命令做同步文件用的命令 我们可以借助其快速的运行 来对大文件夹删除:原来就是 新建一个空文件夹 然后把这个空文件夹同步到一个大文件夹下面: 这样会删除大文件夹下面的内容 是高 ...

  5. rsync 精确同步文件用法 (转载)

    -- include-from 指定目录下的部分目录的方法: include.txt: aa bb ss Command: rsync -aSz  --include-from=/home/inclu ...

  6. man rsync翻译(rsync命令中文手册)

    本文为命令rsync的man文档翻译,几乎所有的选项都翻译了,另外关于筛选规则部分只翻译了一部分.由于原文很多地方都比较啰嗦,所以译文中有些内容可能容易让国人疑惑,所以我个人在某些地方加上了注释.若有 ...

  7. Linux下rsync命令使用总结

    一.rsync的概述 rsync是类unix系统下的数据镜像备份工具,从软件的命名上就可以看出来了——remote sync.rsync是Linux系统下的文件同步和数据传输工具,它采用“rsync” ...

  8. CentOS7.5搭建Rsync,实现文件同步

    Rsync(remote sync)是UNIX及类UNIX平台下一款神奇的数据镜像备份软件,它不像FTP或其他文件传输服务那样需要进行全备份,Rsync可以根据数据的变化进行差异备份,从而减少数据流量 ...

  9. rsync命令 SCP命令

    快速查询scp:     scp  各种参数   源地址文件    目的地址文件   从本地复制到远程:        scp   [[user@]host1:]file1 ... [[user@]h ...

随机推荐

  1. mpich2 下运行时出现“由于目标计算机积极拒绝,无法连接”的错误

    进行mpi并行编程时候,win8下使用mpich2时候,安装目录下找到wmpiexec.exe程序打开,填入编写好的.exe程序地址并制定执行的任务数目的想要运行时候,出现错误: unable to  ...

  2. 第14天dbutils与案例

    第14天dbutils与案例 第14天dbutils与案例    1 1.    1.dbutils介绍    2 2.    2.dbutils快速入门    2 3.    3.dbutils A ...

  3. JavaScript详解

    JavaScript可以说是web开发中必备的一种技术.它具有灵活,简单,高效等特点.这次DRP中大量的用到了js,让自己对js有了更深的了解.看完这个以后还回去看了一下牛腩的js视频.把以前没看的看 ...

  4. CentOS7 安装 Mysql 服务

    我希望所有的软件包都用 rpm.yum 安装,这样卸载.升级.管理方便,可是自带的 yum 仓库里面没有 mysql-server 或者不是最新的,我需要安装MySQL官方的 yum 仓库, http ...

  5. html5权威指南:标记文字、组织内容、文档分节

    HTML5新增及删除标签:http://www.cnblogs.com/starof/archive/2015/06/23/4581850.html 第八章:标记文字                 ...

  6. autocomplete+PHP+MYSQL的实现模糊查询

    1.HTML网页表单部分: <input type="text" name="course" id="course" /> 2. ...

  7. dplyr 数据操作 数据过滤 (filter)

    在R的使用过程中我们几乎都绕不开Hadley Wickham 开发的几个包,前面说过的ggplot2.reshape2以及即将要讲的dplyr 因为这几个包可以非常轻易的使我们从复杂的数据操作中逃离, ...

  8. Java 反射 分析类和对象

    Java 反射 分析类和对象 @author ixenos 摘要:优化程序启动策略.在运行时使用反射分析类的结构和对象 优化程序启动策略 在启动时,包含main方法的类被加载.它会加载所有它需要的类. ...

  9. Java 集合 ArrayList和LinkedList的几种循环遍历方式及性能对比分析 [ 转载 ]

    Java 集合 ArrayList和LinkedList的几种循环遍历方式及性能对比分析 @author Trinea 原文链接:http://www.trinea.cn/android/arrayl ...

  10. ebtables使用的协议

    ebtables的参数中: -p:指明使用的协议类型,ipv4,arp等可选(使用时必选)详情见/etc/ethertypes --ip-proto:IP包的类型,1为ICMP包,6为TCP包,17为 ...