如何通过 SSH 使用 Rsync 传输文件
当涉及在网络上的系统之间传输文件时, Linux 和 Unix 用户可以使用许多工具。
最流行的数据传输协议是 SSH 和 FTP 。虽然 FTP 很受欢迎,但使用 SSH 更有优势,因为它是传输文件最安全的方式。
有专门的工具通过 SSH 进行文件传输,比如 scp
, sftp
,但是没有一个具有 rsync
提供的所有功能。 rsync
可用于镜像数据,增量备份,在系统之间复制文件等。
在本教程中,我们将解释如何使用 rsync
复制文件。
要求
-
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]... [[email protected]]HOST:DEST
Remote to Local: rsync [OPTION]... -e ssh [[email protected]]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 [email protected]:/var/www/
该 -a
选项代表归档模式,它将递归同步目录,传输特殊和块设备,保留符号链接,修改时间,组,所有权和权限。
如果尚未设置无密码 SSH 登录到远程计算机,系统将提示您输入用户密码。
如果远程服务器上存在该文件,则该文件将被覆盖。如果要使用其他名称保存文件,请指定新名称:
rsync -a /opt/file.zip [email protected]:/var/www/file2.zip
要将数据从远程计算机传输到本地计算机,请使用远程位置作为源,将本地位置用作目标:
rsync -a [email protected]:/var/www/file.zip /opt/
使用 rsync
传输目录与传输文件相同。
重要的是要知道 rsync
使用尾部斜杠对源目录进行不同的处理 /
。当源目录具有尾部斜杠时, rsync
将仅将源目录的内容复制到目标目录。省略尾部斜杠时,源目录将复制到目标目录中。
例如,要将本地 /opt/website/images/
目录传输到 /var/www/images/
远程计算机上的目录,您可以键入:
rsync -a /home/linuxize/images/ [email protected]:/var/www/images/
如果要同步本地和远程目录,请使用此选项 --delete
。使用此选项时要小心,因为如果源目录中不存在文件,它将删除目标目录中的文件。
rsync -a --delete /home/linuxize/images/ [email protected]:/var/www/images/
如果远程主机上的 SSH 正在侦听默认端口 22
以外的端口,请使用该 -e
选项指定端口。例如,如果 SSH 正在侦听端口 3322
, 请运行:
rsync -a -e "ssh -p 3322" /home/linuxize/images/ [email protected]:/var/www/images/
传输大量数据时,建议在屏幕会话中运行 rsync
命令,或使用 -P
选项告诉 rsync
在传输过程中显示进度条并保留部分传输的文件:
rsync -a -P /home/linuxize/images/ [email protected]:/var/www/images/
结论
我们已经向您展示了如何使用 rsync
来复制和同步文件和目录。
您可能还需要阅读如何在 rsync
命令中排除的文件或目录 。