Tôi đang cố gắng phản chiếu một thư mục thay đổi theo thời gian sang thư mục khác. Vấn đề của tôi là rsync không xóa các tệp ở đích nếu chúng không còn tồn tại trong thư mục nguồn nữa. Đây là một kịch bản demo:
#!/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
Đây là đầu ra:
+ DIR1=/tmp/1
+ DIR2=/tmp/2
+ rm -rf /tmp/1
+ rm -rf /tmp/2
+ mkdir /tmp/1
+ mkdir /tmp/2
+ echo foo
+ echo bar
+ rsync -a /tmp/1/a /tmp/1/b /tmp/2
+ rm -f /tmp/1/a
+ rsync -a --delete /tmp/1/b /tmp/2
+ ls -1 /tmp/2
a
b
Như bạn có thể thấy, tệp "a" vẫn hiện diện trong thư mục đích sau khi rsync chạy lần thứ hai, đây không phải là thứ tôi cần. Tôi có đang lạm dụng tùy chọn '--delete' không?