如何在 Linux 中上传大文件?

阅读:176 2025-03-10

1. 使用 SCP 上传大文件(适用于远程服务器)

SCP(Secure Copy)基于 SSH 进行文件传输,适用于单次安全拷贝。

基本命令:

scp largefile.tar.gz user@remote_ip:/target/directory/

优化方式:

  1. 启用压缩(加快传输速度):

    scp -C largefile.tar.gz user@remote_ip:/target/directory/
  2. 使用 -r 递归传输目录

    scp -r large_directory user@remote_ip:/target/directory/
  3. 限制带宽,防止影响其他网络任务

    scp -l 5000 largefile.tar.gz user@remote_ip:/target/directory/

    其中 -l 5000 表示限制速率为 5000 Kbit/s(约 625 KB/s)。

⚠️ 缺点: SCP 不能断点续传,网络中断时需要重新上传。


2. 使用 Rsync 上传大文件(支持断点续传)

rsync 是比 scp 更加强大的工具,支持增量同步和断点续传。

基本命令:

rsync -avP largefile.tar.gz user@remote_ip:/target/directory/

参数说明:

  • -a:保持文件权限、时间戳等

  • -v:显示详细信息

  • -P:显示进度,并支持断点续传

断点续传:

如果上传过程中断,可以重新运行相同的命令,无需重新开始:

rsync -avP largefile.tar.gz user@remote_ip:/target/directory/

📌 适用于: 需要断点续传、远程同步大量文件。


3. 使用 SFTP 交互式上传大文件

SFTP(Secure File Transfer Protocol)也是基于 SSH 进行安全传输的工具。

步骤:

  1. 连接远程服务器:

    sftp user@remote_ip
  2. 上传文件:

    put largefile.tar.gz /target/directory/
  3. 上传整个目录:

    put -r large_directory /target/directory/
  4. 断开连接:

    exit

📌 适用于: 需要手动管理文件传输的情况。


4. 使用 lftp 上传大文件(FTP/SFTP 自动化传输)

lftp 是一个支持 FTP 和 SFTP 的命令行工具,适合自动化上传大文件。

安装 lftp

sudo apt install lftp  # Ubuntu/Debian
yum install lftp  # CentOS/RHEL

上传文件:

lftp -u user,password sftp://remote_ip <<EOF
cd /target/directory/
put largefile.tar.gz
bye
EOF

📌 适用于: 需要自动化、批量化文件上传。


5. 使用 wget/curl 直接从远程服务器下载大文件

如果文件已存在于远程服务器,可以使用 wgetcurl 直接下载:

wget http://example.com/largefile.tar.gz -O /target/directory/largefile.tar.gz

curl -o /target/directory/largefile.tar.gz http://example.com/largefile.tar.gz

📌 适用于: 远程服务器上已有文件时。


总结:

方式适用场景主要优点主要缺点
SCP安全传输文件简单易用,适合小文件不能断点续传
Rsync需要断点续传高效增量同步需手动安装
SFTP交互式文件管理安全且可操作性强速度较慢
lftp自动化批量传输可脚本化、支持 FTP/SFTP需要额外安装
wget/curl远程服务器已有文件直接下载,不占本地带宽仅限已有的 HTTP/FTP 链接

根据实际需求选择合适的工具,可以提高 Linux 大文件上传的效率!


声明

1、部分文章来源于网络,仅作为参考。
2、如果网站中图片和文字侵犯了您的版权,请联系1943759704@qq.com处理!