技术解析
有时候需要将一台服务器内的数据传输到另外一台设备,有很多种方法,如果两台物理机离得很近,可以通过移动硬盘传输。如果是跨地区的,有人首先通过filezilla将数据下载到windows电脑上,在通过filezilla上传到另外一台服务器,这样做都可以,不过这显然不符合我们一贯追求效率的原则,如果在是在服务器设备间传输数据,其实是可以直接传输的,比较好用的是scp与rsync命令。
准备工作
在两台服务器设备间传输数据,首先保证两台设备都是联网的,至少有一台能连外网,知道两台设备的IP地址,这里注意,如果是192.168.1.XXX,这是内网IP,只能通过这台设备上传和下载。另外就是两台服务器的账号密码。这样就可以了。
假设一台设备IP为:123.tongyuangene.com
另一台设备IP为:1t.tongyuangene.com
要传输文件为/ifs1/Database/nt_makeblastdb/nt 这个文件。
rsync命令
rsync是类unix系统下的数据镜像备份工具。一款快速增量备份工具 Remote Sync,远程同步支持本地复制,或者与其他SSH、rsync主机同步。这样rsync通过比较两个文件之间的差异,将本地文件同步到最新的版本,这样就省去重新下载的麻烦。但是需要注意的是必须在服务器A和B上都安装rsync,其中A服务器上是以服务器模式运行rsync,而B上则以客户端方式运行rsync。这样在web服务器A上运行rsync守护进程,在B上定时运行客户程序来备份web服务器A上需要备份的内容。rsync既可以实现本地之间的数据同步,也可以同步远程服务器。
rysnc有多种工作模式,使用起来稍微有些复杂,因为它并不是像scp单纯的传输数据,还包括同步数据的功能,这里我们使用最间的两种方法,第一种是利用ssh进行同步。只需要加上-e ssh选项即可,写法与scp类似。
rsync -avz -e ssh /ifs1/Database/nt_makeblastdb/nt wangtong@1t.tongyuangene.com:/home/wangtong
第二种比较简单,就是在文件路径前面加上一个rsync。
rsync://用户名@服务器IP/共享名
这里我们同步一下已经下载的swissprot数据库。首先登录NCBI,找到swissprot数据库的地址。我们找到swissprot。将这个路径复制下来。然后就可以利用rsync进行同步了。如果本地没有这文件,那么同步就是下载下来。如果存在,软件就会比较两个文件。然后将缺少的部分下载下来。
rsync -avzP rsync://ftp.ncbi.nlm.nih.gov:/blast/db/FASTA/swissprot.gz swissprot.gz
同样的方法,可以同步nr库与nt库。通过更多设置,rsync能实现定时或间隔同步,配合inotify或sersync工具,可以实现触发式的实时同步。一旦远程数据库更新了,本地将自动进行更新。
rsync选项参数
下面我们来介绍一下rsync的使用。rsync是一款非常复杂的工具,有非常多的功能,因此选项参数也非常多,不过只需要了解一些比较重要的即可。
-a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性。
-v, --verbose 详细模式输出。
-z, --compress 对备份的文件在传输时进行压缩处理。
-p, --perms 保持文件权限。
-e, --rsh=command 指定使用rsh、ssh方式进行数据同步。
-q, --quiet 精简输出模式。
-c, --checksum 打开校验开关,强制对文件传输进行校验。
-r, --recursive 对子目录以递归模式处理。
-R, --relative 使用相对路径信息。
-b, --backup 创建备份,也就是对于目的已经存在有同样的文件名时,将老的文件重新命名为~filename。
-u, --update 仅仅进行更新,也就是跳过所有已经存在于DST,并且文件时间晚于要备份的文件,不覆盖更新的文件。
-l, --links 保留软链结。
-H, --hard-links 保留硬链结。
-o, --owner 保持文件属主信息。
-g, --group 保持文件属组信息。
-D, --devices 保持设备文件信息。
-t, --times 保持文件时间信息。
-n, --dry-run现实哪些文件将被传输。
-w, --whole-file 拷贝文件,不进行增量检测。
-x, --one-file-system 不要跨越文件系统边界。
--rsync-path=PATH 指定远程服务器上的rsync命令所在路径信息。
-h, --help 显示帮助信息。