在Linux系统中,有多种方法可以在两个服务器之间传输文件。以下是几种常见且高效的方式:
基于SSH协议的安全文件传输,适合中小文件。
# 从本地推送到远程服务器
scp /path/to/local/file username@remote_host:/path/to/remote/directory
# 从远程服务器拉取到本地
scp username@remote_host:/path/to/remote/file /path/to/local/directory
# 递归传输目录(-r)
scp -r /local/dir username@remote_host:/remote/dir
优点:简单、加密传输。
缺点:无法断点续传,大文件效率低。
增量同步工具,适合大文件或目录,支持断点续传和压缩。
# 基本用法(同步本地到远程)
rsync -avz /path/to/local/ username@remote_host:/path/to/remote/
# 从远程同步到本地
rsync -avz username@remote_host:/path/to/remote/ /path/to/local/
# 常用参数:
# -a:归档模式(保留权限、时间等)
# -v:显示进度
# -z:压缩传输
# --partial:保留部分传输的文件(断点续传)
优点:高效、支持增量同步和压缩。
缺点:命令参数较复杂。
交互式文件传输,适合需要浏览目录的场景。
sftp username@remote_host
# 进入交互界面后:
put /local/file /remote/dir # 上传
get /remote/file /local/dir # 下载
优点:交互式操作直观。
缺点:不适合脚本自动化。
挂载远程目录到本地,适合频繁访问的场景。
NFS示例(需配置服务端):
# 服务端导出目录(/etc/exports):
/export/dir client_ip(rw,sync)
# 客户端挂载:
mount -t nfs server_ip:/export/dir /local/mountpoint
优点:透明访问远程文件。
缺点:需额外配置权限和网络。
临时共享文件(需安装nginx
/vsftpd
等)。
# 快速用Python启动HTTP服务(临时测试):
python3 -m http.server 8000
# 另一台服务器用wget下载:
wget http://source_ip:8000/file
优点:无需认证时方便。
缺点:不安全,仅限内网临时使用。
直接通过SSH传输归档文件,适合大目录。
# 将本地目录打包后传输到远程
tar czf - /local/dir | ssh username@remote_host "tar xzf - -C /remote/dir"
# 反向操作(远程到本地)
ssh username@remote_host "tar czf - /remote/dir" | tar xzf - -C /local/dir
优点:结合压缩,节省带宽。
缺点:命令较长。
scp
或sftp
。rsync
。NFS/Samba
挂载。根据实际需求选择最适合的方式!