Linux 中 rsync 命令的 10 个示例
rsync 命令是一个功能强大且多功能的工具,专为 Linux 环境中的高效文件同步而设计。无论您是系统管理员、开发人员还是只是 Linux 爱好者,利用 rsync 命令的功能都可以在很大程度上改进您的工作流程。在本文中,我们将引导您了解如何在 Linux 中使用 rsync 命令的一些实际示例。
如何在Linux系统中安装rsync
在讨论 Linux 中 rsync 命令的示例之前,让我们首先了解如何安装它。使用特定于您的Linux 发行版的命令来安装 rsync:
- 基于 Debian 的系统:
sudo apt install rsync
- 基于 CentOS 的系统:
sudo yum install rsync
Rsync Linux 命令语法和选项
rsync 命令的简单语法使其成为各类用户的理想选择。Linux命令中使用rsync命令的语法是:
rsync <options> <source_directory> <destination_directory>
在上面的语法中,<source_directory> 可以位于本地系统或远程主机上。同样,<destination_directory> 也可以位于本地系统或远程系统上。与 rsync 命令配对的一些选项包括:
选项 | 描述 |
---|---|
-z | 发送前压缩文件数据 |
-r | 递归搜索目录中丢失的数据 |
-A | 切换到存档模式并包括所有必要的选项,例如递归地保留文件权限、符号链接、文件所有权和文件时间戳 |
-v | 删除发件人系统上不存在的文件 |
-删除 | 删除发件人系统上不存在的文件 |
Linux中rsync命令的实例
抛开这些,让我们看一些如何在 Linux 系统上使用 rsync 命令的示例。
1. 同步本地文件系统上的目录
此场景是 rsync 最常见的用例之一。假设您的系统上有两个重复的文件夹,并且存在一些差异,并且您需要在比较它们之后同步它们。您可以使用 rsync 命令:
rsync <options> <source_directory> <destination_directory>
例如,如果您要同步源文件夹“src_local1”和目标文件夹“dest_local1”:
rsync -a -v src_local1/ dest_local1/
注意:如果需要保留目录内容的权限和所有权,请使用 -p(保留权限)和 -o(保留所有者)。
2. 同步本地文件系统上的文件
就像同步两个目录一样,您也可以使用 rsync 命令同步单个文件。要同步文件,请使用以下语法:
rsync <options> <source_file> <destination_file>
例如,要同步名为 test.txt 的文件,请使用以下命令:
rsync -a -v src_local1/test.txt dest_local1/
3. 将文件和目录从远程系统同步到本地系统
使用 rsync 命令,您甚至可以从本地系统复制/与远程系统同步。使用以下语法从远程系统复制文件:
rsync <options> <remote_username>@<remote_system_ip_address>:<remote_directory> <local_directory>
例如,如果您需要从名为“src_remote”的远程源目录传输到“dest_local”,请使用命令:
rsync -a -v [email protected]:~/src_remote1/ ~/dest_local/
4. 将文件和目录从本地系统同步到远程系统
就像您可以将文件从远程系统复制到本地计算机一样,您也可以使用 rsync 命令将文件从本地系统同步到您有权访问的远程系统:
rsync <options> <local_source> <remote_username>@<remote_destination_ip>:<remote_destination_directory>
例如,要将整个“src_local”本地源目录复制到远程系统中的“dest_remote”目录,请使用以下命令:
rsync -a -v ~/src_local1/ [email protected]:~/dest_remote1/
5. 同步后删除源文件
如果您需要在将源文件与目标同步后删除源文件,请添加 –remove-source-files 标志,如下所示:
rsync <options> --remove-source-files <source_file> <destination_file>
例如,从本地计算机复制到远程系统后删除文件“test.txt”的旧备份:
rsync -a --remove-source-files ~/src_local1/test.txt [email protected]:~/dest_local1/
6. 使用 Rsync 复制/同步时排除或仅包含某些文件/目录
要从同步中排除 rsync 的特定文件/目录,请使用 –exclude 标志,例如:
rsync <options> --exclude="<pattern_to_exclude>" <source> <destination>
要使用 rsync 命令包含某些文件类型,请使用 –include 标志,例如:
rsync <options> --include="<pattern_to_include>" <source> <destination>
例如,要排除所有 .txt 文件并包含 src_local1 目录中的所有 .py 文件:
rsync -a -v --exclude=*.txt --include=*.py ~/src_local1/ [email protected]:~/dest_local1/
7. 设置同步文件大小限制
您甚至可以使用 –max-size 标志限制允许 rsync 命令传输的最大文件大小:
rsync <options> --max-size='<size_limit' <source> <destination>
例如,如果您需要将复制的文件大小限制设置为1GB:
rsync -a -v --max-size='1G' ~/src_local1/ ~/dest_local1/
8. 设置同步带宽限制
如果您所在的网络对网络速度有限制,则可以将 –bwlimit 标志与 rsync 命令一起使用。请务必使用以下语法设置带宽(以 kbps 为单位):
rsync <options> --bwlimit=<bandwith_limit> <source> <destination>
例如,要将带宽设置为 100kbps,您可以使用 rsync 命令:
rsync -a -v --bwlimit='100' ~/src_local1/ ~/dest_local1/
9. 压缩数据并复制到目的地
有时您的网络状况较差,需要将数据从您的系统发送到不同的目标机器,您可以压缩数据然后发送。这将确保传输的总体数据量较低,即使在低速下也可以工作。要压缩数据,请在 rsync Linux 命令中使用 -z 标志:
rsync <options> -z <source> <destination>
例如,要压缩文件 test.txt 并将其发送到远程目标目录 ~/dest_remote1/:
rsync -a -v -z ~/src_local1/test.txt [email protected]:~/dest_remote1/
注意:在本地系统中传输文件时不要使用 -z 标志,这会使整个操作非常慢。
10. 显示当前传输进度
有时,在使用 rsync Linux 命令传输大文件时,您只能看到一个闪烁的光标,这让您不知道实际发生了什么。要显示当前传输的进度条,请在 rsync 命令中使用 –progress 标志:
rsync -a --progress ~/src_local1/ ~/dest_local1/
Rsync Linux 命令不起作用?怎么修!
当您需要使用 rsync 命令传输某些文件并遇到一些错误时,这是令人沮丧的。好吧,这里有一些常见的故障排除提示,用于修复 rsync 命令不起作用的问题:
1. 未找到rsync命令
有时,您可能会在 Linux 系统上遇到 rsync 命令未找到错误。这可能是由于错误安装了 rsync 软件包所致,因此请确保您的 Linux 系统已安装 rsync。如果没有,请使用适当的命令在您的发行版上安装 rsync 包。
2. 权限被拒绝
通常,当您尝试写入没有写入权限的目录时,会出现此错误。
3. rsync设置时间失败
当源计算机和目标计算机上的文件和目录的修改时间不同时,就会出现此类错误。这会导致修改时间冲突并最终导致错误。