如何使用Rsync进行本地和远程数据传输和同步

linux

Rsync是一种快速同步的命令,用于在两个计算机之间同步文件和文件夹。它仅通过传输源和目标之间的差异来提供快速的增量文件传输。Rsync可用于镜像数据,增量备份,在系统之间复制文件,可替代scpsftpcp日常等使用的命令。

在本教程中,我们将通过实际示例和最常见的rsync选项的详细说明,向您展示如何使用rsync。这其中包括在Ubuntu,Debian,CentOS,Fedora等Linux发行版上安装Rsync,Rsync命令语法以及选项说明,使用Rsync在远程计算机之间同步数据,排除文件和目录。

安装Rsync

rsync命令已预安装在大多数Linux发行版和macOS中。您可以通过键入以下内容来检查它是否已安装在系统上:

rsync --version
rsync  version 3.1.2  protocol version 31

如果您的系统上未安装rsync,则可以使用发行版的软件包管理器轻松安装。

在Ubuntu和Debian上安装Rsync

sudo apt install rsync

在CentOS和Fedora上安装Rsync

sudo yum install rsync

Rsync命令语法

在讨论如何使用rsync命令之前,让我们先回顾一下基本语法。

rsync实用程序表达式采用以下形式:

Local to Local:  rsync [OPTION]... [SRC]... DEST

Local to Remote: rsync [OPTION]... [SRC]... [[email protected]]HOST:DEST

Remote to Local: rsync [OPTION]... [[email protected]]HOST:SRC... [DEST]

  • OPTION- rsync选项。
  • SRC -源目录。
  • DEST -目标目录。
  • USER -远程用户名。
  • HOST -远程主机名或IP地址。

rsync提供了许多控制其行为各个方面的选项。最广泛使用的选项是:

  • -a--archive,存档模式,等效于-rlptgoD。此选项告诉rsync递归同步目录,传输特殊设备和块设备,保留符号链接,修改时间,组,所有权和权限。
  • -z--compress。此选项将强制rsync在数据发送到目标计算机时对其进行压缩。仅当与远程计算机的连接速度较慢时才使用此选项。
  • -P,等效于--partial --progress。使用此选项时,rsync将在传输过程中显示进度条并保留部分传输的文件。通过慢速或不稳定的网络连接传输大文件时很有用。
  • --delete。使用此选项时,rsync将从目标位置删除关的文件。对于镜像很有用。
  • -q--quiet。如果要禁止显示非错误消息,请使用此选项。
  • -e。此选项使您可以选择其他远shell程序。默认情况下,rsync配置为使用ssh。

基本Rsync使用

要将单个文件从一个文件复制到另一个本地位置,请运行以下命令:

rsync -a /opt/filename.zip /tmp/

运行命令的用户必须对目标位置具有读取权限,并且对目标具有写入权限。

从目标位置省略文件名会保留当前文件名称。如果要使用其他名称保存文件,请在目标部分指定新名称:

rsync -a /opt/filename.zip /tmp/newfilename.zip

在以下示例中,我们将创建网站文件的本地备份:

rsync -a /var/www/domain.com/public_html/ /var/www/domain.com/public_html_backup/

如果目标目录不存在,将会自动创建。值得一提的是rsync对源目录使用不同的处理方式,并在其后加上斜杠/。如果在源目录上添加斜杠,它将仅将目录的内容复制到目标目录。如果省略了斜杠rsync,则会将源目录复制到目标目录中。

使用Rsync在远程计算机之间同步数据

当使用rsync进行远程传输时,必须将其安装在源计算机和目标计算机上。新版本的rsync被配置为使用SSH作为默认的远程shell。在以下示例中,我们将目录从本地计算机传输到远程计算机:

rsync -a /opt/media/ [email protected]_host_or_ip:/opt/media/

如果您尚未为远程计算机设置无密码SSH登录,则会要求您输入用户密码。

如果要将数据从远程传输到本地计算机,则需要使用远程位置作为源:

rsync -a [email protected]_host_or_ip:/opt/media/ /opt/media/

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

rsync -a -e "ssh -p 2322" /opt/media/ [email protected]_host_or_ip:/opt/media/

当传输大量数据或者大文件时,建议在screen,nohup,tmux中运行rsync命令或使用-P选项:

rsync -a -P [email protected]_host_or_ip:/opt/media/ /opt/media/

排除文件和目录

当你要排除文件或目录时,您需要使用它们到源位置的相对路径。有两个选项可以排除文件和目录。第一种选择是使用--exclude参数,并在命令行上指定要排除的文件和目录。

在以下示例中,我们排除了src_directory内部的node_modulestmp目录:

rsync -a --exclude=node_modules --exclude=tmp /src_directory/ /dst_directory/

第二个选项是使用--exclude-from参数并指定一个文件,该文件包含要排除的目录于文件的路径。

rsync -a --exclude-from='/exclude-file.txt' /src_directory/ /dst_directory/
node_modules

tmp

/exclude-file.txt

结论

在本教程中,您学习了如何使用Rsync复制和同步文件和目录。在 Rsync用户手册页上,还有很多关于Rsync的知识。如有任何疑问,请随时发表评论。

以上是 如何使用Rsync进行本地和远程数据传输和同步 的全部内容, 来源链接: utcz.com/z/507140.html

回到顶部