ฉันพยายามทำมิเรอร์ไดเรกทอรีที่เปลี่ยนแปลงตลอดเวลาไปยังไดเรกทอรีอื่น ปัญหาของฉันคือ 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
นี่คือผลลัพธ์:
+ 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
อย่างที่คุณเห็นไฟล์ "a" ยังคงปรากฏอยู่ในไดเรกทอรีปลายทางหลังจากที่ rsync ทำงานเป็นครั้งที่สองซึ่งไม่ใช่สิ่งที่ฉันต้องการ ฉันกำลังใช้ตัวเลือก '- ลบ' ผิดหรือไม่