Rsync, как включить каталоги, но не файлы? - PullRequest
20 голосов
/ 23 августа 2010

У меня есть структура каталогов и такие файлы

data/
data/a.txt
data/folder/
data/folder/b.txt
data/folder/folder/
data/folder/folder/c.txt
...

a.txt, b.txt и c.txt - это большие файлы, которые генерируются компьютером и часто обновляются. Они НЕ должны быть зарезервированы - но я хочу сделать резервную копию структуры каталогов:

data/
data/folder/
data/folder/folder/

Как я могу сделать это с помощью rsync и --exclude-from, без указания каждой папки, но что-то вроде rsync -a data/* --exclude-from=exclude.rsync "" --onlyfoldersandnotfiles""?

Спасибо за помощь!

Ответы [ 3 ]

26 голосов
/ 11 февраля 2012
$ rsync -a -f"+ */" -f"- *" source/ destination/

"Два аргумента -f означают соответственно" копировать все каталоги ", а затем" не копировать больше ничего "."

Дополнительные сведения: http://psung.blogspot.com/2008/05/copying-directory-trees-with-rsync.html

17 голосов
/ 14 ноября 2016
rsync -a --include='*/' --exclude='*' source/ destination/

По сути, сначала включите все каталоги, а затем исключите все файлы.

0 голосов
/ 22 февраля 2019

Если вы хотите синхронизировать все, кроме одной папки, но по-прежнему хотите сохранить структуру каталогов этой исключенной папки, вы должны сделать следующее:

$ rsync -a -f"+ /var/log/**/*/" -f"- /var/log/**/*" source/ destination/

См. список исключений и команда rsync в качестве примера.

...