Linux中的Rsync命令与示例
“ rsync”是一种快速且通用的命令行实用程序,用于通过远程Shell或者从远程Rsync守护程序/到远程Rsync守护程序在两个位置之间同步文件和目录。
通过仅传输源和目标之间的差异,它提供了快速的增量文件传输。
Rsync可用于镜像数据,增量备份,在系统之间复制文件,并可替代'scp','sftp'和'cp'命令。
本文通过实际示例以及最常见的“ 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”在传输过程中显示进度条,并保留部分传输的文件。通过慢速或者不稳定的网络连接传输大文件时,此功能很有用。
- ' - 删除' 。使用此选项时,“ rsync”将从目标位置删除无关的文件。这对于镜像很有用。
- '-q','--quiet'。如果要禁止显示非错误消息,请使用此选项。
- '-e'此选项使我们可以选择其他远程shell程序。默认情况下,“ rsync”配置为使用ssh。
Rsync基本用法
“ rsync”最基本的用例是将一个文件从一个文件复制到另一个本地位置。
这是一个例子:
rsync -a /opt/filename.zip /tmp/
运行该命令的用户必须对源位置具有读取权限,而对目标必须具有写入权限。
从目标位置省略文件名将复制具有当前名称的文件。
如果要使用其他名称保存文件,请在目标部分上指定新名称:
rsync -a /opt/filename.zip /tmp/newfilename.zip
同步目录时,'rsync'才是真正的强大力量。
以下示例显示了如何创建文件的本地备份:
rsync -a /var/www/theitroad.com/public_html//var/www/theitroad.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/
当传输大量数据时,建议在 Screen会话中运行“ rsync”命令或者使用“ -P”选项:
rsync -a -P remote_user@remote_host_or_ip:/opt/media//opt/media/
排除文件和目录
有两个选项可以排除文件和目录。
第一种选择是使用“ --exclude”参数,并在命令行上指定要排除的文件和目录。
当排除文件或者目录时,我们需要使用它们到源位置的相对路径。
在以下示例中,显示了如何排除“ 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