Привет, допустим, у меня есть такой каталог:
/
my_work
/dir1
keepdir1.ddd
keepdir2.ddd
file.cfg
(lots of files and directories I don't want)
/dir2
(same layout as dir 1)
Итак, я хочу скопировать каталог «my_work» и все подкаталоги «dir1», «dir2» и т. Д. Но в каждом из них я хочу хранить только определенные файлы и определенные каталоги. Я хочу рекурсивно включать все в свои каталоги.
Вот что я пробовал до сих пор, но ничего не копирует:
rsync -rl --include-from=~/rsync_include /my_work ~/backup
А содержимое rsync_include:
+ *file.cfg
+ *keepdir*/*
- *
Обновить:
Если я запускаю rsync -rvvl, я получаю:
sending incremental file list
[sender] hiding directory my_work because of pattern *
delta-transmission disabled for local transfer or --whole-file
total: matches=0 hash_hits=0 false_alarms=0 data=0
sent 10 bytes received 12 bytes 44.00 bytes/sec
total size is 0 speedup is 0.00
Финал - *
игнорирует все, что явно не соответствует одному из предыдущих правил. Это то, что вы хотите, но поскольку папки верхнего уровня не совпадают, rsync даже не спустится в их, поэтому у него не будет возможности сопоставить указанные вами шаблоны файлов.
Если вы добавите:
+ my_work/
+ my_work/dir*
явно в начало файла, тогда он должен работать.