Intereting Posts
Может ли tar узнать формат архива, когда он подключается через wget? Ограничить список команд по SSH программа для ПК-телефона с использованием Gtalk? Как я могу увидеть процессы, выполняемые другим экземпляром root на моем Beaglebone Не удалось подключить файловую систему UFS от Sparc Solaris до x86_64 Linux Есть ли у Linux драйверы устройств для USB-портов? Появится новое окно на соответствующем мониторе Держите журнал ext4 в другой системе, сколько места потребуется? Почему приоритеты процесса не соблюдаются? Что делает команда sed? Настройка параметров сетевого прокси-сервера для всех пользователей на Ubuntu (без перезагрузки) Как завершить работу Linux в конкретном дате с терминала? как сохранить часть строк в файле на основе информации во втором файле? setpci – Создание скрипта для изменения яркости вручную как мне настроить систему RHEL5 или RHEL6 на использование ldap для аутентификации?

Удаленное выполнение извлечения борг

Учтите, что резервные копии были сделаны в удаленном хранилище, расположенном в /mnt/backup на server .

Для пользователей, не являющихся пользователями Borg, хранилище состоит из нескольких архивов. Один архив создается каждый раз при создании резервной копии. Теперь предположим, что я хочу извлечь определенный архив – для простоты, самый последний.

В настоящее время я делаю это, чтобы получить список архивов из удаленного хранилища, а затем сохранить их имена в массиве mailarchives . Это выглядит так:

 mapfile -t mailarchives < <(borg list --short 'faheem@server:/mnt/backup') 

Затем я извлекаю все файлы из mailarchive[-1] (самый последний архив), чтобы убедиться, что архив действителен и что я могу восстановить из него. Это выглядит так:

 borg extract -n 'faheem@server:/mnt/backup'::"${mailarchives[-1]}" 

Тем не менее, это использует колоссальные объемы данных, чтобы скопировать все локально. Итак, мой вопрос заключается в том, можно ли сделать все это удаленно и передавать результат (будь то успех или неудача) только локально через ssh . Я думаю, что это возможно, но я не знаю точно, как.

Еще более простой пример

 borg check faheem@server:/mnt/backup 

который по некоторым причинам также потребляет много данных.

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

И, наконец, заметка главного / ведущего разработчика Борг:

ThomasWaldmann> faheem: borg возвращает 0 при успехе, 1 при предупреждении, 2 при ошибке.

    Фактический ответ будет зависеть от того, как вы будете «проверять» свою резервную копию, и от способности вашего инструмента резервного копирования выполнять проверки.

    Я предполагаю, что вы используете borg и этого достаточно для borg check . Пожалуйста, отредактируйте свой вопрос, если у вас есть другие, особые требования к проверке резервной копии.

    Запустив borg удаленно:

    Для возможности удаленной borg check необходимо: 1) выполнить команды на удаленном сервере и 2) установить borg на удаленном сервере. Вероятно, это наиболее распространенная настройка, но есть альтернативы (repository может находиться на удаленном томе, смонтированном локально, например, с помощью sshfs ).

    Если ваш repository не зашифрован, вы можете проверить его командой:

     $ ssh user@host 'borg --show-rc check /path/to/repo' 

    borg будет работать на удаленном сервере, а не на локальной машине. Опция --show-rc заставит borg вывести свой код выхода; это будет показано на вашей локальной консоли (стандартный вывод перенаправлен). Вы можете добавить опции --verbose и --progress , чтобы получить больше информации.
    Вы также можете добавить опцию --verify-data чтобы все данные извлекались из хранилища, распаковывались и проверялись (удаленно).

    Когда вы запускаете borg check user@server:/path/to/repo/ local, даже без опции --verify-data , все сжатые данные в хранилище будут перенесены с удаленного на локальный.

    Причина, по которой документация borg умолчанию запускает borg локально, заключается в том, что рекомендуемая конфигурация включает шифрование, а по соображениям безопасности шифрование / дешифрование должно выполняться только локально.

    Если ваш repository зашифрован :

    • Если вы выбрали шифрование по ключевому файлу, вам нужно будет предоставить файл ключа удаленному процессу. Обычно это означает копирование его из ~/.config/borg/keys/key_name по тому же пути на удаленном сервере (альтернативные варианты см. В официальной документации).
    • Если вы выбрали шифрование repokey , удаленный процесс должен будет запросить у вас пароль.

    Чтобы позволить удаленному процессу запросить у вас пароль, вам нужно будет вызвать ssh с параметром -t , который выделит псевдо-терминал на удаленном сервере:

     $ ssh -t user@host 'borg --show-rc check /path/to/repo' 

    Важные соображения безопасности:

    Зашифрованный repository позволяет использовать частично доверенный сервер – сервер, которому вы доверяете достаточно, чтобы быть уверенным, что ваши данные не будут удалены или потеряны, но вы на самом деле не хотите видеть их.

    Если вы не полностью доверяете удаленному серверу, возможно, вы не захотите давать ему свой ключ шифрования и / или пароль. Это предотвратит удаленную проверку архивов и данных.
    Только проверка хранилища возможна без ее расшифровки: это то, что происходит, если вы вызываете borg check --repository-only ; блоки данных не проверяются – подробности см. в онлайн-документации.

    Если вам нужна borg check , можете ли вы просто запустить ее на server чтобы избежать огромной передачи данных? Может быть, я не совсем понимаю, чего вы пытаетесь достичь. Это будет выглядеть примерно так:

     ssh faheem@server screen # so you can resume after disconnect (optional) borg check /mnt/backup 

    С другой стороны, если вы хотите на самом деле проверить файлы самостоятельно, а не доверять утверждению Борга, что файлы в порядке, вы можете:

    • SSH к серверу
    • распакуйте архив во временную директорию на сервере (чтобы он использовал хранилище сервера, но не загружал / скачивал данные)
    • используйте инструмент, такой как hashdeep чтобы вычислить hashи для каждого файла
    • удалить временный каталог на сервере
    • скачать файл hashей
    • сравните hashи с вашими реальными файлами

    Если мои предложения не верны, возможно, вы могли бы лучше уточнить для меня, что вы пытаетесь сделать.