Инкрементные копии

Итак, мы сделали резервную копию важного каталога или даже всего домашнего каталога, но она занимает почти столько же места, сколько оригинал. При шифровании 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. Включение в список копирования вашего внешнего диска, на который и делается копия - рецепт катастрофы.