在两台 Linux 之间传输文件

 

2020-01-26

在工作中常常遇到需要在两台服务器之间临时共享文件,而借助 SCPSFTP 两个命令便可以无需借助第三方客户端的情况下实现文件传输。

SCP

SCP(Secure Copy Program) 是一种基于 BSD RCP 协议的网络传输协议,用于取代旧的 rcp 命令。

  • 从本机上传到远程主机
    • scp 本地文件 用户名@IP:保存文件目录
  • 从远程主机下载到本机
    • scp 用户名@IP:远程文件 本地保存文件目录
Terminal window
1
# 上传本机 test 文件到服务器 root 目录下
2
scp ~/Desktop/test.md [email protected]:/root
3
# 从服务器下载 test 文件到本机 Desktop 目录
4
scp [email protected]:/root/test.md ~/Desktop

参数

  • -P:指定端口;
  • -p:保留文件信息;
  • -r:以递归方式复制;

SFTP

SFTP(Secure FTP)同样也是基于 SSH 加密通道进行传输,不过它提供了一个交互式命令进行操作。

Terminal window
1
# 连接远程服务器
3
# 下载文件到当前目录,递归使用 -r 参数
4
sftp> get hi.md
5
# 上传文件到 /root 目录
6
sftp> put hi.md

命令

  • 切换目录:cd
  • 删除文件:rm
  • 查看当前所在目录:pwd
  • 列出当前目录文件:ls
  • 退出:exit

注:命令前加 l 表示查看本地,比如查看本地所在目录 lpwd

从 Linux 向 Windows 传输文件

在 Linux 和 Linux 之间传输文件还是比较方便,无需第三方客户端便可实现,不过当涉及到 Windows 就比较麻烦了;但如果只是向 Windows 单方向传送文件,还是有个小技巧可以实现的,即借用 Python 内置的 HTTP 服务器:SimpleHTTPServer

Terminal window
1
# 在需要传送的目录执行
2
python -m SimpleHTTPServer 8081

然后在 Windows 中用浏览器打开 服务器IP:8081 页面即可下载,不过如果是文件夹最好提前压缩好比较方便。