好的,我已经在这里和其他地方查找了现有的答案,但我找不到的是,如果我将该--ignore-existing
选项与该--delete
选项一起使用,这种组合是否仍然能够让 rsync 从目标中删除文件(如果它们不再存在于源中)并且仍然可以防止 rsync 覆盖目标中的现有文件?
谢谢
答案1
是的,--delete
并且--ignore-existing
选项rsync
将会一起工作。
这是一个测试(特别检查修改时间):
:~/foo$ ls -l
-rw-rw-r-- 1 user user 0 Mar 27 14:38 egg.txt
-rw-rw-r-- 1 user user 0 Mar 27 14:38 ignore.txt
-rw-rw-r-- 1 user user 0 Mar 27 14:38 spam.txt
:~/bar$ ls -l
-rw-rw-r-- 1 user user 0 Mar 27 14:40 ignore.txt
-rw-rw-r-- 1 user user 0 Mar 27 14:40 remove.txt
$ rsync -r --delete --ignore-existing ~/foo/ ~/bar/
:~/bar$ ls -l
-rw-rw-r-- 1 user user 0 Mar 27 14:42 egg.txt
-rw-rw-r-- 1 user user 0 Mar 27 14:40 ignore.txt
-rw-rw-r-- 1 user user 0 Mar 27 14:42 spam.txt
答案2
这仅部分有效
来自 rsync 手册页:
[..]
--delete delete extraneous files from dest dirs
[..]
--ignore-existing skip updating files that exist on receiver
[..]
例子:
% ls ~/tmp/A
123 456
% ls ~/tmp/B
456
% rsync --recursive --ignore-existing --delete ~/tmp/A/ ~/tmp/B
% ls ~/tmp/B
123 456
% rm ~/tmp/A/456
% rsync --recursive --ignore-existing --delete ~/tmp/A/ ~/tmp/B
% ls ~/tmp/B
123
% touch ~/tmp/B/789
% ls ~/tmp/B
123 789
% rsync --recursive --ignore-existing --delete ~/tmp/A/ ~/tmp/B
% ls ~/tmp/B
123
现在注意更改日期456
% ls -la ~/tmp/A
insgesamt 8
drwxrwxr-x 2 aboettger aboettger 4096 Mär 27 09:41 .
drwxrwxr-x 7 aboettger aboettger 4096 Mär 27 09:25 ..
-rw-rw-r-- 1 aboettger aboettger 0 Mär 27 09:35 123
-rw-rw-r-- 1 aboettger aboettger 0 Mär 27 09:42 456
% rsync --recursive --ignore-existing --delete ~/tmp/A/ ~/tmp/B
% ls -la ~/tmp/B
insgesamt 8
drwxrwxr-x 2 aboettger aboettger 4096 Mär 27 09:45 .
drwxrwxr-x 7 aboettger aboettger 4096 Mär 27 09:25 ..
-rw-rw-r-- 1 aboettger aboettger 0 Mär 27 09:35 123
-rw-rw-r-- 1 aboettger aboettger 0 Mär 27 09:42 456
% touch ~/tmp/A/456
% ls -la ~/tmp/A
insgesamt 8
drwxrwxr-x 2 aboettger aboettger 4096 Mär 27 09:41 .
drwxrwxr-x 7 aboettger aboettger 4096 Mär 27 09:25 ..
-rw-rw-r-- 1 aboettger aboettger 0 Mär 27 09:35 123
-rw-rw-r-- 1 aboettger aboettger 0 Mär 27 09:46 456
% rsync --recursive --ignore-existing --delete ~/tmp/A/ ~/tmp/B
% ls -la ~/tmp/B
insgesamt 8
drwxrwxr-x 2 aboettger aboettger 4096 Mär 27 09:45 .
drwxrwxr-x 7 aboettger aboettger 4096 Mär 27 09:25 ..
-rw-rw-r-- 1 aboettger aboettger 0 Mär 27 09:35 123
-rw-rw-r-- 1 aboettger aboettger 0 Mär 27 09:42 456