引言
rsync
是一个强大的文件同步工具,常用于本地或远程系统之间的文件和目录同步。它通过差异化传输,快速、安全地更新目标文件夹,而不需要每次都复制整个文件。
功能介绍
- 增量文件传输: 仅传输文件中发生变化的部分,节省时间和带宽。
- 支持本地和远程同步: 可以在本地或不同主机之间同步文件和目录。
- 保持权限和时间戳: 保留源文件的权限、时间戳等元数据。
- 强大的过滤和排除功能: 可以根据需求排除特定文件或目录。
rsync
在执行同步操作时会比较源文件和目标文件的时间戳以及文件内容的差异,然后决定是否进行文件传输。
关于时间戳:
-
文件内容检查:
rsync
首先会比较源文件和目标文件的时间戳。如果源文件的时间戳和目标文件相同,而且文件内容没有发生变化,rsync
将不会传输该文件。 -
时间戳和文件内容不一致: 如果源文件和目标文件的时间戳不同,或者即使时间戳相同但文件内容发生了变化,
rsync
将会传输变化的部分。这种比较不仅涵盖了时间戳的变化,还会检查文件内容的差异,只传输有变化的部分,实现增量同步。 -
时间戳的重要性: 在同步过程中,时间戳对于
rsync
非常重要。它用来确定文件是否需要更新,避免无谓的文件传输,提高同步效率。 -
即使时间戳相同,但文件内容发生了变化,
rsync
仍会传输文件的变化部分。
总体而言,rsync
利用时间戳和文件内容的比较,以及增量传输的特性,实现了高效的文件同步和备份,避免了每次同步都复制整个文件。
语法结构
rsync
的基本语法结构为:
rsync [options] source destination
source
是源文件或目录。destination
是目标路径。
基本使用
本地同步
rsync -avh /path/to/source /path/to/destination
远程同步
rsync -avh /path/to/source user@remote_host:/path/to/destination
功能选项
过滤和排除文件:
rsync -avh --exclude='*.txt' /path/to/source /path/to/destination
同步前删除目标多余文件:
rsync -avh --delete /path/to/source /path/to/destination
脚本示例
简单的 Bash 脚本示例,用于定期同步文件夹:
#!/bin/bash
source="/path/to/source"
destination="/path/to/destination"
rsync -avh $source $destination
::: hljs-center
喜欢的话,请收藏+关注~ 万一有趣的事还在后头呢~
:::