rsync 不删除目标中的文件夹

vir*_*arc 5 bash rsync

我知道这里有一些相同主题的问题,但没有答案对我有帮助。

首先,这是我的脚本。它应该将所有文件从源复制到目标(保留所有权限等)。如果文件或目录在源中被删除,它也应该在目标中被删除。哪个工作不正常。

#!/bin/bash
## Basic RSync Command
RCMD="rsync -rulpEXogtzh --stats --delete --force"
DDIR="/tank/bak/s1/archive/"
SDIR="/tank/bak/s1/backup/"
CDAY=`date '+%u'`

echo "Archive Number: ${CDAY}"
echo "Archiving current backup"
$RCMD $SDIR $DDIR/$CDAY
Run Code Online (Sandbox Code Playgroud)

如果我在源中有以下目录:

/etc
/home
/root
/usr
Run Code Online (Sandbox Code Playgroud)

并同步它们我在目标中有以下目录:

/etc
/home
/root
/usr
Run Code Online (Sandbox Code Playgroud)

所以这很好用。现在,当我从源中删除 /usr 时,我的源如下所示:

/etc
/home
/root
Run Code Online (Sandbox Code Playgroud)

但是当我再次运行脚本时,我的目标仍然是这样的:

/etc
/home
/root
/usr
Run Code Online (Sandbox Code Playgroud)

所以不知何故 rsync 忽略了 --delete

rsync 输出:

Number of files: 1983645
Number of files transferred: 0
Total file size: 17.69G bytes
Total transferred file size: 0 bytes
Literal data: 0 bytes
Matched data: 0 bytes
File list size: 42.68M
File list generation time: 0.083 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 42.68M
Total bytes received: 4.70K

sent 42.68M bytes  received 4.70K bytes  155.52K bytes/sec
total size is 17.69G  speedup is 414.50
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么?

感谢您的任何回答!

Tom*_*ime 2

如果权限禁止或目录不为空,则不会删除该目录。通常有些文件无法删除,因为它们是不可变的或受到其他保护。ls -a /usr目的地上显示什么?

您可能想尝试该--force-delete标志,但首先使用-n(试运行模式)运行它以查看它会删除什么。

  • 截至 2019 年,rsync 版本 3.1.1/协议版本 31 没有选项 `--force-delete`,您必须使用 `--force --delete` (3认同)