服务器之间传输文件的方式都有哪些

前言

如果有图形界面的话 我们可以直接使用FileZilla或者 SecureCRT 进行文件传输

Linux服务器都是不带图形界面的, 这个时候我们需要通过相关指令来处理

假设有两台公网的Linux机器A和B, 我们需要从A传输文件至B

可以采用以下几种方式:

第一种 使用nc指令

操作如下:

服务器B开启文件端口监听:

1
nc -l 3300 > aaa.tar //将接受的文件取名为aaa.tar

服务器A传输文件:

1
nc 服务器Bip 3300 < 需要传送的文件

第二种 使用scp指令

操作如下:

1
scp -r 需要传输的目录 root@服务器ip:目标存放目录

第三种 使用rsync指令

操作如下:

1
rsync -r 需要传输的目录 root@服务器Bip:目标存放目录

scp很相似, 比scp多了一个排除子目录的功能:

1
rsync -r -v --exclude 需要排除不进行传输的子目录 需要传输的目录 root@服务器Bip:目标存放目录

如果要同时排除多个目录 那么需要指定多次--exclude 如下:

1
rsync -r -v --exclude 排除目录1 --exclude 排除目录2 需要传输的目录 root@服务器Bip:目标存放目录

第四种 使用wget工具

操作如下:

首先服务器B需要开启http服务, 这里以python为例:

1
python -m http.server 3300

服务器A开始从B下载文件:

1
sudo wget -bc --limit-rate=6M 0.0.0.0:3300/需要下载的文件

参数说明:

  • -b : 后台执行
  • -c: 断点续传
  • –limit-rate=6M: 限速6M

总结

工具 优点 缺点
nc 采用tcp协议 占用系统资源小 速度快 安全性不高 操作相对繁琐
wget 采用tcp协议 支持子目录排除 支持限速 断点续传 安全性不高操作相对繁琐
scp 采用ssh协议 传输安全 支持限速 占用系统资源小 不支持子目录排除
rsync 采用ssh协议 传输安全 速度比scp快 支持子目录排除 支持限速和本地复制 和断点续传 小文件众多时比较消耗资源

本地传输

使用scprsync不仅可以对两台服务器上的数据进行相互传输 还可以进行本地数据传输 比如将服务器上的数据下载到本地:

1
rsync -r root@服务器IP:服务器目录 本地目录

或者

1
scp -r root@服务器IP:服务器目录 本地目录

还可以将本地的数据上传到服务器 只需将前后两者反过来即可 比如:

1
rsync  -r  本地目录 root@服务器IP:服务器目录

或者

1
scp -r  本地目录 root@服务器IP:服务器目录

断点续传

如果传输的文件比较大 可以采用断点续传的方式 然而scp并不支持断点续传, wget只能实现服务器之间数据传输以及本地从服务器拉取数据 无法做到将本地数据推到服务器

好在rsync工具给我们提供一个用于断点续传的指令, 如下:

1
rsync -r  --partial --progress 本地目录 root@服务器IP:服务器目录

参数解释:

  • --partial:保留因故没有完全传输的文件,以加快随后的再次传输,即断点续传
  • --progress : 在传输时显示传输过程

rsync还允许我们这样写:

1
rsync -r  -P 本地目录 root@服务器IP:服务器目录

参数解释:

  • -P :等价于--partial--progress

关于rsync目录排除不生效的问题

这种情况通常是目录路径不对的问题 比如:

1
rsync -r -P  --exclude=/root/songjian/auto  root@服务器IP:/root/songjian songjian

上面这种写法并不能正确排除目录 正确的写法应该如下:

1
rsync -r -P  --exclude=/songjian/auto  root@服务器IP:/root/songjian songjian

B站入口

打赏通道

本文为作者原创 转载时请注明出处 谢谢

微信公众号二维码如下:

img

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

0%