概述
`rsync --delete` 在将源目录的内容复制到目标目录的同时,会删除目标目录中独有的文件或目录,从而实现两个位置的完全同步。它主要用于备份同步、Web 服务器部署、开发环境同步等场景。
主要特点
- 源目录和目标目录的完全同步
- 删除目标目录中独有的文件/目录
- 通过增量传输实现高效同步
- 支持通过网络进行远程同步
主要选项
在使用 `rsync --delete` 时,通常会结合使用以下主要选项。特别是 `--dry-run` 选项,为了防止致命性错误,务必首先使用它。
同步控制
生成的命令:
请尝试组合命令。
描述:
`rsync-delete` 执行命令。
通过组合这些选项,您可以与 AI 一起虚拟地执行命令。
使用示例
`rsync --delete` 是一个强大的功能,因此务必始终使用 `--dry-run` 选项先确认结果。
删除操作预览 (必需)
rsync -avn --delete /path/to/source/ /path/to/destination/
同步源目录 (`/path/to/source`) 和目标目录 (`/path/to/destination`) 时,预先查看哪些文件将被删除。实际不会发生更改。
实际同步和删除
rsync -av --delete /path/to/source/ /path/to/destination/
在通过预览确认安全后,实际同步源和目标,并删除目标目录中独有的文件。`-a` 表示归档模式,`-v` 表示详细输出。
排除特定文件/目录进行同步和删除
rsync -av --delete --exclude='logs/' --exclude='*.tmp' /path/to/source/ /path/to/destination/
删除目标目录中源目录不存在的文件,同时排除特定文件或目录(例如 `logs/` 目录和 `*.tmp` 文件)不被删除,然后进行同步。
与远程服务器同步和删除
rsync -av --delete /path/to/local/source/ user@remote_host:/path/to/remote/destination/
将本地目录的内容与远程服务器的目录同步,并删除远程服务器上独有的文件。通过 SSH 安全传输。
提示与注意事项
`rsync --delete` 可能是一个非常强大且具有破坏性的命令,因此在使用时务必牢记以下几点。
最重要的注意事项
- **务必先使用 `--dry-run` (-n)**:在实际执行前,请务必确认哪些文件将被删除。
- **确认源 (Source) 和目标 (Destination) 路径**:如果路径指定错误,可能会导致意外的数据丢失。
- **备份是必须的**:处理重要数据时,请务必提前进行备份。
- **斜杠 (/) 的重要性**:源路径末尾的斜杠表示复制目录的“内容”,而没有斜杠则表示复制“目录本身”。与 `--delete` 一起使用时,这个区别很重要。
路径斜杠 (/) 的区别
源路径末尾的斜杠是否存在会影响其行为。
- `rsync -av --delete source/ dest/`: 将 `source` 目录的 *内容* 复制到 `dest`,并删除 `dest` 中独有的文件。`source` 目录本身不会在 `dest` 中创建。
- `rsync -av --delete source dest/`: 将 `source` 目录 *本身* 复制到 `dest` 目录内。也就是说,会创建 `dest/source/` 路径。如果 `dest` 中存在与 `source` 同名的其他文件,可能会被删除。