---
title: 'Duplicity'
sidebar_label: 'Duplicity'
sidebar_position: 7
description: 'Как установить и настроить Duplicity для резервного копирования через интерфейс командной строки Duplicity'
---

import Formbricks from '@theme/MDXComponents/Formbricks'
import Tabs from '@theme/Tabs'
import TabItem from '@theme/TabItem'
import {TabItemLabel} from '@selectel/docux/components'
import GrantAccess from '@site/docs/_partials/s3/grant-access.mdx'

# Duplicity

[Duplicity](https://duplicity.gitlab.io/) — интерфейс командной строки для резервного копирования. Duplicity поддерживает протоколы SSH/SCP, FTP, HSI, WebDAV, Tahoe-LAFS и Amazon S3 для соединения с файловым сервером, архивирует данные и загружает их на локальный или удаленный файловый сервер и шифрует данные при помощи утилиты [GnuPG](http://www.gnupg.org/).

## Настроить Duplicity \{#configure-duplicity}

1. [Настройте доступ к S3](#configure-s3-access).
2. [Установите клиент](#install-client).
3. [Настройте конфигурацию Duplicity](#configuration).

### 1. Настроить доступ к S3 \{#configure-s3-access}

<GrantAccess />

### 2. Установить клиент \{#install-client}

<Tabs queryString="os">
  <TabItem value="ubuntu" default>
    <TabItemLabel>
      Ubuntu
    </TabItemLabel>

    1. Откройте терминал.

    2. Установите Duplicity:

       ```bash
       sudo apt-get install duplicity
       ```

    3. Установите пакеты `python-swiftclient` и `librsync`:

       ```bash
       sudo apt-get install python-swiftclient
       sudo apt-get install librsync-dev
       ```

    4. Установите систему контроля версий Bazaar и загрузите `swiftbackend`:

       ```bash
       sudo apt-get install bzr
       bzr branch lp:~mhu-s/duplicity/swiftbackend
       ```

    5. Установите `swiftbackend`:

       ```bash
       cd swiftbackend && sudo python dist/setup.py install
       ```
  </TabItem>
</Tabs>

### 3. Настроить конфигурацию Duplicity \{#configuration}

<Tabs queryString="api">
  <TabItem value="swift" default>
    <TabItemLabel>
      Swift
    </TabItemLabel>

    1. Создайте файл со скриптом для резервного копирования:

       ```bash
       export SWIFT_PASSWORD=<password>
       export SWIFT_AUTHVERSION=3
       export SWIFT_TENANTNAME=<project_name>
       export SWIFT_AUTHURL="https://cloud.api.selcloud.ru/identity"
       export SWIFT_REGIONNAME=<pool>
       export SWIFT_USERNAME=<username>
       export SWIFT_USER_DOMAIN_NAME=<account_id>
       export SWIFT_PROJECT_DOMAIN_NAME=<account_id>

       duplicity <path> swift://<bucket_name>

       unset SWIFT_PASSWORD
       unset SWIFT_AUTHVERSION
       unset SWIFT_TENANTNAME
       unset SWIFT_AUTHURL
       unset SWIFT_USERNAME
       ```

       Укажите:

       * `<password>` — пароль сервисного пользователя. Если вы забыли пароль, [создайте новый](/access-control/manage/edit-user-data-or-role.mdx#change-service-user-password);
       * `<project_name>` — имя проекта;
       * `<pool>` — [пул](/infrastructure/locations.mdx#pool), в котором находится S3;
       * `<username>` — имя сервисного пользователя;
       * `<account_id>` — номер аккаунта панели управления, можно посмотреть в [панели управления](https://my.selectel.ru/) в правом верхнем углу;
       * `<path>` — путь к папке на локальной машине;
       * `<bucket_name>` — имя бакета.

    2. Сделайте файл исполняемым:

       ```bash
       chmod +x <file_name>
       ```

       Укажите `<file_name>` — имя файла со скриптом.

    3. Запустите скрипт:

       ```bash
       ./<file_name>
       ```

    4. Введите кодовое слово. Запустится резервное копирование, статистика отобразится в консоли.

    5. Опционально: для загрузки зашифрованной резервной копии из хранилища на локальную машину:

       5.1. Скопируйте скрипт из шага 1.

       5.2. В скрипте замените команду `duplicity <path> swift://<bucket_name>` на `duplicity swift://<bucket_name> <path>`.

       5.3. Сохраните скрипт в файле с именем `restore.sh`.

       5.4. Сделайте файл исполняемым:

       ```bash
       chmod +x restore.sh
       ```

       5.5. Запустите скрипт:

       ```bash
       ./restore.sh
       ```

       5.6. Введите кодовое слово. Все файлы из резервной копии будут загружены в указанную директорию на локальной машине.
  </TabItem>

  <TabItem value="s3" default>
    <TabItemLabel>
      S3
    </TabItemLabel>

    1. Убедитесь, что в бакете [включена Virtual-Hosted адресация](/s3/buckets/addressing-types.mdx#enable-virtual-hosted).

    2. Установите boto:

       ```bash
       sudo apt install python3-boto
       ```

    3. Создайте файл `touch duplicity.conf` с конфигурацией:

       ```bash
       [s3]
       aws_access_key_id = <access_key>
       aws_secret_access_key = <secret_key>
       bucket = <bucket_name>
       region = <pool>
       endpoint = <s3_domain>
       type = s3
       provider = Other
       env_auth = false
       ```

       Укажите:

       * `<access_key>` — значение поля **Access key** из [S3-ключа](#configure-s3-access);
       * `<secret_key>` — значение поля **Secret key** из [S3-ключа](#configure-s3-access);
       * `<bucket_name>` — имя бакета;
       * `<pool>` — [пул](/infrastructure/locations.mdx#pool), в котором находится S3;
       * `<s3_domain>` — [домен S3 API](/s3/manage/domains.mdx#s3-api-domains). Домен зависит от [пула](/infrastructure/locations.mdx#pool), в котором находится S3.

    4. Выполните архивирование:

       ```bash
       duplicity <path> s3://<s3_domain>/<bucket_name>
       ```

       Укажите:

       * `<path>` — путь к папке на локальной машине;
       * `<bucket_name>` — имя бакета.
  </TabItem>
</Tabs>

<Formbricks />
