有时候大家需要将一台服务器内的数据传输到另外一台设备,有很多种方法,如果两台物理机离得很近,可以通过移动硬盘传输。如果是跨地区的,有人首先通过filezilla将数据下载到windows电脑上,在通过filezilla上传到另外一台服务器,这样做都可以,不过这显然不符合我们一贯追求效率的原则,如果在是在服务器设备间传输数据,其实是可以直接传输的,小编在这里给大家一种实用的方法,比较好用的是scp与rsync命令。这次内容首先来介绍scp。
准备工作
在两台服务器设备间传输数据,首先保证两台设备都是联网的,至少有一台能连外网,得到两台设备的IP地址,这里注意,如果是192.168.1.XXX,这是内网IP,只能通过这台设备上传和下载。另外就是两台服务器的账号密码。这样就可以了。
假设一台设备IP为:123.tongyuangene.com
另一台设备IP为:1t.tongyuangene.com
要传输文件为/ifs1/Database/nt_makeblastdb/nt 这个文件。
scp命令
scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的。scp可以通过ssh传输也可以通过ftp传输。上面的那个例子可以这样来操作:
干货:服务器之间如何传输数据—scp
scp的语法其实很简单,主要注意里面的“@”与“:”。
第一部分:scp -r :如果传输是文件夹需要加-r,传输单个文件可以不加;
第二部分:要上传的文件或者文件夹;
第三部分:另一台设备的用户名和IP地址,用@符号连接;
第四部分:冒号“:”,另一台设别上存储文件的路径。
等待验证,第一次会问是否继续连接,输入yes即可。然后输入密码即可开始上传数据。
数据下载也是同样的步骤,只需要将路径替换一下顺序即可。
注意最后面的传输到本地的路径,一个点,表示数据存储在当前目录下。
SCP的选项参数
scp的选项参数不多,主要使用的就是-r。
-1:强制scp命令使用协议ssh1
-2:强制scp命令使用协议ssh2
-4:强制scp命令只使用IPv4寻址
-6:强制scp命令只使用IPv6寻址
-B:使用批处理模式(传输过程中不询问传输口令或短语)
-C:允许压缩。(将-C标志传递给ssh,从而打开压缩功能)
-p:保留原文件的修改时间,访问时间和访问权限。
-q:不显示传输进度条。
-r:递归复制整个目录。
-v:详细方式显示输出。
-c cipher:以cipher将数据传输进行加密,这个选项将直接传递给ssh。
-F ssh_config:指定一个替代的ssh配置文件,此参数直接传递给ssh。
-i identity_file:从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。
-l limit:限定用户所能使用的带宽,以Kbit/s为单位。
-o ssh_option:如果习惯于使用ssh_config(5)中的参数传递方式,
-P port:注意是大写的P, port是指定数据传输用到的端口号
-S program:指定加密传输时所使用的程序。