如何在Linux中通过SSH通过Rsync传输文件
当在网络上的系统之间传输文件时,Linux和Unix用户可以使用许多工具。
最受欢迎的数据传输协议是SSH和FTP。 尽管FTP非常流行,但始终首选使用SSH,因为它是传输文件的最安全方式。
有专门的工具可以通过SSH传输文件,例如 scp
和 sftp
但它们都不具有所有的功能 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]... [[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
从本地系统到 /var/www/
IP远程系统上的目录 12.12.12.12
您将运行:
rsync -a /opt/file.zip [email protected]:/var/www/
的 -a
option代表存档模式,它将递归同步目录,传输特殊设备和块设备,保留符号链接,修改时间,组,所有权和权限。
如果尚未设置无密码的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/linuxhowto/images/ [email protected]:/var/www/images/
使用 --delete
如果要同步本地和远程目录,请选择该选项。 使用此选项时要小心,因为如果源目录中不存在目标文件,它将删除目标目录中的文件。
rsync -a --delete /home/linuxhowto/images/ [email protected]:/var/www/images/
如果远程主机上的SSH正在侦听默认端口以外的端口 22
,使用 -e
选项。 例如,如果SSH正在侦听端口 3322
您将使用:
rsync -a -e "ssh -p 3322" /home/linuxhowto/images/ [email protected]:/var/www/images/
传输大量数据时,建议运行 rsync
在屏幕会话中命令或使用 -P
告诉的选项 rsync
在传输过程中显示进度条并保留部分传输的文件:
rsync -a -P /home/linuxhwoto/images/ [email protected]:/var/www/images/
结论
我们已经向您展示了如何使用 rsync
通过SSH复制和同步文件和目录。
您可能还想阅读如何使用以下方法排除文件或目录 rsync
。
如有任何疑问,请随时发表评论。