最近更新时间:2022.07.27 15:46:33
首次发布时间:2022.04.27 21:04:01
本文介绍类Unix/Linux操作系统的云服务器间如何传输数据。
SCP是基于SSH登录,可以在Linux服务器间进行安全的远程文件拷贝的命令工具。
场景 | 命令 | 示例 |
---|---|---|
两台Linux服务器间传输文件 | scp <源主机用户名>@<源主机IP>:<待传输文件地址> <目的主机用户名>@<目的主机IP>:<接收文件地址> | 将IP为192.168.1.104的云服务器文件传输到IP为192.168.1.105的云服务器/home/目录下,命令如下:scp root@192.168.1.104:/test.txt root@192.168.1.105:/home/ |
从本地复制文件到远程服务器 | scp <本地文件地址> <远程服务器用户名>@<远程服务器公网IP>:<远程服务器文件地址> | 将本地文件 /home/test.txt 上传至公网IP地址为10.x.x.x的云服务器对应目录下,命令如下:scp /home/test.txt root@10.x.x.x:/home/ |
从远程服务器复制文件到本地主机 | scp <远程服务器用户名>@<远程服务器公网IP>:<远程服务器文件地址> <本地文件存储地址> | 将公网IP地址为10.x.x.x的云服务器文件 /home/test.txt 下载至本地 /home/目录下,命令如下:scp root@10.x.x.x:/home/test.txt /home/ |
如需了解更多scp命令语法,可执行man scp
获取相关信息。
Rsync(remote synchronize)是Linux系统下的数据镜像备份工具。可以远程同步,支持本地复制,或者与其他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 --version
命令,检查是否已经安装rsync。yum install rsync
sudo apt-get install rsync
zypper in rsync
使用Rsync服务进行文件传输时,需在server端和client端进行如下预配置。
如通过SSH传输文件,无需进行Rsync服务预配置,您可跳过此步骤。
Server端配置
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
命令,新建/etc/rsyncd.passwd文件。按i
进入编辑模式,添加用户名及密码:<auth user>:<password>
,按Esc
退出编辑模式,然后输入:wq
并回车。chmod 600 /etc/rsyncd.passwd
命令,开启读写权限。systemctl start rsyncd
命令,开启服务。Client端配置
vim /etc/rsyncd.passwd
命令,新建/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 -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 -av <auth user>@<远程服务器IP>::<模块名> <本地文件存储地址> | 将IP为192.168.2.65的远程机器test模块下的文件拷贝到本地机器/home目录下,命令如下:rsync -av root@192.168.2.65::test /home/ |
显示远程机器的文件列表 | rsync -v rsync://<远程服务器IP>/<模块名> | 显示IP为192.168.2.65的远程机器的文件列表,命令如下:rsync -v rsync://192.168.2.65/test |
NC(netcat)被称为网络工具中的瑞士军刀,体积小巧,但功能强大,通过建立TCP连接可以很方便的在两台主机间传输文件。
NC常见参数说明如下:
参数 | 说明 |
---|---|
-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机器上,命令如下:
|