Клонировать мягкие и жесткие ссылки папок на другой диск

Вопрос или проблема

  1. Я смонтировал /src, который состоит из /src/backup/day1, /src/backup/day2 и т.д.
  2. Некоторые файлы в day1 и day2 имеют жесткие ссылки, созданные с помощью rsync с параметром --link-dest=...
  3. Я хотел бы создать копию из /src в /dst, сохранив эти жесткие ссылки, желательно, на основе дельта-копирования

Можете подсказать, как rsync может это сделать? Или есть идея, какой инструмент способен это сделать?

Обычный параметр -H, --hard-links обнаруживает жесткие ссылки и воспроизводит их на целевом устройстве, сравнивая номера инодов всех ‘исходных’ файлов.

(Большинство инструментов копирования, таких как tar/cpio или даже cp -a, могут сделать то же самое.)

Дельта-копирование не очень полезно для локальных дисковых подключений – вычисление дельты между ‘старыми’ и ‘новыми’ файлами требует полного чтения их содержимого, и если вы собираетесь прочитать весь ‘старый’ файл полностью, то вы могли бы сразу записать его на целевое устройство. По этой причине rsync использует дельта-передачи только при копировании по сети, но вы можете использовать --no-W, --no-whole-file, чтобы принудительно включить режим дельта-копирования (вы также можете использовать --inplace вместе с этим).

Ответ или решение

Клонирование папок с жесткими ссылками на другой диск: полное руководство с использованием rsync

Введение

Копирование папок, содержащих жесткие ссылки, может быть сложной задачей, особенно если ваша цель — сохранить структуру жестких ссылок и применить техники дельта-копирования. В данной статье мы рассмотрим, как грамотно осуществить клонирование папок из директории /src в директорию /dst, сохраняя все жесткие ссылки и избегая лишних операций по копированию данных.

Проблема

В вашем случае вам необходимо выполнить следующее:

  1. Копирование структуры папок из /src, которая включает в себя папки day1, day2 и так далее.
  2. Сохранение жестких ссылок, которые могут быть созданы с помощью опции --link-dest в rsync (жесткие ссылки создаются, когда несколько файлов указывают на один и тот же inode).
  3. Применение принципов дельта-копирования для минимизации объема передаваемых данных.

Использование rsync для копирования с сохранением жестких ссылок

rsync — это мощный инструмент, который позволяет эффективно копировать файлы и директории. Чтобы выполнить ваши требования, используйте следующую команду:

rsync -aH --no-whole-file /src/ /dst/

Параметры команды:

  • -a: Включает архивный режим, который сохраняет права доступа, метаданные и копирует директории рекурсивно.
  • -H или --hard-links: Эта опция важна для сохранения жестких ссылок. Она позволяет rsync сравнить inode-номера исходных и целевых файлов и создать жесткие ссылки на целевом диске.
  • --no-whole-file: Это заставляет rsync использовать дельта-копирование даже для локальных файлов; таким образом, он будет передавать только измененные блоки данных, а не целые файлы.

Примечание по дельта-копированию

Дельта-копирование — это особенность rsync, которая полезна для оптимизации передачи данных по сети, однако для локальных операций оно может быть менее эффективно. Использование параметра --no-whole-file, как указано выше, позволяет активировать эту опцию даже при локальном копировании.

Альтернативные инструменты

Несмотря на то, что rsync является одним из наиболее популярных инструментов для этой задачи, существуют и другие утилиты:

  1. cp: Стандартная команда cp с параметром -a может копировать файлы и директории, сохраняя структуру жестких ссылок, но она не поддерживает дельта-копирование. Пример команды:

    cp -a /src /dst
  2. tar: Вы можете использовать tar в сочетании с --hard-link для создания архива, который сохранит жесткие ссылки, а затем распаковать этот архив в целевой путь:

    tar cf - /src --hard-links | (cd /dst && tar xf -)
  3. cpio: Это еще один инструмент для создания и распаковки архивов, который также поддерживает жесткие ссылки, но его использование редко.

Заключение

Ваша задача по клонированию директорий с сохранением жестких ссылок и коэффициентами дельта-копирования решается с помощью rsync, который обеспечивает необходимую гибкость и надежность. Важно отметить, что правильное использование опций позволяет избежать излишних операций и минимизирует размер передаваемых данных, что особенно важно при работе с большими объемами информации. Выберите подходящий инструмент на основе ваших предпочтений и требований к производительности, и будьте уверены в стабильности и эффективности вашего процесса копирования.

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

Капча загружается...