Назад | Перейти на главную страницу

Rsync с использованием абсолютных путей

У меня два сервера 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/.