Исключение папки из домашнего каталога с помощью списка исключений rsync
Я пытаюсь настроить rsync
для OS X 10.8.4 использование исключающего файла. Однако он не распознает пути, которые я хочу исключить.
Я хочу скопировать пользователя ABC
домашний каталог в папку с именем Backup_Mac
на установленном внешнем диске.
rsync -av --progress --exclude-from='/Users/ABC/excludelist.txt' /Users/ABC /Volumes/Backup_Mac
excludelist.txt
содержит
- /Users/ABC/Dropbox/
Это не исключая папку Dropbox.
Теперь, если я изменю файл исключения на
- Dropbox/
это исключение ABC/Dropbox
но также и все другие папки с именем Dropbox в другом месте дерева файлов. Это не то, что я хочу - я хочу исключить только папку ABC/Dropbox
но включайте любые другие папки, называемые Dropbox
например, ABC/Application Support/Dropbox
,
Любой намек на то, как этого добиться? Как мне указать путь исключения, относящийся к резервной копии папки или к корню?
1 ответ
Проще говоря, rsync
использует относительные пути, чтобы определить, что исключить. Из rsync
man-страница:
Если шаблон начинается с /, то он привязывается к определенной точке в иерархии файлов, в противном случае он сопоставляется с концом пути. Это похоже на ведущий ^ в регулярных выражениях. Таким образом, "/foo" будет соответствовать файлу с именем "foo" либо в "корне передачи" (для глобального правила) (…)
Самый простой способ обойти это - использовать --relative
/ -R
, что позволяет исключить Dropbox следующим образом:
rsync -avR --exclude='/Users/alex/Dropbox' /Users/alex /Volumes/Backup_Mac
Имя relative
относится к тому, как rsync
отправляет пути и, следовательно, не имеет ничего общего с указанием шаблонов абсолютного исключения.
Обратите внимание, что это создает полное дерево каталогов /Volumes/Backup_Mac/Users/alex/
, но это не так уж плохо в вашем случае.