Подробное объяснение кроссплатформенного инструмента резервного копирования данных restic

Безопасность Эксплуатация и обслуживание
Подробное объяснение кроссплатформенного инструмента резервного копирования данных restic

Мало знаний, большой вызов! Эта статья участвует в "Необходимые знания для программистов«Творческая деятельность.

Эта статья приняла участие"Проект "Звезда раскопок"", чтобы выиграть творческий подарочный пакет и бросить вызов творческим поощрительным деньгам.

задний фон

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

Restic также поддерживает инкрементное резервное копирование, резервное копирование и восстановление которого можно выполнить в любое время. Restic поддерживает большинство основных операционных систем, таких как: Linux, macOS, Windows и некоторые меньшие операционные системы FreeBSD и OpenBSD.

Два простых введения

2.1 типы опор

  • локальное хранилище
  • SFTP
  • REST Server
  • Amazon S3
  • Minio Server
  • OpenStack Swift
  • Backblaze B2
  • Microsoft Azure Blob Storage
  • Google Cloud Storage
  • Хранилище, смонтированное через Rclone (например: Google Drive, OneDrive и т. д.)

2.2 Рестик и Рклонразница

2.2.1 Сходства

  • Оба являются инструментами синхронизации и резервного копирования файлов с открытым исходным кодом на основе командной строки.
  • Оба поддерживают резервное копирование файлов на локальные, удаленные серверы или объектное хранилище.

2.2.2 Сходства и различия

  • Rclone нацелен на синхронизацию файлов, то есть на обеспечение согласованности файлов на обоих концах, а также может выполнять инкрементное резервное копирование.
  • Restic предназначен для резервного копирования и шифрования файлов, сначала шифруется файл, а затем передается резервная копия, и это инкрементная резервная копия, то есть каждый раз резервируется только измененная часть.
  • Конфигурация репозитория Rclone сохраняется локально, а резервные копии файлов останутся синхронизированными в репозитории как есть.
  • Информация о конфигурации Restic записывается непосредственно в репозиторий.При наличии пароля на репозиторий можно работать с репозиторием на любом компьютере, на котором установлен Restic.
  • Rclone не записывает версии файлов и не может извлекать файлы в определенный момент времени на основе резервной копии.
  • Каждая резервная копия Restic создает моментальный снимок для записи файловой структуры в текущий момент времени, и файлы в определенный момент времени могут быть извлечены.
  • Rclone может передавать файлы между несколькими настроенными сторонами хранилища.

В общем, у Rclone и Restic есть свои сильные стороны, и их следует использовать в соответствии с различными потребностями бизнеса. Например, для инкрементного резервного копирования данных веб-сайта более целесообразно использовать Resitc. Для удаленного резервного копирования и архивирования обычных файлов подойдет Rclone.

2.3 Принципы конструкции Restic

Restic — это правильная процедура резервного копирования, которая разработана с учетом следующих принципов:

  • Простой: резервное копирование должно быть плавным процессом, в противном случае вы можете его пропустить. Restic должен быть прост в настройке и использовании, чтобы в случае потери данных вы могли восстановить их напрямую. Опять же, восстановление данных не должно быть сложным.
  • Быстро: резервное копирование данных с помощью restic должно быть ограничено только пропускной способностью вашей сети или жесткого диска, поэтому вы можете ежедневно создавать резервные копии своих файлов. Если это займет слишком много времени, никто не сделает резервную копию. Восстановление из резервной копии должно передавать только те данные, которые необходимы для восстановления файлов, чтобы процесс также был быстрым.
  • Поддающийся проверке: восстановление важнее резервного копирования, поэтому restic упрощает проверку возможности восстановления всех данных.
  • Безопасность: Restic использует технологию шифрования, чтобы гарантировать конфиденциальность и целостность ваших данных. Предположим, что место, где хранятся данные резервного копирования, не является доверенной средой (например, общим пространством, где другие, например системные администраторы, могут получить доступ к вашим резервным копиям). Restic предназначен для защиты ваших данных от таких злоумышленников.
  • Эффективность: по мере роста данных дополнительные моментальные снимки должны занимать только фактическое добавочное хранилище. Что еще более важно, повторяющиеся данные должны быть дедуплицированы до того, как они будут фактически записаны в серверную часть хранилища, чтобы сэкономить ценное пространство для резервных копий.

2.4 Связанные термины

  • Repository: Все данные, созданные во время резервной копии, отправляются и хранятся в репозитории в структурированной форме, например, в иерархии файловой системы с несколькими подкаталами. Реализация репозитории должна иметь возможность делать много вещей, таких как содержимое листинга. Поддерживаемые службы хранения в V0.12.0 включают в себя: AWS S3, Minio Server, Wasabi, Aliyun OSS, OpenStack Swift, Backlbaze B2, хранение Azure Blob, Google Cloud Close, RCLONE *

  • Blob: байты данных BLOB-объектов и множество идентификационной информации (например, данные хэша и длины SHA-256), зашифрованные блоки данных и метаданные, причем метаданные содержат информацию о длине, хеш-коде SHA-256. Блок данных может хранить файлы данных (данные), данные также могут храниться в структуре каталогов (дерево). Размер большого двоичного объекта от 512 КБ до 8 МиБ, поэтому размер файла не может быть меньше 512 КБ. Цель Рестика — сделать средний размер BLOB-объекта равным 1 МБ.

  • Pack: пакет объединяет один или несколько больших двоичных объектов, например, в одном файле. Один файл данных в Restic, включая один или несколько больших двоичных объектов, не изменяется после создания.

    Как правило, он только создается, но не удаляется, и только операция сокращения удалит данные, на которые больше нет ссылок.

  • Snapshot: Моментальный снимок представляет собой состояние файла или каталога, для которого была создана резервная копия в определенный момент времени. Состояние здесь относится к содержимому и метаданным, таким как имя и время модификации файла или каталога и его содержимого.

  • Storage ID: значение хеш-функции SHA256 файла Pack, с помощью которого необходимые файлы данных могут быть загружены в хранилище. Restic использует этот идентификатор в качестве имени файла пакета, который представляет собой хэш SHA256 файла. Дизайн имени файла пакета, то есть значение хеш-функции, также может быть удобным для проверки того, был ли изменен файл данных.

