rsync --backup-dir 在备份目录中创建空文件夹

rsync --backup-dir 在备份目录中创建空文件夹

我有一个像这样的文件夹结构:

.
├── bkp
├── dst
└── src
    └── folder
        └── file

我运行以下命令:

rsync -t -r -b --backup-dir /tmp/rsyncTest/bkp/ /tmp/rsyncTest/src/ /tmp/rsyncTest/dst/

我的结果是:

.
├── bkp
│   └── folder
├── dst
│   └── folder
│       └── file
└── src
    └── folder
        └── file

我的问题是:

  1. 为什么在bkp(backup-dir)中创建一个空文件夹?
  2. 可以不创建吗?

答案1

我看起来你的语法是错误的,这可能就是它不能按预期工作的原因。

man rsync

--备份目录=目录

所以它应该看起来像这样,这对我有用:

rsync -tbr --backup-dir=/tmp/rsyncTest/bkp/ /tmp/rsyncTest/src/ /tmp/rsyncTest/dst/

--backup和选项--backup-dir仅在文件更改后才起作用。例如,假设您的src目录中有 3 个文件,并且您已经使用此rsync命令同步了一次。如果您删除其中一个,然后重新创建它并向文件添加一堆更改,然后rsync再次运行该命令,您会注意到目录中的旧副本dst已移至您的目录中--backup-dir,而新副本已从您的src目录中移至您的目录中。已移至您的dst.如果未检测到任何更改,则不会在您的bkp目录中放入任何内容。

答案2

使用 rsync 选项检查新创建的“ folder”下的bkp不可见元文件(如.DS_Store在 macOS 下)ls -a .并排除它--exclude

答案3

在 bkp 中创建“文件夹”的原因是因为 --backup-dir 选项。该选项告诉 rsync 将 bkp 指定为备份目录(即,dst 文件夹中预先存在的文件将移动到该文件夹​​中)。只需删除此选项即可避免创建此文件夹。

相关内容