我知道这里有一些关于同一主题的问题,但没有答案能帮助我。
首先,这是我的脚本。它应该将所有文件从源复制到目标(保留所有权限等)。如果源中的文件或目录被删除,则目标中的文件或目录也应被删除。这无法正常工作。
#!/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
选项确实删除了文件夹。