restic version
restic 0.6.1 (v0.6.1-126-gb0fb95df)
скомпилирован с go1.8.3 на darwin / amd64
restic backup --exclude-file ~/exclude.txt ~
sftp в локальную сеть
Пропустить файлы, соответствующие шаблону в exclude.txt
Файлы были включены, если я резко не ослабил шаблон до такой степени, что шаблон стал слишком неоднозначным.
Используя файл исключения, подобный этому:
.[^.]*
/matt/Applications
/matt/Dropbox
/matt/Downloads
/matt/VirtualBox VMs
*.vmdk
Моя цель - пропустить точечные файлы и несколько конкретных папок в моем каталоге $ HOME (с именем matt
) (например, не во всех папках с именем «Приложения»). Да, и любые файлы .vmdk (они могут быть огромными!)
Когда я смягчил паттерны до этого:
.[^.]*
Applications
Dropbox
Downloads
VirtualBox VMs
*.vmdk
он сработал (то есть пропустил папки), но это слишком неоднозначно, так как, например, я не хочу пропускать все папки с именем «Загрузки».
Вероятно, я до сих пор не понимаю, как правильно исключить шаблоны. : smile: Я прочитал # 1005 и, наверное, меня смущает, требуются ли абсолютные пути для --exclude или требуются ли абсолютные пути репо, как с --include.
Обновление: Хорошо, замена /matt/
на $HOME/
похоже, сработала, хотя я считаю несоответствие между абсолютными путями --exclude и --include немного странным / удивительным.
Обычно $HOME/blabla
- это /home/matt/blabla
или вы что-то меняли в своей системе?
Вздох, да, вы абсолютно правы. Шаблоны исключения являются абсолютными в отношении того, что вы делаете резервную копию:
Шаблон /home/matt/*.go
соответствует всем файлам Go в вашем доме, когда вы запускаете restic backup /home/matt
. Из-за того, как работает архиватор (см. № 549, неправильное дизайнерское решение, которое необходимо исправить), префикс /home/
отбрасывается, а компонент пути верхнего уровня в снимке состояния - /matt
. Поэтому для восстановления вам нужно использовать шаблон включения /matt/*.go
чтобы сопоставить те же файлы. Знаю, что плохо, со временем поправлю :)
Итак, это исправленный список исключаемых файлов для вашего варианта использования:
.[^.]*
/home/matt/Applications
/home/matt/Dropbox
/home/matt/Downloads
/home/matt/VirtualBox VMs
*.vmdk
@ibib На моем Mac мой домашний каталог - /Users/matt
, но поскольку --include
использует абсолютный путь к репозиторию (как показывает restic ls
), я решил, что правильный абсолютный путь будет /matt/...
.
@ fd0 А! В этом больше смысла, спасибо за объяснение. Таким образом, --exclude
при использовании с restic backup
является абсолютным для файловой системы, а --include
(используется с restic restore
) является абсолютным для репозитория. Другими словами, шаблоны являются абсолютными в зависимости от того, откуда берутся файлы.
Большое спасибо за объяснение. Теперь я лучше понимаю, почему 549 - это проблема, которую вы хотите исправить. :улыбка:
Самый полезный комментарий
Вздох, да, вы абсолютно правы. Шаблоны исключения являются абсолютными в отношении того, что вы делаете резервную копию:
Шаблон
/home/matt/*.go
соответствует всем файлам Go в вашем доме, когда вы запускаетеrestic backup /home/matt
. Из-за того, как работает архиватор (см. № 549, неправильное дизайнерское решение, которое необходимо исправить), префикс/home/
отбрасывается, а компонент пути верхнего уровня в снимке состояния -/matt
. Поэтому для восстановления вам нужно использовать шаблон включения/matt/*.go
чтобы сопоставить те же файлы. Знаю, что плохо, со временем поправлю :)Итак, это исправленный список исключаемых файлов для вашего варианта использования: