linux主机之间传输文件方法

在 Linux 系统之间传输文件有多种方法,具体选择取决于网络环境、安全性需求、文件大小和操作习惯等因素。以下是常见的 15+ 种方法及简要说明:


一、基于 SSH 协议的工具(加密传输)

  1. scp (Secure Copy)

    1
    2
    3
    4
    5
    6
    7
    8
    # 上传文件到远程主机
    scp local_file user@remote_host:/path/to/destination

    # 下载远程文件到本地
    scp user@remote_host:/remote/file /local/path

    # 递归传输目录(-r)
    scp -r local_dir user@remote_host:/remote/path

    特点:简单直接,但无增量传输功能。

  2. rsync (增量同步)

    1
    2
    3
    4
    5
    # 同步本地目录到远程(-a 归档模式,-v 显示进度,-z 压缩)
    rsync -avz /local/path user@remote_host:/remote/path

    # 从远程同步到本地
    rsync -avz user@remote_host:/remote/path /local/path

    特点:高效增量传输,适合大文件或频繁更新的场景。

  3. sftp (SSH File Transfer Protocol)

    1
    2
    3
    4
    5
    6
    sftp user@remote_host
    # 交互式命令:
    put local_file # 上传文件
    get remote_file # 下载文件
    lls # 查看本地文件
    ls # 查看远程文件

    特点:交互式操作,适合手动管理文件。

  4. sshfs (挂载远程目录)

    1
    2
    3
    4
    # 将远程目录挂载到本地
    sshfs user@remote_host:/remote/path /local/mountpoint
    # 卸载
    fusermount -u /local/mountpoint

    特点:像操作本地文件一样访问远程文件。


二、基于网络协议的直接传输

  1. nc (netcat) + tar

    1
    2
    3
    4
    5
    # 接收端监听端口并解压
    nc -l -p 1234 | tar xzvf -

    # 发送端打包并发送
    tar czvf - /local/path | nc remote_host 1234

    特点:无需 SSH,适合临时快速传输,但无加密。

  2. HTTP 服务器

    1
    2
    3
    4
    5
    # 在发送端启动临时 HTTP 服务器(Python3)
    python3 -m http.server 8000

    # 接收端使用 wget 或 curl 下载
    wget http://sender_ip:8000/file

    特点:快速共享文件,适合内网环境。

  3. curlwget 上传文件

    1
    2
    # 使用 curl 上传到 HTTP 服务器(需接收端有服务器支持)
    curl -F "file=@local_file" http://remote_host/upload

    特点:依赖接收端的服务支持。

  4. ncftplftp (FTP 客户端)

    1
    lftp -e "put local_file; quit" ftp://user:password@remote_host

    特点:需配置 FTP 服务,明文传输,不建议敏感数据。


三、共享文件系统

  1. NFS (Network File System)

    1
    2
    # 配置 NFS 服务器后,客户端挂载
    mount -t nfs remote_host:/shared/path /local/mountpoint

    特点:适合长期共享,需配置权限。

  2. Samba/CIFS

    1
    2
    # 挂载 Windows/Linux 共享目录
    mount -t cifs //remote_host/share /local/mountpoint -o user=username

    特点:跨平台兼容,适合混合环境。


四、其他工具与技巧

  1. tar 管道 + SSH

    1
    2
    # 压缩传输目录到远程并解压
    tar czf - /local/dir | ssh user@remote_host "tar xzf - -C /remote/path"

    特点:灵活处理大目录,无需临时存储。

  2. bbcp (高性能文件拷贝)

    1
    bbcp -v -s 10 local_file user@remote_host:/remote/path

    特点:高速传输大文件,需单独安装。

  3. 云存储中转(如 AWS S3、MinIO)

    1
    2
    3
    4
    # 上传到云存储
    aws s3 cp local_file s3://bucket/path
    # 从云存储下载
    aws s3 cp s3://bucket/path/remote_file .

    特点:依赖第三方服务,适合跨地域传输。

  4. 邮件附件

    1
    2
    # 使用 mutt 发送文件
    echo "Body" | mutt -a file_to_send -s "Subject" recipient@example.com

    特点:适合小文件,依赖邮件服务。


五、图形化工具

  1. FileZilla (SFTP 客户端)
    特点:可视化操作,支持拖拽上传。

  2. Syncthing (P2P 同步)
    特点:去中心化,自动同步多台设备。


选择建议

  • 安全性优先:使用 scp/rsync/sftp(基于 SSH)。
  • 大文件或增量同步:优先选择 rsync
  • 临时快速共享:HTTP 服务器或 nc
  • 长期共享:NFS/Samba。
  • 跨平台传输:Samba 或云存储。