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

在网络上的系统之间传输文件时,Linux和Unix用户可以使用很多工具。最受欢迎的数据传输协议是SSH和FTP

4 min read
By myfreax
如何通过SSH通过Rsync传输文件

在网络上的系统之间传输文件时,Linux和Unix用户可以使用很多工具。最受欢迎的数据传输协议是SSHFTP。尽管FTP非常流行,但始终首选使用SSH,因为它是传输文件的最安全方法。

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

在本教程中,我们将说明如何通过SSH使用rsync复制文件。包括在Linux安装rysnc命令,rsync默认使用ssh传输文件,rsync同步与复制文件语法与选项说明,在后台运行rsync,显示rsync同步和复制的进度,同步文件与目录。

要求

必须在目标系统和源系统上都安装rsync命令。如果尚未安装,则可以使用发行版的软件包管理器进行安装:

Ubuntu和Debian

sudo apt install rsync

CentOS和Fedora

sudo yum install rsync

SSH访问远程计算机。运行rsync命令的用户和远程SSH用户必须具有读写文件的权限。

通过SSH使用rsync传输文件

使用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/

通过rsync传输目录与传输文件相同。重要的是要知道rsync对源目录使用不同的处理方式,并在其后加一个斜杠/。当源目录带有斜杠时,rsync只会将源目录的内容复制到目标目录。如果省略斜杠,则源目录将被复制到目标目录中。

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

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

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

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

如果远程主机上的SSH端口不是在22进行监听,请使用-e选项指定端口。例如,如果SSH正在监听端口3322,则可以使用:

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

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

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

结论

我们向您展示了如何通过SSH使用rsync复制和同步文件和目录。您可能还想知道如何使用rsync将排除文件或目录。如有任何疑问,请随时发表评论。

Related Articles