Rsync命令在Linux中的应用及实例
rsync
是一个快速和多功能的命令行工具,用于在两个地点之间通过远程shell同步文件和目录,或者从远程 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
在传输过程中显示一个进度条,并保留部分传输的文件。在通过缓慢或不稳定的网络连接传输大文件时,它很有用。--delete
.当使用这个选项时,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/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_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/
node_modules
tmp
总结
我们已经向您展示了如何使用Rsync来复制和同步文件和目录。在Rsync用户手册页,还有很多关于Rsync的知识可以学习。
如果您有任何问题,请随时留言咨询。