我有一个像这样的文件夹结构:
.
├── 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
我的问题是:
- 为什么在bkp(backup-dir)中创建一个空文件夹?
- 可以不创建吗?
答案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 文件夹中预先存在的文件将移动到该文件夹中)。只需删除此选项即可避免创建此文件夹。