TrueNAS или как восстановить облачные бекапы
У меня в домашней лаборатории self-hosted торчит TrueNas и по шедуллеру заливает бекапы критичных файлов по протоколу webdav в облако.
В облаке каждый файл имеет расширение .bin, если скачать к себе на машину такой файл, то внутри будет мусор.
ЧИТАТЬ ПЕРВЫМ В ТЕЛЕГРАМ ЧИТАТЬ ПЕРВЫМ В MAX
И тут возник логичный вопрос, если мой TrueNas пойдет по пизде, как мне забрать из бекапа файлы и расшифровать их без участия TrueNas?
Оказалось все довольно просто. Под капотом TrueNas установлен rclone, который и выполняет задачу резервирования данных. Получается имея на своей локальной машине rclone теоретически можно забрать шифрованные бекапы и легко их расшифровать.
Давай попробуем реализовать задуманное.
Бекапы шифруются с помощью Encryption Password и Encryption Salt, эти параметры задаются в TrueNas, соответственно нам понадобятся эти данные.
Для начала расшифруем один файл, посмотрим как всё проёдет.
Зашифрованный бекап файла я скачал к себе на машину и положил в папку /tmp/encrypted/file.jpg.bin
Если файл открыть на просмотр, увидим такое:
RCLONE......hx^..]]NN..
..=._.S...4:..b...P...3`.^u0yO Ҭ..)..fkMP...K..
Пишем конфиг ~/.config/rclone.conf:
[cryptbackup]
type = crypt
remote = /tmp/encrypted
filename_encryption = off
directory_name_encryption = false
password = ZK6U8CZRqP-vzf8XwDf0HwjO_Q
password2 = -GGulJpRclHETnHVhp1MMs
Этот конфиг сгенерился автоматически, после запуска rclone config и заполнения данных.
Чтобы получить зашифрованный пароль из командной строки, воспользуйся командой:
rclone obscure "<password>"
rclone obscure "<salt>"
Потом эти данные можешь подставить в конфиг.
Если в TrueNas включено шифрование имен, то в параметре
filename_encryptionнужно прописатьstandard. Не проебись, на конце буква «d».
Проверяем:
rclone ls cryptbackup:
1974875 file.jpg
Отлично! Что-то сработало. Давай наконец-то расшифруем этот файл:
rclone copy cryptbackup: /tmp/decrypted
Всё, задача решена, в папке /tmp/decrypted лежит расшифрованная картинка и прекрасно открывается.
Аналогично поступаешь и с другими файлами. Тут суть закинуть весь зашифрованный бекап в папку /tmp/encrypted и одной командой copy все прекрасно расшифруется в /tmp/decrypted сохраняя структуру папок.
По итогу имеем удобный и практичный способ восстанавливать такие штуки без участия TrueNas.
А так-же можно проверять такие бекапы после заливки их в облако, чтобы точно быть уверенным, что бекап точно рабочий.
Концепт проверки: автоматически забрать несколько контрольных файлов из бекапа, расшифровать, сверить внутренности с шаблоном и при проблемах — плюнуть в графану или в телегу алертом.
На этом всё. Хороших тебе выходных!