Итак, мы сделали резервную копию важного каталога или даже всего домашнего каталога, но она занимает почти столько же места, сколько оригинал. При шифровании GPG сжимает данные, но самые большие файлы - видео, фотографии и т.д. - обычно уже сжаты, поэтому особой экономии места не получается. А если через неделю вы захотите сделать еще одну резервную копию?
Если делать такие резервные копии регулярно, у вас либо кончится место, либо придется делать копии реже, либо придется удалить все резервные копии, кроме самых последних - все это плохие решения. Duplicity, как и многие другие программы для резервного копирования, помогает решить эту проблему, разделяя резервные копии на полные и инкрементальные. Полная резервная копия, как ясно из термина, содержит все файлы, тогда как инкрементальная - только файлы, которые изменились с момента создания предыдущей резервной копии. Это означает, что можно делать полную копию, скажем, раз в месяц, а инкрементальные - каждый день, и при этом занимать не слишком много места на диске. Важно и то, что можно восстановить эти файлы по состоянию на любой день (более подробно о восстановлении позже).
Тип создаваемой резервной копии можно указать перед путями таким образом: duplicity full /Documents file:///mnt/mybackup/Documents или duplicity incremental /Documents file:///mnt/mybackup/Documents
Возможно, вы удивляетесь, почему мы не сделали этого раньше. Причина в том, что Duplicity достаточно умна, чтобы понять, что делать. Если в каталоге назначения уже есть полная резервная копия, она выполняет инкрементальную копию, в противном случае - полную. Если копирование выполняется через Cron, есть параметр fullifolderthan, который принудительно делает полную резервную копию, если существующая полная копия старше указанного времени. Если данные в каталоге изменяются часто, то в долгосрочных инкрементальных копиях может быть много ненужных данных, поэтому можно воспользоваться командой: duplicity fullifolderthan 2W /Documents file:///mnt/ mybackup/Documents чтобы создавать полную копию каждые две недели. Для указания периода времени используется число с обозначениями D (дни), W (недели) и M (месяцы).
Пока мы делали резервные копии целых каталогов, но в них могут быть файлы, которые копировать незачем. Объем моего каталога .cache - около 750 МБ, и большую их часть съел Chromium. Эти данные не нужно копировать, так что их можно исключить - командой duplicity exclude /.cache src dest
Параметр exclude можно указывать несколько раз, но обычно проще поместить список исключений в файл и указать его Duplicity. duplicity excludeglobbingfilelist /.dupicityexcludes Указанный файл содержит следующее:
/root/.cache
**/*.tmp
Маски - это стандартные маски оболочки, а поставив в начале строки +, можно принудительно включить ее в копию, даже если в последующей строке она будет исключена: + **/.cache/duplicity
**/.cache
Эти две строки исключают из копирования каталог .cache, кроме подкаталога Duplicity. Пути должны начинаться с **, что делает их относительными по отношению к источнику, указанному в командной строке, или абсолютными. Еще один параметр для исключения exclude other file systems, его можно использовать для копирования резервного каталога и исключения /dev, /proc и /sys, а также всего, смонтированного в /mnt. Включение в список копирования вашего внешнего диска, на который и делается копия - рецепт катастрофы.