Komutunuz çalışmadığı için /var/www/*
, kaynak olarak kullandığınızda , kabuğunuz üzerinde globbing yapıyor, yani kabuk *
bu dizindeki tüm dosyalara genişliyor ve dosyaları tek tek kopyalıyor, bu yüzden burada tek tek dosyalar yerine kaynaklar haline geldi üst dizin.
Bu nedenle, kullanırsanız /var/www/*
, dosyaların kopyalandığı ana dizinin değil, dosyaların kopyalanmasına (içeriğine sahip tüm dizinlerle birlikte) neden olacağı için --recursive
seçeneğe ihtiyacınız yoktur *
. Aynı nedenden dolayı --delete
çalışmıyorsa, hem --delete
hedef dosya kaldıracaktır dizinde kaynak olmayan dizinde , ama onun çıkarmadan değil dosyaları (expectedly) böylece dosyaları kopyalarken.
Bu sizi daha net gösterecektir:
/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
Gördüğünüz gibi, /foo/*
bu yüzden rsync
çalıştırılan komut olduğu için kaynağı kullandım
rsync -avz --ignore-existing --recursive --delete /foo/egg
/foo/spam /foo/test /bar/
ile *
yapım kabuk genişletmek üzere ve bir bütün olarak değil üst dizin kaynak tartışmaların yanı tek tek tüm dosyaları yapmak (ve ayrıca gerek yok --recursive
bu durumda).
Yani, --delete
iş yapmak istiyorsanız , şu şekilde çalıştırın:
rsync -avz --ignore-existing --recursive --delete
/var/www/ root@mydomaintest.com:/var/www/