Копирование с сохранением жёстких ссылок

Ранее я описывал отличную схему инкрементных резервных копий, основанную на использовании жёстких ссылок. Схема позволяет хорошо сохранять место на разделе для бэкапов и на уровне приложений резервные копии видны полностью. Обратной стороной такого удобства является сложность переноса таких бэкапов с одного раздел на другой в случаях, когда это потребуется, например, при физической смене жёстких дисков или рейда для резервирования. Стандартные утилиты вроде cp воспринимают всю директорию с бэкапами как "нормальную" директорию и копируют полностью, что в результате даёт копию большого, примерно n*[размер одного бэкапа] размера. Кроме объёма, такое копирование занимает огромное количество времени.

Как скопировать быстро и сохранением симлинков? Задача, оказывается, хорошо решается всё той же проверенной утилитой rsync, которая может работать как локально, так и удалённо. При запуске ее с ключами:

rsync -aH /src-path /dst-path

она выполняет в точности, что и требуется.

Наиболее оптимальным набором параметров для локальных копий показал себя следующий

rsync -aH --delete --numeric-ids /src-path /dst-path

Таким образом полностью копируются права доступа и цифровые владелец-группа (что критично важно для копирования бэкапов LXC-контейнеров, да и не только их) и удаляется всё лишнее, что есть в директории назначения.

Естественно, утилита может копировать и по сети, что делает способ ещё более удобным, особенно со сжатием (-z).

Добавить комментарий

Ваш e-mail не будет опубликован.