Хорошо, я посмотрел существующие ответы здесь и в других местах, но я не могу выяснить, если я использую опцию --ignore-existing
вместе с опцией --delete
, получится ли эта комбинация, которую я все еще смогу получить? rsync удаляет файлы из цели, если их больше нет в источнике И все еще не позволяет rsync перезаписать существующие файлы в цели?
Спасибо
Да, --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
Это работает только частично
Из 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