在两台服务器之间通过 FTP 进行文件传输,通常有几种常见的方法,选择哪种方法取决于你的操作系统(Linux/Windows)、是否安装特定工具以及你对安全性的要求。
以下是几种最常用且高效的方案:
使用 lftp 命令行工具(推荐 Linux 服务器)
lftp 是一个功能强大的命令行 FTP 客户端,支持断点续传、镜像同步和后台运行,非常适合服务器之间的自动化传输。
安装 lftp
# CentOS/RHEL sudo yum install lftp # Ubuntu/Debian sudo apt-get install lftp
基本用法
假设你要从 源服务器 A 向 目标服务器 B 传输文件:
-
传输单个文件:
lftp -u username,password ftp://ip_of_server_b -e "put local_file_path; exit"
-
传输整个目录(镜像同步):
# 将本地目录 /data/upload 同步到远程服务器的 /backup/upload lftp -u username,password ftp://ip_of_server_b -e "mirror -R /data/upload /backup/upload; exit"
-R表示上传(Reverse,即从本地到远程)。- 如果省略
-R,则是下载。
高级技巧:后台运行
使用 nohup 防止 SSH 断开后传输中断:
nohup lftp -u user,pass ftp://server_b_ip -e "mirror -R /local/dir /remote/dir; exit" > transfer.log 2>&1 &
使用 curl 命令行工具(通用性强)
curl 几乎在所有 Linux 发行版中都预装,无需额外安装软件。
上传文件到远程服务器
curl -T /path/to/local/file ftp://username:password@remote_server_ip/remote/path/
下载文件到本地
curl -O ftp://username:password@remote_server_ip/path/to/remote/file
传输整个目录(需要配合 find 或 tar)curl 本身不支持直接递归上传目录,通常建议先打包再传输:
# 1. 打包 tar -czvf backup.tar.gz /path/to/local/dir # 2. 上传压缩包 curl -T backup.tar.gz ftp://username:password@remote_server_ip/backup/ # 3. 在远程服务器解压(需 SSH 登录远程服务器执行) ssh user@remote_server_ip "tar -xzvf /backup/backup.tar.gz -C /destination/dir/"
使用 ncftp 或 ftp 命令(传统方式)
如果服务器上没有 lftp 或 curl,可以使用标准的 ftp 命令,但交互性较强,不适合脚本自动化。
ftp remote_server_ip # 输入用户名和密码 # 使用 binary 模式(推荐用于非文本文件) binary # 上传 put local_file remote_file # 或上传目录 mput # 退出 bye
注意: 标准
ftp协议是明文传输,密码和数据容易被窃听,如果在公网传输,强烈建议使用 SFTP 或 FTPS。
使用 SFTP(更安全,推荐)
虽然你问的是 FTP,但在服务器间传输,SFTP (SSH File Transfer Protocol) 是更安全、更常用的选择,因为它基于 SSH 协议,加密传输。
使用 scp 命令(最简单)
# 上传 scp -r /local/dir user@remote_ip:/remote/dir/ # 下载 scp -r user@remote_ip:/remote/dir/ /local/dir/
使用 rsync 命令(最高效,支持断点续传和增量同步)
# 上传 rsync -avz /local/dir/ user@remote_ip:/remote/dir/ # 下载 rsync -avz user@remote_ip:/remote/dir/ /local/dir/
-a:归档模式,保留权限、时间戳等。-v:显示详细过程。-z:压缩传输。
图形化工具(适合 Windows 或桌面环境)
如果服务器有桌面环境,或者你从本地电脑操作:
- WinSCP (Windows):支持 FTP 和 SFTP,界面友好,可拖拽文件。
- FileZilla (跨平台):支持 FTP/SFTP,可配置站点管理器。
- FlashFXP (Windows):老牌 FTP 客户端。
安全建议
- 优先使用 SFTP/SCP/RSYNC over SSH:FTP 协议不加密,密码和文件内容在网络中是明文,如果两台服务器在同一内网,可以使用 FTP;如果在公网,请务必使用 SFTP。
- 使用密钥认证:避免在命令行中明文输入密码(如
curl -u user:pass),建议使用 SSH 密钥对进行免密登录,更安全。 - 限制 FTP 用户权限:如果必须使用 FTP,请为传输创建专用账户,并限制其只能访问特定目录(Chroot Jail)。
总结推荐
| 场景 | 推荐工具 | 理由 |
|---|---|---|
| Linux 服务器间,需自动化/脚本 | rsync 或 lftp |
高效、支持断点续传、可脚本化 |
| Linux 服务器间,简单快速 | scp 或 curl |
无需安装额外软件,命令简洁 |
| 公网传输,重视安全 | sftp / scp / rsync over SSH |
加密传输,防止窃听 |
| Windows 服务器间 | WinSCP / FileZilla | 图形界面,操作直观 |
请根据你的具体环境选择最合适的方法,如果需要更详细的命令示例,请提供你的操作系统和具体需求(如:是否需加密、是否大文件等)。
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/482444.html



