Rsync 概念和基本用法
Rsync是一种快速且通用的命令行实用程序,可通过远程外壳或远程Rsync守护程序在两个位置之间同步文件和文件夹。 它仅通过传输源和目标之间的差异来提供快速的增量文件传输。
Rsync可以用于镜像数据、增量备份、在系统之间复制文件,还可以替代日常使用的scp、sftp和cp命令。
在本教程中,我们将通过实际示例和最常见的rsync选项的详细说明来展示如何使用rsync
安装Rsync
大多数Linux发行版和macOS都预先安装了rsync实用程序。您可以通过键入来检查它是否安装在您的系统上。(最小化安装中并没有该工具)请使用以下命令判断是否安装了了Rsync
# rsync --version rsync version 3.1.2 protocol version 31 #安装过输出是这种
如果您的系统上没有安装rsync,您可以使用您的发行版包管理器轻松地安装它
在Ubuntu and Debian系统上使用:
sudo apt install rsync
在CentOS and Fedora系统上使用:
sudo yum install rsync
Rsync命令语法
本地到本地: rsync [OPTION]... [SRC]... DEST
本地到远程: rsync [OPTION]... [SRC]... [USER@]HOST:DEST
远程到本地: 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. 此选项使您可以选择其他远程外壳。 默认情况下,rsync配置为使用ssh。
-v , --verbose 详细的输出信息
--password-file=FILE ,从 FILE文件中读取密码
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进行远程传输时,它必须同时安装在源服务器和目标服务器上。新版本的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参数,并在命令行上指定要排除的文件和目录。
在以下示例中,我们将排除src_directory目录下的的node_modules和tmp目录
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的内容。
共有 0 条评论