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

时间:2020-03-05 15:27:33  来源:igfitidea点击:

在网络上的系统之间传输文件时,Linux和Unix用户可以使用许多工具。

最受欢迎的数据传输协议是SSH和FTP。

尽管FTP非常流行,但始终首选使用SSH,因为它是传输文件的最安全方法。

有专门的工具可以通过SSH进行文件传输,例如“ scp”和“ sftp”,但它们都不具有“ rsync”提供的所有功能。

“ rsync”可用于镜像数据,增量备份,在系统之间复制文件等等。

在本教程中,我们将说明如何通过SSH使用“ 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]... [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/

通过SSH传输带有“ rsync”的目录与传输文件相同。

重要的是要知道'rsync'给源目录以斜杠'/'的不同对待。
当源目录带有斜杠时,“ rsync”将仅将源目录的内容复制到目标目录。
当省略斜杠时,源目录将被复制到目标目录中。

例如,要将本地的“/opt/website/images /”目录转移到远程计算机上的“/var/www/images /”目录中,我们可以输入:

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

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

rsync -a --delete /home/theitroad/images/[email protected]:/var/www/images/

如果远程主机上的SSH正在侦听默认端口'22'以外的端口,请使用'-e'选项指定端口。

例如,如果SSH正在侦听端口“ 3322”,则可以使用:

rsync -a -e "ssh -p 3322" /home/theitroad/images/[email protected]:/var/www/images/

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

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