Saya mencoba untuk mencerminkan direktori yang berubah dari waktu ke waktu ke direktori lain. Masalah saya adalah rsync tidak menghapus file pada tujuan jika mereka tidak ada di direktori sumber lagi. Berikut ini adalah skrip 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
Berikut hasilnya:
+ 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
Seperti yang Anda lihat, file "a" masih ada di direktori tujuan setelah rsync berjalan untuk kedua kalinya, yang bukan yang saya butuhkan. Apakah saya menyalahgunakan opsi '--delete'?