У меня два сервера RHEL 7.
В моем источнике у меня есть следующие каталоги
/sourcestuff/testresync
/sourcestuff/testresync/incl1
/sourcestuff/testresync/incl1/test1.txt
/sourcestuff/testresync/incl2
/sourcestuff/testresync/incl2/test2.txt
/sourcestuff/testresync/excl3
/sourcestuff/testresync/excl3/test2.txt
/sourcestuff/testresync/excl4
/sourcestuff/testresync/excl4/test2.txt
В моем пункте назначения у меня есть следующие каталоги
/destinationstuff/testresync
/destinationstuff/testresync/incl1
/destinationstuff/testresync/incl2
/destinationstuff/testresync/excl3
/destinationstuff/testresync/excl4
Я пытаюсь скопировать данные из моего источника в пункт назначения и исключить / sourcestuff / testresync / excl3 и / sourcestuff / testresync / excl4 из источника.
Что я пробовал
rsync -av --relative /sourcestuff/testrsync/./ --exclude '/sourcestuff/testrsync/excl3/' --exclude '/sourcestuff/testrsync/excl4/' user@SERVERIP:/destinationstuff/testrsync
Я прочитал документацию о том, что опция -exclude зависит от источника, но все, что я пробую, данные excl3 и excl4 по-прежнему передаются.
Я тоже пробовал другой способ не работает
Как я хочу, чтобы мой пункт назначения выглядел:
/destinationstuff/testresync
/destinationstuff/testresync/incl1
/destinationstuff/testresync/incl1/test1.txt
/destinationstuff/testresync/incl2
/destinationstuff/testresync/incl2/test2.txt
/destinationstuff/testresync/excl3
/destinationstuff/testresync/excl4
Как известно, когда вы используете --relative
тогда обычно исходный путь вроде /a/b/
будет воспроизведен в пункте назначения /d
так как /d/a/b/
, и исключить каталог /a/b
вы бы использовали --exclude /a/b/
.
Однако, когда вы добавляете /./
к исходному пути, например /a/./b/
то копируется только часть после точки, т.е. вы получаете /d/b/
. Но и путь исключения тоже должен измениться, чтобы быть только частью после точки, --exclude /b/
.
Поэтому измените шаблоны исключения на что-то вроде /excl3/
.