You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

rsync创建新目录时未生成日期命名备份目录是否为预期行为?

为什么rsync在新增目录时不生成带日期的备份目录?

这确实是rsync的预期行为,核心原因和你使用的--backup相关参数的设计逻辑直接挂钩,咱们拆解一下具体场景:

1. rsync备份机制的核心逻辑

rsync的--backup(或短参数-b)功能,本质是为了保护目标端已存在的旧文件:只有当源端的操作会导致目标端的文件被修改、替换或删除时,rsync才会把目标端的旧版本文件移动到你指定的--backup-dir目录中。

简单说:没有需要被替换/删除的旧文件,就不会触发备份动作。

2. 不同操作的具体表现

新增源目录/文件的场景

当你在源目录新增内容时,目标端/backup/sample原本就没有对应的目录或文件,rsync只需要直接把新内容复制过去即可——没有任何旧文件需要被备份,自然不会生成带日期的sample-date...备份目录。

删除源文件的场景

当你删除源目录的某个文件时,目标端/backup/sample里还存在这个文件。rsync要执行删除操作前,会先把目标端的这个旧文件移动到--backup-dir指定的带日期目录中(这是你配置的动态日期参数生效的结果),所以这时候会生成对应的备份目录。

3. 如果想要每次同步都生成快照目录

如果你希望不管是新增、修改还是删除内容,每次同步都生成一个完整的带日期快照目录,rsync的--backup机制做不到这点。更合适的做法是先创建一个带日期的独立目录,再完整同步源内容到这个目录,同时可以维护一个指向最新备份的软链接:

# 示例脚本:生成带时间戳的完整快照
DATE=$(date +%Y%m%d-%H%M%S)
TARGET_DIR="/backup/sample-$DATE"
# 同步源目录到新的快照目录
rsync -a --delete /path/to/source/ "$TARGET_DIR"
# 更新软链接指向最新快照
ln -snf "$TARGET_DIR" /backup/sample-latest

这样每次同步都会生成一个独立的快照,完整保留当时的源目录状态,方便回溯。

内容的提问来源于stack exchange,提问作者sebelk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:02:56