Rsync命令用法指南介绍
Rsync 或远程同步,是一种免费的命令行工具,可让你将文件和目录传输到本地和远程目标。Rsync 用于镜像、执行备份或将数据迁移到其他服务器。
此工具快速高效,仅复制源中的更改并提供自定义选项。
Linux如何使用Rsync命令?按照本教程学习如何使用 rsync 和 20 个命令示例来涵盖 Linux 中的大多数用例。
先决条件
- 具有sudo或root权限的用户
- 访问终端/命令行
- 远程 rsync 示例的 SSH 访问
Rsync 命令语法
rsync
命令的语法根据工具的使用而变化。我们将在以下示例中涵盖所有场景。最基本形式的 Rsync 语法如下所示:
rsync options SOURCE DESTINATION
远程数据传输要求你指定主机地址,稍后会详细介绍。
Rsync选项
rsync 工具带有许多选项。你可以rsync
在终端中输入并获取所有详细信息。我们将列出一些最常见的 rsync 选项。
这些包括:
-r | 允许递归同步数据,但不保留用户和组的所有权、权限、时间戳或符号链接。 |
-a | 归档模式的行为类似于递归模式,但保留所有文件权限、符号链接、文件所有权等。 |
-z | 用于在传输过程中压缩数据以节省空间。 |
-b | 在数据同步期间执行备份。 |
-h | 以人类可读的格式显示输出中的数字。 |
-n | 进行试运行。用于在实际同步发生之前进行测试。 |
-e | 指示 rsync 使用 SSH 协议进行远程传输。 |
-progress | 显示同步期间的传输进度。 |
-v | 详细输出。显示传输的详细信息。 |
-q | 用于抑制 rsync 命令和选项的输出。 |
Rsync 命令示例
Rsync 是一种多功能同步工具,你可以对其进行自定义以适合你的特定用途。在本指南中,我们将在需要时使用存档( -a
)和详细( -v
)选项。
请参阅下面的 rsync 示例以涵盖大部分 rsync 用法。
注意:同步目录时,请注意如何在源路径中使用尾部斜杠。小径起着重要的作用。如果在源上输入尾部斜杠,则该rsync
命令不会在目标上创建源文件夹;它只复制目录的文件。当你不使用尾部斜杠时,rsync 还会在目标目录中创建原始目录。
1.本地复制单个文件
Linux如何使用Rsync命令?要将一个文件复制到本地机器上的另一个目录,请输入源文件的完整路径,然后是目标目的地。
例如:
rsync -v /home/test/Desktop/sample.txt /home/test/Desktop/rsync/
该命令将sample.txt文件传输到rsync目录。如果目标目录不存在,请在末尾添加一个斜杠,rsync 将创建它,就像我们的示例中的情况。
如果要从当前工作目录复制文件,可以输入文件名,而不是完整路径。
2.本地复制多个文件
Rsync命令用法指南:要使用 rsync 复制多个文件,请添加源文件的完整路径:
rsync -v /home/test/Desktop/sample.txt /home/test/Desktop/sample2rs.txt /home/test/Desktop/rsync
你应该对少量文件使用此方法。如果列表较大,你可以参考--exclude
选项。
3.本地复制一个目录和所有子目录(递归复制文件和目录)
Rsync命令用法示例:要将目录及其内容复制到机器上的另一个位置,请使用-a
或-r
选项。我们使用了存档 选项:
rsync -av /home/test/Desktop/Linux /home/test/Desktop/rsync
上面的例子展示了如何将Linux目录复制到rsync目录。请注意,我们没有在Linux之后使用尾部斜杠。因此,rsync 工具在rsync目录中创建了Linux目录及其内容。
4. 将文件或目录从本地复制到远程机器
要复制目录的/ home /测试/桌面/ Linux的到的/ home /测试/桌面/ rsync的远程机器上,你需要指定目的地的IP地址。
在源目录后添加 IP 地址和目标。请记住:
在远程主机的 IP 地址后放置一个冒号 ( ),目标前没有空格。
该命令如下所示:
rsync -av /home/test/Desktop/Linux 192.168.56.100:/home/test/Desktop/rsync
输入当前用户的密码以继续。如果要使用其他帐户进行远程连接,请在 IP 地址前指定:
rsync -a /home/test/Desktop/Linux jay@192.168.56.100:/home/test/Desktop/rsync
要将单个文件复制到远程主机,请指定文件的完整路径和目标。
例如:
rsync -av /home/test/Desktop/sample_file.txt 192.168.56.100:/home/test/Desktop/rsync
5. 将多个文件或目录从本地复制到远程机器
类似于在本地复制数据,列出要复制到远程服务器的多个文件或多个目录路径。遵循与复制单个文件或目录相同的语法。
例如:
rsync -av /home/test/Desktop/Linux/ /home/test/Music 192.168.56.100:/home/test/Desktop/rsync
6. 为远程传输指定 rsync 协议
Rsync命令用法指南:可以通过-e
选项指示 rsync 工具使用特定协议进行文件传输。要通过 SSH使用Rsync 远程传输文件,请附加-e ssh
到rsync
命令。
例如,要将sample.txt从你的桌面传输到远程计算机的桌面:
rsync -e ssh /home/test/Desktop/sample.txt 192.168.56.100:/home/test/Desktop
7. 将文件或目录从远程复制到本地机器
Rsync 支持将文件从远程服务器传输到本地计算机。
Rsync命令用法示例:要从服务器拉取目录,请在源之前指定其 IP 地址。
例如:
rsync -av 192.168.56.100:/home/test/Desktop/DirM /home/test/Desktop
此命令将DirM目录从 192.168.56.100复制到本地服务器上的/home/test/Desktop。
要从远程主机复制特定文件,请输入源文件的完整路径和本地计算机上的目标。例如:
rsync -v 192.168.56.100:/home/test/Desktop/testfile.txt /home/test/Desktop
8. 将多个文件或目录从本地复制到远程机器
Linux如何使用Rsync命令?要从远程服务器传输多个文件或多个目录,请在服务器的 IP 地址后使用大括号列出路径。用逗号分隔路径。
例如:
rsync -av 192.168.56.100:{/home/test/Desktop/DirM,/home/test/Desktop/Dir1} /home/test/rsync
文件也是如此。在大括号内列出你需要的尽可能多的文件。
9. 在数据传输期间显示 rsync 进度
执行大数据备份时,你可能希望查看传输进度。
--progress
在rsync
命令中添加标志以查看传输的数据量、传输速度和剩余时间。
例如,要将Dir1备份到远程服务器并显示进度,请输入:
rsync -av --progress /home/test/Desktop/Dir1 192.168.56.100:/home/test/Desktop/rsync
10. 从目标中删除不存在的源文件或目录
使用该--delete
选项使源和目标保持同步。
这个选项告诉 rsync 删除目标上的任何文件或目录,如果源没有它。
rsync -av --delete /home/test/Desktop/Dir1 192.168.56.100:/home/test/Desktop/rsync
11. 传输后删除源文件
在某些情况下,你可能希望在传输后删除源文件。例如,你可能要将每周备份移动到新服务器。传输完成后,你不再需要旧服务器上的源文件。
在这种情况下,请使用该--remove-source-files
标志删除你指定的源文件。
例如,此命令传输备份文件 weekly.zip,然后从源中删除它:
rsync -v --remove-source-files /home/test/backup/weekly.zip 192.168.56.100:/home/test/Desktop/rsync/
12. Rsync 试运行
Rsync 是一个强大的同步工具。由于此工具允许你复制和删除数据,因此我们建议你先进行试运行以测试 rsync 是否符合你的预期。
Rsync命令用法示例:当你要删除文件时,试运行选项特别有用。要进行试运行,请使用该--dry-run
选项并遵循常规 rsync 语法。
例如:
rsync -av --dry-run --delete /home/test/Desktop/Dir1 192.168.56.100:/home/test/Desktop/rsync
输出看起来与你实际同步文件时相同。但是,这次不会同步数据。为了确认测试发生而不是实际传输,终端在底部显示 (DRY RUN)。
13. 设置传输的最大文件大小
要确定 rsync 将传输的最大文件大小,请使用--max-size=add_size
.
例如,要传输不大于 500KB 的文件,请使用以下命令:
rsync -av --max-size=500k /home/test/Desktop/Dir1 192.168.56.100:/home/test/Desktop/rsync/
14. 设置传输的最小文件大小
Linux如何使用Rsync命令?--min-size=add_size
当你不想传输小于指定大小的文件时,请与 rsync 一起使用。此选项很有用,例如,当你想要跳过小日志或缩略图文件时。
要跳过任何小于 10KB 的文件,请运行以下命令:
rsync -av --min-size=10k /home/test/Desktop/ 192.168.56.100:/home/test/Desktop/rsync/
15.设置rsync带宽限制
Rsync命令用法指南:如果要确定机器之间数据传输期间的带宽限制,请使用--bwlimit=KB/s
。
当你不想阻塞网络吞吐量时,此选项很有用。
要将最大传输速度设置为 50KB/s,请输入:
rsync -av --bwlimit=50 --progress /home/test/Desktop/Dir1 192.168.56.100:/home/test/Desktop/rsync/
我们还使用--progress
选项来演示--bwlimit
.
16. 复制特定文件类型
你可以使用 rsync 仅复制特定文件类型。为此,请使用星号 ( *
) 代替文件名并添加扩展名。
例如,要仅复制 .txt 文件,请输入:
rsync -v /home/test/Documents/*.txt /home/test/Desktop/rsync/
此rsync
命令将所有文本文件从Documents目录传输到桌面上的rsync目录。
17.复制目录结构但跳过文件
如果你不需要其他位置的文件,Rsync 允许你仅传输目录结构。
为此,请-f"+ */" -f"- *"
在源目录之前添加。
例如,要将Linux目录的结构复制到Documents,请输入:
rsync -av -f"+ */" -f"- *" /home/test/Desktop/Linux /home/test/Documents
18. 添加日期戳到目录名称
如果你想在传输中添加日期戳,你可以轻松地向目录名称添加日期。
附加$(date +%Y-%m-%d)
到你要创建的目标目录名称。当你想在不打开目录属性的情况下跟踪传输发生的时间时,此选项很有用。
例如:
rsync -av /home/test/Desktop/Linux /home/test/Desktop/rsync$(date +%Y-%m-%d)
19.如果修改了相同的目标文件,请勿复制源文件
如果你保持两个目录同步,并且目标文件中存在相同的文件,则 rsync 不会复制文件。
有时可能会发生你在目的地修改文件并且不想让 rsync 覆盖它的情况。
为避免覆盖修改后的目标文件,请使用该-u
选项。
Rsync命令用法示例 - 例如:
rsync -avu /home/test/Desktop/Linux/ /home/test/Desktop/rsync
20. 显示源文件和目标文件之间的差异
Linux如何使用Rsync命令?当你开始传输数据时,你可以使用-i
带有 rsync的标志来检查源和目标之间是否存在差异。
例如:
rsync -avi /home/test/Desktop/Linux/ /home/test/Desktop/rsync
上面的示例显示目标处缺少sample2rs.txt文件。
输出中可能的字母是:
f
–代表文件d
–显示目标文件有问题t
–显示时间戳已更改s
–显示大小已更改
Rsync命令用法指南结论
本指南提供了 20 个 rsync 命令的示例。如果你按照本教程进行操作,你将成功地使用 rsync 在本地和远程位置传输文件和目录。