Seu comando não estava funcionando porque quando você estava usando /var/www/*
como a fonte, seu shell está executando globbing, isto é, o shell está expandindo *
para todos os arquivos nesse diretório e copiando os arquivos um por um, aqui os arquivos individuais se tornaram as origens em vez do diretório pai.
Portanto, se você usar /var/www/*
, não precisará da opção --recursive
, pois *
fará com que os arquivos sejam copiados (junto com quaisquer diretórios com seus conteúdos), não o diretório pai que contém os arquivos. Devido à mesma razão, --delete
não está funcionando, pois --delete
removerá os arquivos do diretório diretório que não estão no diretório de origem , mas você está copiando arquivos não é remover arquivos (esperado).
Isso vai deixar você mais claro:
/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
Como você pode ver, eu usei a fonte como /foo/*
, portanto o comando rsync
sendo executado é
rsync -avz --ignore-existing --recursive --delete /foo/egg
/foo/spam /foo/test /bar/
com *
fazendo shell para expandi-lo e fazer todos os arquivos individualmente como argumentos de origem, não o diretório pai como um todo (e você também não precisa de --recursive
neste caso).
Então, se você quiser fazer --delete
funcionar, execute-o como:
rsync -avz --ignore-existing --recursive --delete
/var/www/ [email protected]:/var/www/