Perintah Anda tidak berfungsi karena ketika Anda menggunakan /var/www/*
sebagai sumber, shell Anda sedang melakukan globbing di atasnya yaitu shell memperluas *
ke semua file di direktori itu dan menyalin file satu per satu, jadi di sini file individual telah menjadi sumber daripada direktori induk.
Jadi, jika Anda menggunakan /var/www/*
, maka Anda tidak perlu --recursive
opsi karena *
akan menyebabkan file untuk disalin (bersama dengan direktori dengan isinya), bukan direktori induk yang berisi file. Karena alasan yang sama --delete
tidak berfungsi, seperti --delete
akan menghapus file dari direktori tujuan yang tidak ada di direktori sumber , tetapi Anda menyalin file sehingga tidak menghapus file (diharapkan).
Ini akan membuat Anda lebih jelas:
/foo$ ls -l
-rw-rw-r-- 1 user user 0 Apr 16 17:56 egg
-rw-rw-r-- 1 user user 0 Apr 16 17:56 spam
drwxrwxr-x 2 user user 4096 Apr 16 18:14 test
/bar$ ls -l
-rw-rw-r-- 1 user user 0 Apr 16 17:56 egg
-rw-rw-r-- 1 user user 0 Apr 16 18:13 lion
-rw-rw-r-- 1 user user 0 Apr 16 17:56 spam
$ rsync -avz --ignore-existing --recursive --delete
/foo/* /bar/
+ rsync -avz --ignore-existing --recursive --delete
/foo/egg /foo/spam /foo/test /bar/
sending incremental file list
test/
test/hello
sent 173 bytes received 39 bytes 424.00 bytes/sec
total size is 0 speedup is 0.00
/bar$ ls -l
-rw-rw-r-- 1 user user 0 Apr 16 17:56 egg
-rw-rw-r-- 1 user user 0 Apr 16 18:13 lion
-rw-rw-r-- 1 user user 0 Apr 16 17:56 spam
drwxrwxr-x 2 user user 4096 Apr 16 18:14 test
Seperti yang Anda lihat, saya telah menggunakan sumbernya karena /foo/*
itu rsync
perintah yang dieksekusi adalah
rsync -avz --ignore-existing --recursive --delete /foo/egg
/foo/spam /foo/test /bar/
dengan *
membuat shell untuk memperluasnya dan menjadikan semua file satu per satu sebagai argumen sumber, bukan direktori induk secara keseluruhan (dan Anda juga tidak perlu --recursive
dalam hal ini).
Jadi, jika Anda ingin membuat --delete
pekerjaan, jalankan sebagai:
rsync -avz --ignore-existing --recursive --delete
/var/www/ root@mydomaintest.com:/var/www/