rsync不会删除目标上的文件

Modified on: Sat, 02 Nov 2019 19:20:02 +0800

我正在尝试将随时间变化的目录镜像到另一个目录。我的问题是rsync不会删除目标上的文件,如果它们不再存在于源目录中。这是一个演示脚本:

#!/bin/sh set -x DIR1=/tmp/1 DIR2=/tmp/2 rm -rf $DIR1 rm -rf $DIR2 mkdir $DIR1 mkdir $DIR2 echo "foo" > $DIR1/a echo "bar" > $DIR1/b rsync -a $DIR1/* $DIR2 rm -f $DIR1/a rsync -a --delete $DIR1/* $DIR2 ls -1 $DIR2

这是输出:

#!/bin/sh

set -x

DIR1=/tmp/1
DIR2=/tmp/2

rm -rf $DIR1
rm -rf $DIR2

mkdir $DIR1
mkdir $DIR2

echo "foo" > $DIR1/a
echo "bar" > $DIR1/b

rsync -a $DIR1/* $DIR2

rm -f $DIR1/a

rsync -a --delete $DIR1/* $DIR2

ls -1 $DIR2

正如您所看到的,rsync第二次运行后,目标目录中仍然存在文件“a”,这不是我需要的。我是否滥用' - 删除'选项?

作者:halp

最佳答案

原因是你在/ tmp / 1 / b上调用了rsync,根本不会考虑/ tmp / 1 / a文件。

您的意图似乎是rsync目录/ tmp / 1 / - 如果您使用“/ tmp / 1 /”作为源而不是单个文件,它会注意到“a”已从目录并将其从目标中删除。

作者:Eric

相关问答

添加新评论