Linux 传输文件

Linux·工具 · 09-18

在 Linux 中,有多种方式可以用来传输文件。这里列出几种常见的方法:

SSH 文件传输(Secure Copy, scp)

scp 命令是一个基于 SSH 协议的文件拷贝工具。它可以用于主机之间的文件复制。

使用示例:

  • 将本地文件发送到远程服务器:

    scp /local/path/to/file user@remotehost:/remote/path/to/directory/
  • 从远程服务器获取文件:

    scp user@remotehost:/remote/path/to/file /local/path/to/directory/

SFTP(SSH File Transfer Protocol)

SFTP 是一个通过 SSH 进行文件传输的协议。你可以使用 sftp 命令或者图形界面工具如 FileZilla 来进行文件传输。

使用示例:

  • 使用命令行:

    sftp user@remotehost

    登录后,你可以使用 putget 命令来上传或下载文件。

FTP(File Transfer Protocol)

FTP 是一个较旧的文件传输协议,不过仍然被广泛支持。它不如 SFTP 安全,但在某些情况下可能有用。

rsync

rsync 是一个用于同步文件和目录的工具,常用于备份或在多个系统之间复制大量数据。

使用示例:

  • 同步本地目录到远程服务器:

    rsync -avz --progress /local/path/ user@remotehost:/remote/path/

其他方法

  • NFS (Network File System): 用于共享目录,适用于局域网内。
  • Samba/CIFS: 提供类似 Windows 文件共享的功能。
  • WebDAV: 通过 HTTP 或 HTTPS 访问文件系统。
  • 云存储服务: 如 Dropbox、Google Drive 等,虽然不是直接的 Linux 工具,但可以通过客户端或 API 与 Linux 系统集成来传输文件。

详细 rsync

rsync 是一个非常强大的命令行工具,用于文件的备份和同步。它最初设计是为了远程文件复制,但现在也被广泛用于在本地系统上进行文件同步。rsync 的强大之处在于其效率:它只传输两份文件之间的差异部分,而不是整个文件。

rsync 基本语法:

rsync [选项] 源 目标

常用选项:

  • -v(verbose):详细模式输出,显示同步过程中的详细信息。
  • -a(archive):归档模式,等同于 -rlptgoD ,即递归复制所有文件,并保持文件属性不变。
  • -r(recursive):递归处理,将目录内的文件与子目录一并处理。
  • -R:保留原始文件名的路径,主要用于处理符号链接。
  • -z:启用压缩,可以对传输的数据进行压缩,适用于带宽较小的情况。
  • -u(update):仅当源文件比目标文件新或目标文件不存在时才复制文件。
  • -t:保留符号链接,将源文件中的符号链接在目标文件中也创建为符号链接。
  • -p:保留源文件的权限模式。
  • -g:保留组ID。
  • -o:保留文件所有者。
  • -l:对符号链接进行特殊处理,直接复制链接而不是链接指向的文件。
  • -D:等同于 --devices --specials,用于保留块设备和字符设备等特殊文件。
  • -H:保留硬链接,对于源文件中的硬链接,同样在目标文件中创建硬链接。
  • -E--preserve-extended-attributes:保留扩展属性。
  • -A--acls:保留访问控制列表(ACL)。
  • -X--xattrs:保留扩展属性。
  • -P:等同于 -p -r
  • -S:按大小排序,而非按字母顺序。
  • -i:在发生更改时列出文件,在未指定 -v 时使用此选项会抑制其他输出。
  • -c:检查文件是否不同,根据校验和而不是文件时间戳。
  • -n(dry-run):执行一个预演,显示将会做什么,但不做实际操作。
  • -W:模拟FTP的镜像模式。
  • -e:指定远程shell程序,如 ssh。
  • -L:复制符号链接指向的目标文件。
  • --delete:删除目标目录中多余的文件以实现与源目录一致。
  • --delete-excluded:即使被排除规则匹配,也要删除目标端多余的文件。
  • --delete-after:在传输结束后删除多余的文件。
  • --progress:显示进度条。
  • --bwlimit:限制传输带宽。
  • --timeout:设置超时秒数。
  • --compress-level=NUM:指定压缩级别。

示例用法:

  1. 本地文件复制

    rsync -avzh /path/to/source /path/to/destination
  2. 远程文件复制

    rsync -avzhe ssh user@remote:/path/to/source /local/path/
  3. 排除某些文件或目录

    rsync -avz --exclude 'file.txt' --exclude '/folder/' /path/to/source /path/to/destination
  4. 同步两个目录

    rsync -avz --delete /path/to/source /path/to/destination

这些只是 rsync 的一部分功能和选项。要了解更多细节,可以查看 man rsync 或在线文档。

通义千问

仅同步增量

rsync -avzu  --progress /from/path user@ip:/path/to
linux rsync
Theme Jasmine by Kent Liao