Rsync命令在Linux中的应用及实例

评论 0 浏览 0 2018-07-04

rsync是一个快速和多功能的命令行工具,用于在两个地点之间通过远程shell同步文件和目录,或者从远程 Rsync 守护进程同步文件和目录。它提供快速的增量文件传输,只传输源文件和目标文件之间的差异。

Rsync可用于镜像数据、增量备份、在系统间复制文件,并可替代scpsftpcp命令。

本文通过实际例子和对最常见的rsync选项的详细解释,解释了如何使用rsync

安装Rsync系统

大多数Linux发行版和MacOS上都预装了rsync工具。如果你的系统上没有安装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]... [USER@]HOST:DEST
Remote to Local: rsync [OPTION]... [USER@]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最基本的使用情况是将一个文件从一个地方复制到另一个地方。下面是一个例子。

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

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

从目标位置省略文件名,就可以用当前的名字复制文件。如果你想用不同的名字保存文件,在目的地部分指定新的名字。

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

rsync的真正威力来自于同步目录。下面的例子显示了如何创建一个网站文件的本地备份。

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

如果目标目录不存在,rsync 将会创建它。

值得一提的是,rsync对带有尾部斜线的源目录(/)给予不同的处理。如果源目录有尾部斜杠,该命令将只把目录内容复制到目标目录中。当省略尾部斜线时,rsync将源目录复制到目标目录内。

使用rsync从/向远程计算机同步数据

当使用rsync远程传输数据时,必须在源计算机和目标计算机上都安装该软件。新版本的rsync被配置为使用SSH作为默认的远程shell。

在下面的例子中,我们正在将一个目录从本地机器转移到远程机器。

rsync -a /opt/media/ remote_user@remote_host_or_ip:/opt/media/

如果你没有设置无密码SSH登录到远程机器,你将会被要求输入用户密码。

要把数据从远程传输到本地机器,要把远程位置作为一个源头。

rsync -a remote_user@remote_host_or_ip:/opt/media/ /opt/media/

如果远程主机上的SSH是在默认的22以外的端口上监听的,则使用-e选项指定该端口。

rsync -a -e "ssh -p 2322" /opt/media/ remote_user@remote_host_or_ip:/opt/media/

当传输大量数据时,建议在屏幕会话中运行rsync命令,或使用-P选项。

rsync -a -P remote_user@remote_host_or_ip:/opt/media/ /opt/media/

排除文件和目录

有两个选项可以排除文件和目录。第一个选项是使用--exclude参数,并在命令行中指定你要排除的文件和目录。

排除文件或目录时,你需要使用它们与源位置的相对路径。

在下面的例子中显示了如何排除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/
/exclude-file.txt
node_modules
tmp

总结

我们已经向您展示了如何使用Rsync来复制和同步文件和目录。在Rsync用户手册页,还有很多关于Rsync的知识可以学习。

如果您有任何问题,请随时留言咨询。

最后更新2023-09-24
0 个评论
标签