rsync 不删除目标中的文件夹

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

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

/etc
/home
/root
/usr

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

/etc
/home
/root
/usr

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

/etc
/home
/root

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

/etc
/home
/root
/usr

所以 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

有人知道为什么吗?

谢谢您的回答!

答案1

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

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

答案2

就我而言,使用 rsync 3.1.2,--force--force --delete选项仍然没有删除目标文件夹中的目录。

但该--delete-excluded选项确实删除了文件夹。

相关内容