如何通过 SSH 使用 Rsync 传输文件

评论 0 浏览 0 2019-08-20

当涉及到在网络系统之间传输文件时,Linux 和 Unix 用户可以使用很多工具。

最流行的数据传输协议是 SSH 和 FTP 。虽然 FTP 非常流行,但始终更喜欢使用 SSH,因为它是传输文件的最安全方式。

有一些专门的工具用于通过 SSH 进行文件传输,例如 scpsftp 但它们都不具备 rsync 提供的所有功能。 rsync可用于数据镜像、增量备份、系统间复制文件等。

在本教程中,我们将解释如何使用 rsync 通过 SSH。

要求

  • rsync 实用程序必须安装在目标系统和源系统上。如果未安装,您可以使用发行版的包管理器安装它:

    Ubuntu 和 Debian:

    sudo apt install rsync

    CentOS 和 Fedora:

    sudo yum install rsync
  • 通过 SSH 访问远程计算机。

  • 运行rsync命令的用户和远程SSH用户必须具有适当的权限来读取和写入文件。

使用rsync通过SSH传输文件

使用rsync,您可以通过 SSH 在远程服务器之间传输文件和目录。

使用rsync传输文件的一般语法如下:

Local to Remote: rsync [OPTION]... -e ssh [SRC]... [USER@]HOST:DEST
Remote to Local: rsync [OPTION]... -e ssh [USER@]HOST:SRC... [DEST]

其中SRC是源目录,DEST是目标目录USER是远程SSH用户名,HOST是远程SSH主机或IP地址。

较新版本的 rsync 配置为使用 SSH 作为默认远程 shell,因此您可以省略 -e ssh 选项。

例如,要将单个文件 /opt/file.zip 从本地系统传输到具有 IP 12.12.12.12 的远程系统上的 /var/www/ 目录,您将运行:

rsync -a /opt/file.zip user@12.12.12.12:/var/www/

-a 选项代表存档模式,它将递归同步目录、传输特殊设备和块设备、保留符号链接、修改时间、组、所有权和权限。

如果您尚未设置无密码 SSH 登录 到远程计算机时,系统将提示您输入用户密码。

如果该文件存在于远程服务器上,它将被覆盖。如果您想以不同的名称保存文件,请指定新名称:

rsync -a /opt/file.zip user@12.12.12.12:/var/www/file2.zip

要将数据从远程传输到本地计算机,请使用远程位置作为源,使用本地位置作为目标:

rsync -a user@12.12.12.12:/var/www/file.zip /opt/

通过 SSH 使用 rsync 传输目录与传输文件相同。

重要的是要知道 rsync 对带有尾部斜杠 / 的源目录进行不同的处理。当源目录尾部有斜杠时,rsync 将仅将源目录的内容复制到目标目录。当省略尾部斜杠时,源目录将被复制到目标目录中。

例如,要将本地 /opt/website/images/ 目录传输到远程计算机上的 /var/www/images/ 目录,您可以键入:

rsync -a /home/linuxize/images/ user@12.12.12.12:/var/www/images/

如果要同步本地和远程目录,请使用--delete选项。使用此选项时要小心,因为如果源目录中不存在文件,它将删除目标目录中的文件。

rsync -a --delete /home/linuxize/images/ user@12.12.12.12:/var/www/images/

如果远程主机上的 SSH 正在监听 在默认 22 以外的端口上,使用 -e 选项指定端口。例如,如果 SSH 正在侦听端口 3322,您将使用:

rsync -a -e "ssh -p 3322" /home/linuxize/images/ user@12.12.12.12:/var/www/images/

传输大量数据时,建议在screen会话中运行rsync命令 或使用-P选项告诉rsync在传输过程中显示进度条并保留部分传输的文件:

rsync -a -P /home/linuxize/images/ user@12.12.12.12:/var/www/images/

结论

我们向您展示了如何通过 SSH 使用 rsync 来复制和同步文件和目录。

您可能还想了解如何排除文件或目录rsync

如果您有任何疑问,请随时发表评论。

最后更新2023-10-04
0 个评论
标签