本文为您介绍如何在类Unix、Linux操作系统的云服务器间传输数据。
传输文件数据的主要工具有SCP、Rsync、Netcat等,下文将详细介绍各工具的特点以及用法。
SCP( Secure Copy)即安全拷贝,是一种在两台服务器(本地与本地、本地与远程、远程与远程)间安全地进行文件传输的方法。SCP是基于SSH登录的应用,所以进行数据传输的机器上必须支持SSH服务。
场景 | 命令 | 示例 |
---|---|---|
两台Linux服务器间传输文件 |
| 将IP为192.168.1.104的云服务器文件传输到IP为192.168.1.105的云服务器/home/目录下,命令如下: |
从本地上传文件到远程服务器 |
| 将本地文件 /home/test.txt 上传至公网IP地址为10.x.x.x的云服务器对应目录下,命令如下: |
从远程服务器下载文件到本地主机 |
| 将公网IP地址为10.x.x.x的云服务器文件 /home/test.txt 下载至本地 /home/目录下,命令如下: |
如需了解更多scp命令语法,可执行man scp
获取相关信息。
Rsync(remote synchronize)是Linux/类Unix系统下的数据镜像备份工具。可以远程同步,支持本地复制,或者与其他SSH、Rsync主机同步,文件传输速率高。
Rsync算法并不是每一次都整份传输,而是只传输两个文件的不同部分,因此其传输速度较快。
Rsync常见参数说明如下:
参数 | 说明 |
---|---|
-v | 显示详细信息。 |
-q | 忽略非error的输出。 |
-a | 归档(压缩)模式,表示以递归方式传输文件,并保持所有文件属性等同于-rlptgoD(无 -H,-A,-X)。 |
-r | 对子目录以递归模式处理。 |
-l | 不处理符号链接保(留符号链接)。 |
-p | 保持权限。 |
-t | 保持修改时间。 |
-g | 保持组信息。 |
-o | 保持文件所有者信息。 |
-D | 保持设备文件信息。 |
-H | 保留硬链结。 |
-S | 对稀疏文件进行特殊处理以节省空间。 |
-z | 在传输过程中进行压缩。 |
本节以CentOS 7.9操作系统为例,介绍Rsync相关安装、配置说明。
rsync --version
命令,检查是否已经安装Rsync。yum install rsync
sudo apt-get install rsync
zypper in rsync
使用Rsync服务在两台服务器间进行Rsync传输时,需在Server端和Client端进行如下预配置。
说明
如通过SSH传输文件,无需进行Rsync服务预配置,您可跳过此步骤。
vim /etc/rsyncd.conf
打开文件,按i
进入编辑模式,在文件末尾添加如下内容:uid = root gid = root use chroot = no max connections = 4 exclude = lost+found/ transfer logging = yes timeout = 900 ignore nonreadable = yes dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb .bz2 [test] #自定义模块名称 path=/home/test/ #指定存储文件的路径 comment=test ignore errors read only=no #设置为no,客户端可以上传文件,yes表示只读 write only=no #no表示可在客户端下载,yes表示不能在客户端下载 list=no #客户请求时,使用模块列表 auth user=root #指定传输时要使用的用户名
Esc
退出编辑模式,然后输入:wq
并回车。vim /etc/rsyncd.passwd
命令,新建文件。i
进入编辑模式,添加传输时要使用的用户名及登录密码:<auth user>:<password>
。Esc
退出编辑模式,然后输入:wq
并回车。chmod 600 /etc/rsyncd.passwd
命令,开启读写权限。systemctl start rsyncd
命令,开启服务。vim /etc/rsyncd.passwd
命令,新建文件。i
进入编辑模式,添加server端auth user密码:<password>
。Esc
退出编辑模式,然后输入:wq
并回车。chmod 600 /etc/rsyncd.passwd
命令,开启读写权限。场景 | 命令 | 示例 |
---|---|---|
拷贝本地文件 | rsync -avSH <源文件地址> <目的地址> | 将/home目录下的test.txt文件拷贝到/tmp目录下,命令如下:rsync -avSH /home/test.txt /tmp/ |
拷贝本地机器的内容到远程机器(使用shell程序,如SSH) | rsync -av <本地文件地址> <远程机器IP>:<远程机器文件存储地址> | 将本地机器/home目录下的test.txt文件拷贝到IP为192.168.2.65的远程机器/tmp目录下,命令如下:rsync -av /home/test.txt 192.168.2.65:/tmp/ |
拷贝远程机器的内容到本地机器(使用shell程序,如SSH) | rsync -av <远程机器IP>:<远程机器文件地址> <本地机器文件存储地址> | 例如:将IP为192.168.2.65的远程机器/tmp目录下的test.txt文件拷贝到本地机器/home目录下,命令如下:rsync -av 192.168.2.65:/tmp/test.txt /home/ |
拷贝本地机器的文件到远程Rsync服务器中(Rsync传输) | rsync -av <本地文件地址> <auth user>@<远程服务器IP>::<模块名> | 将本地test.txt文件上传到IP为192.168.2.65的远程机器test模块下,命令如下:rsync -av /root/test.txt root@192.168.2.65::test |
拷贝远程Rsync服务器的文件到本地机器(Rsync传输) | rsync -av <auth user>@<远程服务器IP>::<模块名> <本地文件存储地址> | 将IP为192.168.2.65的远程机器test模块下的文件拷贝到本地机器/home目录下,命令如下:rsync -av root@192.168.2.65::test /home/ |
显示远程机器的文件列表(Rsync传输) | rsync -v rsync://<远程服务器IP>/<模块名> | 显示IP为192.168.2.65的远程机器的文件列表,命令如下:rsync -v rsync://192.168.2.65/test |
Netcat(简称NC)被称为网络工具中的“瑞士军刀”,体积小巧,但功能强大。通过建立TCP连接可以很方便的在两台主机间传输文件。
Netcat常见参数说明如下:
参数 | 说明 |
---|---|
-g<网关> | 设置路由器跃程通信网关,最多可设置8个。 |
-G<指向器数目> | 设置来源路由指向器,其数值为4的倍数。 |
-h | 在线帮助。 |
-i<延迟秒数> | 设置时间间隔,以传送信息及扫描通信端口。 |
-l | 使用监听模式,管控传入的资料,需与-p选项同时使用。 |
-n | 直接使用IP地址,而不通过域名服务器。 |
-p<通信端口> | 设置本地主机使用的通信端口。 |
-r | 指定本地与远端主机的通信端口。 |
-s<来源位址> | 设置本地主机送出数据包的IP地址。 |
-u | 使用UDP传输协议。 |
-v | 显示指令执行过程。 |
-w<超时秒数> | 设置等待连线的时间。 |
-z | 使用0输入/输出模式,只在扫描通信端口时使用。 |
nc --version
命令,检查是否已经安装Netcat。wget https://sourceforge.NET/projects/netcat/files/netcat/0.7.1/netcat-0.7.1.tar.gz tar zxvf netcat-0.7.1.tar.gz cd netcat-0.7.1 ./configure make make install
场景 | 命令 | 示例 |
---|---|---|
扫描端口 | nc -v -w 2 <待扫描机器IP> -z <端口范围> | 扫描IP为192.168.2.253的远程服务器20~30端口,命令如下:nc -v -w 2 192.168.2.253 -z 20-30 |
传输文件 |
| 从IP为192.168.2.65的机器拷贝test.txt文件到IP为192.168.2.253机器上,命令如下:
|