Linux服务器间文件传输指南
简介
在多台Linux服务器之间传输文件是日常运维中的常见任务。本指南将介绍四种常用工具:SCP、rsync、sftp和ftp,并提供详细的命令示例和安全建议。
1. 使用SCP传输文件
SCP(Secure Copy)基于SSH协议,提供加密的文件传输。大多数Linux系统默认安装OpenSSH客户端,包含scp命令。
基本语法
scp [选项] 源文件 用户名@目标主机:目标路径常用选项
-r:递归复制目录-P 端口号:指定SSH端口(大写的P)-i 密钥文件:指定私钥文件
示例
- 本地文件传输到远程服务器
- 远程文件下载到本地
- 递归复制目录
注意:SCP不支持断点续传,适用于一次性的小文件传输。
2. 使用rsync传输文件
rsync是一款高效的文件同步工具,支持增量传输、断点续传和压缩。常用于备份和镜像同步。
安装
确保两端服务器都已安装rsync:
sudo apt install rsync # Debian/Ubuntu
sudo yum install rsync # CentOS/RHEL基本语法
rsync [选项] 源路径 目标路径通过SSH传输时,使用用户名@主机:路径格式。
常用选项
-a:归档模式,保留权限、时间戳等-v:详细输出-z:传输时压缩--progress:显示传输进度--delete:删除目标端多余的文件
示例
- 本地到远程同步
- 远程到本地同步
- 使用SSH密钥和指定端口
提示:路径末尾的斜杠影响行为。源路径加斜杠表示复制目录内容,不加则复制目录本身。
3. 使用sftp传输文件
sftp是基于SSH的交互式文件传输协议,提供类似FTP的命令接口,但加密安全。
连接
sftp user@192.168.1.100默认端口22,若不同使用-oPort=端口号。
常用命令
| 命令 | 说明 |
|---|---|
ls | 列出远程目录 |
cd | 切换远程目录 |
get 文件 | 下载文件 |
put 文件 | 上传文件 |
get -r 目录 | 递归下载目录 |
put -r 目录 | 递归上传目录 |
exit | 退出sftp |
示例
sftp> get remote_file.txt
sftp> put local_file.txt
sftp> get -r remote_dir
sftp> put -r local_dir非交互式单次传输
可使用批处理模式:
echo 'get remote_file.txt' | sftp user@host4. 使用FTP传输文件(非加密)
FTP是传统文件传输协议,数据不加密,建议仅在信任网络中使用。现代系统推荐使用vsftpd或ProFTPD。
安装FTP服务器(以vsftpd为例)
sudo apt install vsftpd # Debian/Ubuntu
sudo yum install vsftpd # CentOS/RHEL启动服务:sudo systemctl start vsftpd
常用命令
客户端使用ftp命令连接:
ftp 192.168.1.100输入用户名和密码后,可使用类似sftp的命令:get、put、ls、cd等。
安全警告:FTP明文传输密码和数据,除非必要,否则请使用SCP、rsync或sftp。
5. 安全最佳实践
- 使用SSH密钥认证:避免密码登录,提高安全性。
- 限制IP和端口:通过防火墙仅允许信任IP访问SSH或FTP端口。
- 定期更新软件:保持OpenSSH、rsync等软件为最新版本。
- 避免使用FTP:优先选择加密传输的SCP、rsync或sftp。
- 使用rsync –delete谨慎:确保备份或同步目标正确,防止数据意外删除。
6. 总结
本文介绍了四种Linux服务器间文件传输方法。SCP适合快速单文件传输;rsync适合大数据同步和备份;sftp适合交互式操作;FTP仅用于旧系统或内部网络。根据需求选择合适工具,并始终注意安全。