如何通过 SSH 使用 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 [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通过 SSH传输目录与传输文件相同。

重要的是要知道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/

当传输大量数据的建议先开启使用Screen会话,在Screen会话中运行rsync命令。使用-P选项,告诉rsync以显示传输过程中的进度条和保持部分传送的文件:

rsync -a -P /home/linuxize/images/ [email protected]:/var/www/images/

结论

我们已经向您展示了如何使用rsyncSSH 来复制和同步文件和目录。

您可能还需要阅读如何排除的文件或目录 用rsync

实例演示:

在目标服务器上创建用户名rsyncuser,并在目标主机对应目录赋予权限:

useradd rsyncuser

echo 'R0KhFdxKSgOEelTQIs4HMa28' | passwd --stdin rsyncuser

setfacl -R -m user:rsyncuser:rwx  /www/wwwroot/soft.l-t.top/

使用rsync命令将本地/www/wwwroot/soft.l-t.top/内容,发送到[email protected]的服务器上,ssh端口是16926端口

rsync -avzP --delete -e "ssh -p 16926" /www/wwwroot/soft.l-t.top/ [email protected]:/www/wwwroot/soft.l-t.top/

rsync -avzP --delete -e "ssh -p 16926" /www/wwwroot/soft.l-t.top/ [email protected]:/www/wwwroot/soft.l-t.top/ --password-file=/root/rsync.passwd  #带密码文件没测试成功


参考文章

https://linuxize.com/post/how-to-transfer-files-with-rsync-over-ssh/

版权声明:
作者:WaterBear
链接:https://l-t.top/1678.html
来源:雷霆运维
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>