Ihr Befehl hat nicht funktioniert, da /var/www/*
Ihre Shell bei der Verwendung als Quelle einen Globbing-Vorgang ausführt, dh, die Shell wird *
auf alle Dateien in diesem Verzeichnis erweitert und die Dateien einzeln kopiert. Daher sind hier einzelne Dateien eher die Quellen als das übergeordnete Verzeichnis.
Wenn Sie also verwenden /var/www/*
, benötigen Sie keine --recursive
Option, da *
die Dateien (zusammen mit allen Verzeichnissen mit ihrem Inhalt) kopiert werden und nicht das übergeordnete Verzeichnis, das die Dateien enthält. Aus dem gleichen Grunde --delete
nicht funktioniert, wie --delete
wird die Dateien aus Ziel entfernen Verzeichnis , die nicht in der Quelle ist Verzeichnis , aber Sie sind das Kopieren von Dateien so dass sie nicht Entfernen von Dateien (expectedly).
Dadurch werden Sie klarer:
/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
Wie Sie sehen, habe ich die Quelle verwendet, da der /foo/*
auszuführende rsync
Befehl ist
rsync -avz --ignore-existing --recursive --delete /foo/egg
/foo/spam /foo/test /bar/
Mit *
make shell können Sie es erweitern und alle Dateien einzeln als Quellargumente erstellen, nicht das übergeordnete Verzeichnis als Ganzes (und das brauchen Sie --recursive
in diesem Fall auch nicht ).
Wenn Sie also arbeiten möchten --delete
, führen Sie es wie folgt aus:
rsync -avz --ignore-existing --recursive --delete
/var/www/ root@mydomaintest.com:/var/www/