Три установки

3.1 ням установка

yum install yum-plugin-copr
yum copr enable copart/restic
yum install restic

3.2 установка докера

docker pull restic/restic

Для получения дополнительной информации см.:GitHub.com/lobar oh/rest…

3.3 Установка источника

$ git clone https://github.com/restic/restic

$ cd restic

$ go run build.go

3.4 Настройка автодополнения

$ sudo ./restic generate --bash-completion /etc/bash_completion.d/restic

Четыре настоящих боя

Место, где хранятся резервные копии, называется «репозиторий». В этой главе объясняется, как создать («инициализировать») такой репозиторий. Репозитории могут храниться локально или на удаленном сервере или сервере.

4.1 Резервное копирование между хостами sftp

4.1.1 Взаимное доверие между хостами без ключа

Резервное копирование данных с хоста A на хост B не требует ключа и взаимного доверия между хостом A и хостом B.

ssh-keygen -t rsa
ssh-copy-id -i /root/.ssh/id_rsa.pub root@106.53.117.41

4.1.2 Создание резервной копии на сервере А

Инициализируйте резервную копию, /data — это каталог B-сервера.

Посмотреть сервер B

4.1.3 Операция резервного копирования

  • Выполнить резервное копирование данных
restic -r sftp:root@106.53.117.41:/data backup ./
  • Просмотр резервных копий
restic -r sftp:root@106.53.117.41:/data snapshots
  • Просмотр содержимого резервной копии
restic -r sftp:root@106.53.117.41:/data ls 875a2a32
  • восстановить снимок
restic -r sftp:root@106.53.117.41:/data restore 875a2a32 -t ./
restic -r sftp:root@106.53.117.41:/data restore 875a2a32 --target ./

  • удалить резервную копию
restic -r sftp:root@106.53.117.41:/data forget 875a2a32

4.1.4 Без пароля

При резервном копировании выше нужно вводить пароль, который точно не подходит для скриптового автоматического резервного копирования, поэтому нам тоже нужно использовать--password-fileпараметр для достижения шага автоматического считывания пароля.

#先将密码,比如moerats保存在/root/resticpasswd文本中
echo 'xxzx@789' > /root/resticpasswd
#然后在备份命令中加--password-file参数来读取文本中的密码,这里以sftp为例
restic -r sftp:root@106.53.117.41:/data --verbose backup ./ --password-file /root/resticpasswd

4.2 Резервное копирование объектного хранилища

Поддержка внутреннего хранилища объектов на основе протокола s3, такого как хранилище объектов minio или Tencent/Alibaba.

4.2.1 Облачное объектное хранилище Alibaba

$ export AWS_ACCESS_KEY_ID=<YOUR-OSS-ACCESS-KEY-ID>
$ export AWS_SECRET_ACCESS_KEY=<YOUR-OSS-SECRET-ACCESS-KEY>

$ ./restic -o s3.bucket-lookup=dns -o s3.region=<OSS-REGION> -r s3:https://<OSS-ENDPOINT>/<OSS-BUCKET-NAME> init
$ restic -o s3.bucket-lookup=dns -o s3.region=oss-eu-west-1 -r s3:https://oss-eu-west-1.aliyuncs.com/bucketname init

restic -o s3.bucket-lookup=dns -o oss-cn-beijing.aliyuncs.com -r s3:https://xueltestoss.oss-cn-beijing.aliyuncs.com init

  • Создать репозиторий
export AWS_ACCESS_KEY_ID=LTAIxxxxxxxdZa9
export AWS_SECRET_ACCESS_KEY=XvHxxxxxxxxxxxxxxxxxJt3wb7
restic -o s3.bucket-lookup=dns -o s3.region=oss-cn-beijing.aliyuncs.com -r s3:https://xueltestoss.oss-cn-beijing.aliyuncs.com/xueltestoss init

файл в объектном хранилище

  • без ключа
#先将密码,比如moerats保存在/root/resticpasswd文本中
echo 'xxzx@789' > /root/resticpasswd
#然后在备份命令中加--password-file参数来读取文本中的密码,这里以sftp为例
  • выполнить резервное копирование
restic -r s3:https://oss-cn-beijing.aliyuncs.com/xueltestoss --password-file /root/resticpasswd backup /data/

Другие операции восстановления в основном такие же, как и для sftp.

разное

restic — очень хорошее решение для резервного копирования данных, rclone — хорошее решение для синхронизации данных, а minio используется в качестве хранилища данных, интеграция действительно хороша.

Справочная статья

разное

«Добро пожаловать для обсуждения в области комментариев, официальный представитель NuggetsПроект «Звезда раскопок»После мероприятия в комментариях будет разыграно 100 штук Наггетсов.Подробнее о лотерее читайте в статье о мероприятии».