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

rsync не работает - хотите скопировать только определенные подкаталоги и файлы

Привет, допустим, у меня есть такой каталог:

/
    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*

явно в начало файла, тогда он должен работать.