> 文件与目录管理 > rsync-delete

rsync --delete: 同步源并删除目标文件

`rsync` 命令的 `--delete` 选项在同步源目录和目标目录时,提供了删除目标目录中不存在于源目录的文件或目录的功能。这在备份或镜像时,希望将目标目录与源目录精确匹配时非常有用。由于这是一个强大的功能,请务必谨慎使用。

概述

`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` 同名的其他文件,可能会被删除。

相同类别命令