Давайте рассмотрим это с вашей файловой структурой. Прежде всего мы создаем директорию testsyn c для воспроизведения в пределах:
mkdir testsync && cd testsync
mkdir -p a/aa/whatever b/bb c/whatever c/noneed
touch a/file.txt a/picture.jpg b/bb/morefiles.txt b/txt.txt
Давайте проверим это с помощью tree
:
.
├── a
│ ├── aa
│ │ └── whatever
│ ├── file.txt
│ └── picture.jpg
├── b
│ ├── bb
│ │ └── morefiles.txt
│ └── txt.txt
└── c
├── noneed
└── whatever
Создаем файл include.dat
с содержимым:
- /a/aa/*
+ /
+ /a
+ /a/***
+ /b
+ /b/***
- *
Подробнее о синтаксисе файла include / exclude в руководстве (man rsync
) в разделе INCLUDE/EXCLUDE PATTERN RULES
.
Вы ДОЛЖНЫ включать каждый каталог со своим предком, чтобы его можно было синхронизировать , Вот почему /
и /a
с /a/***
(тройная звездочка для всего содержимого каталога в нем) включена
Мы создаем другой каталог вне testsyn c: targetsync
и тестируем:
rsync -az --include-from=include.dat ~/testsync/ ~/targetsync/
Теперь, когда мы каталоги go - targetsync
и используем tree
, чтобы получить изображение:
.
├── a
│ ├── aa
│ ├── file.txt
│ └── picture.jpg
└── b
├── bb
│ └── morefiles.txt
└── txt.txt