Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр
Игра «История одной фермы» - увлекательное и бросающее вызов вашим серым клеточкам приключение, от которого невозможно оторваться!

История одной фермы - маджонг

Маджонг, Казуальные, Приключения

Играть

Топ прошлой недели

  • AlexKud AlexKud 38 постов
  • SergeyKorsun SergeyKorsun 12 постов
  • SupportHuaport SupportHuaport 5 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня

Linux + Резервное копирование

С этим тегом используют

Windows IT Программирование Ubuntu IT юмор Компьютер Программист Сервер Данные Все
15 постов сначала свежее
33
neverlene
neverlene
9 месяцев назад
Лига Сисадминов

Резервное копирование в Linux: 6 инструментов и стратегия 3-2-1⁠⁠

Всем привет, буду рада если пригодится — в этой статье постоянный автор ispmanager Алексей Крячко собрал 6 инструментов полного резервного копирования Linux.

А подписчики на Хабре дополнили список — он тоже в посте. Ну и немного теории =)

Чек-лист резервного копирования здорового человека

Полнота. Бэкапы должны включать все критически важные компоненты проекта: базы данных, файлы сайта, конфигурационные файлы и мультимедийный контент.

Регулярность — чтобы минимизировать потери данных. Частота создания бэкапов зависит от динамики изменений на сайте. Как правило — варьируется от ежедневного до еженедельного.

Надежное хранение. Резервные копии не хранят на основных серверах. Желательно использовать облачные хранилища или отдельные физические носители.

Шифрование. Данные должны быть зашифрованы — это защита конфиденциальных данных от несанкционированного доступа. Критически важно! Обязательно заучиваем пароль шифрования. Проверьте — все хорошо только, если вас разбудили ночью и вы сразу и правильно его вспомнили.

Автоматизация. Автоматизация процессов снижает риск человеческой ошибки.

Тестирование восстановления— чтобы убедиться в работоспособности бэкапов.

Версионность. Хранение нескольких версий бэкапов полезно, если пригодится восстановление данных на определенный момент времени.

Прежде чем рассказывать об инструментах резервного копирования, расскажу о базовой, но чрезвычайно эффективной стратегии — основе любого плана защиты данных. Это концепция 3-2-1.

Концепция 3-2-1 

Золотой стандарт резервного копирования — концепция 3–2–1. Она называется так из‑за ее структуры. Если следовать концепции 3–2–1, потерять данные почти невозможно.

Разберем ее последовательно.

3 копии данных. Основная копия — это ваша рабочая система, которая используется ежедневно.

Две дополнительные резервные копии позволяют восстановить систему в случае повреждения или потери основной копии.

Что дает:

✓ Устойчивость к сбоям и потерям данных.

✓ Возможность выбора актуальной копии при восстановлении.

✓ Защита от ошибок в процессе резервирования — например, если одна из копий окажется поврежденной.

2 разных типа носителей. Использование различных типов носителей хранения минимизирует риск одновременного выхода из строя всех резервных копий.

Комбинация носителей может включать:

Локальные жесткие диски. Удобны из-за быстрого доступа и восстановления данных.

Сетевые хранилища (NAS). Удобны из-за централизованного управления и доступности в локальной сети.

Съемные носители (внешние HDD/SSD, оптические диски). Обеспечивают физическую изоляцию и мобильность.

Облачные хранилища. Плюсы — высокая доступность и масштабируемость, защита от локальных катастроф.

Что дает:

✓ Снижение риска потери данных из-за специфических проблем конкретного носителя.

✓ Повышенная гибкость и доступность резервных копий в различных сценариях восстановления.

1 копия вне офиса (оффсайт). Хранение одной резервной копии в удаленном месте обеспечивает защиту от локальных катастрофических событий, таких как пожары, наводнения, кражи или другие происшествия, способные уничтожить все локальные копии данных.

Варианты оффсайт-хранения:

Облачные сервисы. Например, Amazon S3, Google Cloud Storage, Backblaze B2 и др.

Удаленные физические локации — дата-центры, филиалы компании, банковские сейфы.

Ленточные хранилища вне офиса. Используют организации с высокими требованиями к долговременному хранению архивных данных.

Что дает:

✓ Высокий уровень безопасности и надежности хранения.

✓ Доступность данных даже при полной потере локальной инфраструктуры.

✓ Возможность географического распределения данных для глобальных компаний.

Инструменты для полного резервного копирования Linux-систем

В инструментах для полного резервирования Linux-системы для меня важно:

  • Способность создавать полные образы системы, включая все файлы, настройки, загрузочный сектор и так далее.

  • Надежность и проверенная репутация инструмента.

  • Простота использования и документация.

  • Поддержка различных носителей хранения.

  • Возможности автоматизации и планирования резервного копирования.

  • Шифрование и защита данных.

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

Вот какие инструменты для полного резервирования Linux-систем соответствуют моим требованиям:

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

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

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

Cyber Backup предлагает гибкие опции восстановления, позволяя пользователям восстанавливать как отдельные файлы, так и целые системы. Решение также интегрируется с функциями кибербезопасности, защищая данные от вирусов и атак.

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

Amanda (Advanced Maryland Automatic Network Disk Archiver) — это еще одно решение с открытым исходным кодом, ориентированное на резервное копирование и архивирование данных. Amanda позволяет централизованно управлять процессом резервного копирования в сети, поддерживает различные типы данных и обеспечивает надежное восстановление.

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

Veeam Backup & Replication — это коммерческое решение, которое обеспечивает комплексное резервное копирование и репликацию данных, включая виртуализированные и физические среды. Veeam широко используется для защиты корпоративных данных, включая полное резервное копирование операционных систем, виртуальных машин и баз данных.

Время восстановления: быстрое. Veeam предлагает функции моментального восстановления, которые позволяют запустить восстановленную систему практически мгновенно. Veeam известен своей способностью быстро восстанавливать виртуальные машины и физические системы, особенно в виртуализированных средах.

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

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

Clonezilla — это свободное программное обеспечение для создания и восстановления образов дисков и разделов. Оно позволяет клонировать целые жесткие диски или отдельные разделы, что полезно для резервного копирования данных, развертывания операционных систем или переноса данных на новые устройства. Clonezilla поддерживает различные файловые системы и может работать с неструктурированными данными, копируя сектор за сектором. Инструмент также способен сжимать данные для экономии места и поддерживает создание и восстановление образов через сеть.

Время восстановления: быстрое. Clonezilla хорошо подходит для восстановления полного образа системы, но не столь эффективна для восстановления отдельных файлов. Инструмент быстр при небольших объемах данных, но может быть медленным для крупных систем. Clonezilla делает прямое клонирование, поэтому восстановление зависит от размера данных и скорости носителя.

Для быстрого восстановления в корпоративных или виртуализированных средах лучше всего подойдут:

  • Veeam Backup & Replication,

  • Cyber Backup

  • Acronis Cyber Protect.

Clonezilla подойдет для быстрого восстановления отдельных систем или разделов, особенно в небольших сетях или на персональных компьютерах. Bacula и Amanda могут потребовать больше времени на восстановление, особенно в сложных и крупных инфраструктурах.

Хабр дополняет:

  • Bup

  • dd

  • Restic

  • kopia (класс)

  • rsync

  • elkarbackup

  • borgmatic

  • bareos

Если нужно инкрементально бэкапировать систему на NAS:

  • urbackup,

  • Cream agent windows.


Первоначально статья опубликована в блоге ispmanager

Показать полностью
Linux Резервное копирование Длиннопост Текст
15
134
aikrr
aikrr
9 месяцев назад
Лига Сисадминов

Мой сервер бэкапов⁠⁠

Дошли наконец-то руки сделать персональный сервер бэкапов, который будет стоять не у меня дома. С этой мыслью я уже несколько лет хожу, делал несколько подходов, но вот наконец-то звёзды сошлись — у меня и железка под него образовалась, и дисков в достаточном количестве, и ОС наконец-то более-менее подобрал.

В качестве железа выбрал старенький HP Microserver Gen7. Продавать большого смысла не видел, куда-то в продакшн ставить тоже — он почти на любой чих под 100% загружается, если какие-то сервисы вешать или просто в несколько потоков файлы по гигабитной сети копировать. А вот с простым хранением файлов он ещё справится.

Мой сервер бэкапов Nas, Резервное копирование, Linux, Сервер, Длиннопост

Коробочка сверху по производительности - как два десятка gen7

Это не пошаговая инструкция, это небольшой отчёт на тему «как можно сделать», может кто для себя идеи почерпнёт.

Если же закрыть глаза на процессор, то в остальном из микросервера получается вполне достойный NAS — четыре-пять слотов под 3.5″ диски, плюс можно внутри корпуса кинуть SSD, благо имеется пять SATA-портов и внешний e-SATA, который я завёл внутрь.

Мой сервер бэкапов Nas, Резервное копирование, Linux, Сервер, Длиннопост

SSD просто валяется сзади, но это не страшно, ничего ему от этого не будет

Первый раз я более-менее серьёзно пытался подойти к задаче в начале года, поставил было на него TrueNAS Scale. Но по дискам у меня тогда была сборная солянка от 3 до 6 терабайт, да ещё самые большие диски были SMR. А TrueNAS — это zfs. А zfs — это враг черепичных дисков (ну или черепичные диски — враг SMR). Плюс, даже если считать, что диски все CMR, собирать массивы на zfs из разных дисков нерационально. Либо большие потери, либо придётся кроить и попадать на потерю ёмкости или головную боль при возможной замене дисков.

Потому TrueNAS снёс, сервер отложил. В начале лета снова вернулся, решив поставить на него Open Media Vault 7.

Мой сервер бэкапов Nas, Резервное копирование, Linux, Сервер, Длиннопост

Объединил диски при помощи mergerfs, а избыточность захотел получить при помощи snapraid. Некоторое время поигрался со всем этим и понял, что сегодняшний OMV мне нравится ещё меньше, чем TrueNAS. От системы плагинов уже почти ушли, а к нормальной поддержке докера всё ещё не пришли. Да и веб-интерфейс его мне никогда особо не нравился. Хотя чего у OMV не отнять — это того, что он на любой табуретке запускается, к ресурсам совершенно не требователен. Но, в остальном, у меня создаётся ощущение, что разработчики сами пока не знают, что хотят получить в итоге. Потому для меня OMV — это дистрибутив для простейшей файлопомойки на слабом железе для тех случаев, когда хочется иметь хоть какой-то веб-интерфейс и не хочется использовать zfs. Если же железо позволяет — лучше смотреть на другие варианты.

Но тут у меня наконец-то образовалась пачка одинаковых по объёму дисков, да ещё и не черепичных. Потому решил дать TrueNAS второй шанс. Тем более, что в свежей бете (Electric Eel) они наконец-то прикрутили более-менее нормальную поддержку докера, переходя на него c kubrnetes.
Что совпало со смертью каталога приложений TrueCharts, который до этого был основным источником контейнеров для TrueNAS Scale.

Для меня, как человека, который и с докером-то пару-тройку лет назад только общаться начал, а про kubernetes слышал только что «это какие-то контейнеры для энтерпрайза», такое стечение обстоятельство только на пользу.

Железо у меня в итоге получилось такое:

HP Microserver Gen7, с процессором AMD Turion(tm) II Neo N40L — 1,5GHz, 2 ядра (по производительности это примерно Rasperry Pi4).
16 GB оперативной памяти (обычной, не ECC)
4 диска по 6TB, один диск на 4TB и SSD на 500GB.
Дополнительно поставил USB-контроллер и вторую сетевую карту (пока гигабит, потом на 2.5 заменю).

ОС — TrueNAS SCALE 24.10

Мой сервер бэкапов Nas, Резервное копирование, Linux, Сервер, Длиннопост

Обязательно должен быть dashboard, можно даже два

Про установку писать не буду, там всё несложно — загрузился с CD, поставил ОС, зашел через веб-интерфейс — пользуешься. Разве что по мелочи:

  1. Загрузочным диском я выбрал USB-флэшку Sandisk Extreme на 32 гигабайта. Вообще, это не особо приветствуется, как я понял. Но Sandisk Extreme — очень выносливые флэшки, в отличие от всяких там Ultra. А флэшку на 32 гигабайта мне использовать особо некуда было, объём маловат. Так что пригодилась. Благо у сервера есть внутренний USB-разъём и снаружи ничего не торчит.

  2. Когда установщик спрашивал про EFI, я решил было, что у меня система старая и пусть лучше Legacy-загрузчик сделает. Как выяснилось, это было ошибкой — установка прерывалась с сообщением «не могу найти sda3». Некоторое время повозился с конфигами (ошибка не особо редкая, рекомендовали вставить в скрипт установки sleep 20), но в итоге всё решилось просто ответом «Да» на вопрос про EFI.

  3. Изначально я ставил стабильную версию, 24.04. После установки как раз и узнал про то, что каталог приложений TrueCharts помер, а сам TrueNAS Scale движется в сторону докера. Потому просто обновил систему через встроенный апдейтер до 24.10, даже переустанавливать не пришлось.

Диски

Четыре шеститерабайтника я собрал в массив raidz2, решил, что это будет надёжней, чем подобие raid10, пусть и менее производительно. Правда, после первой же перезагрузки я получил разваленный массив.

Не знаю, что тут конкретно виновато — я не туда нажимал или бета‑версия нахимичила. По ощущениям, Truenas собрал массив из четырёх дисков «виртуально» — после сборки массива он писал «доступно пять дисков вне пула». При этом один диск он в массив таки включил и что‑то на него писал и читал. Но только до перезагрузки. После перезагрузки же в массиве остался только один диск, справка писала «изя всё» и предлагала только восстановление из бэкапа. Потому, когда собрал новый массив, несколько раз перезагрузился для проверки. Новый массив больше не разваливался.

SSD используется для установки приложений.

А оставшийся диск на 4ТБ — под что-то типа архива и бэкапов бэкапов. Да, он будет работать без резервирования, но даже если помрёт, то на нём будут только копии копий находиться и вообще не особо важные данные вида «не хочется потерять, но не настолько важные, чтобы пихать их на основной массив».

Задачи сервера

Основная задача — оффсайтовый бэкап для домашнего сервера. Не всего подряд, само собой — дома у меня занято 30 терабайт, но того, что действительно жалко потерять, там порядка 3–4 терабайт. Пока эти бэкапы делаются в вандрайв (с шифрованием), но там подписка через год заканчивается и особого желания её продлять у меня нет — терабайтных облачных хранилищ у меня и так достаточно, офис 2010 или 2013, на которые у меня есть лицензии, для моих нужд ничем не хуже, чем офис365.

Вторичная — резервный сервер для некоторых сервисов, которые крутятся на домашнем сервере. К примеру, бывает полезно иметь второй инстанс сервиса, если к основному нет доступа. Пусть даже и БД этого инстанса не очень актуальна. Примеры — RSS-читалка (freshrss), vaultwarden (менеджер паролей), мониторинг аптайма (uptime kuma) и прочие мелочи, которые не требуют много процессорной мощности.

Установка приложений

Поскольку версия truenas пока ещё в бете, библиотека приложений тут достаточно ограничена, хотя и пополняется потихоньку — несколько дней назад было 96 приложений в каталоге, сейчас уже 102. А свои приложения так сразу непонятно, как добавлять. Раньше была кнопка «добавить контейнер», сегодня же её не видно. Конечно, можно зайти в консоль и оттуда вводить команды докера, но не затем я уходил с OMV, чтобы с консолью возиться.

Мой сервер бэкапов Nas, Резервное копирование, Linux, Сервер, Длиннопост

В репозитории имеются portainer и dockge. Portainer лично мне кажется слишком уж замороченным для простой задачи «поставить контейнер». Он слишком много умеет и глаза от этого разбегаются. Потому я его максимум ставил для того, чтобы мониторить работу контейнеров. А конфиги писал и ставил всё из консоли.

А вот dockge прост и лаконичен, если речь идёт просто об запуске контейнера. Вставляешь в поле текст yml-файла, запускаешь. Либо скармливаешь ему команду вида docker run — он её преобразует в конфиг, читаешь — редактируешь по потребности — запускаешь.

Мой сервер бэкапов Nas, Резервное копирование, Linux, Сервер, Длиннопост

Запуск librespeed

Та же командная строка, просто в браузере. На страничке можно контейнер остановить, запустить, обновить, в шелл контейнера зайти, логи почитать…

При этом dockge видит «чужие» контейнеры (которые truenas ставил), но рулит только своими. Это мне кажется удобным компромиссом — что можно ставишь из админки truenas, что нельзя — через dockge. Когда это что-то добавится в truenas — ну или когда там вернут полноценную работу с контейнерами — можно будет аккуратно мигрировать.

Доступ к серверу «из мира»

Я не стал выставлять сервер в мир, он смотрит только в провайдерскую сеть и имеет приватный IP, что в данном случае меня вполне устраивает — дома есть подключение к тому же провайдеру, потому можно не задумываться о пробросах портов и т.п.

С другой стороны — к некоторым сервисам хочется иметь доступ извне, если уж делать тут резервный инстанс. Можно было бы сделать проброс портов с моего vps, допустим, но в данном случае мне проще было воспользоваться туннелями Cloudflare (cloudflared). Да, это опять привязка к третьей стороне, от которой я как бы ухожу, но, в данном случае, она не критичная. Если вдруг cloudflare отвалится, никто не мешает вернуться к вариантам с VPN, пробросом портов или просто купить реальный IP.

Технически это всё выглядит следующим способом:

В админке Cloudflare в разделе Zero Tier создаёте туннель, он вам говорит ID туннеля.

На своём сервере (или вообще на любом компьютере) ставите демон cloudflared и в настройках ему указываете ID туннеля. И дальше со стороны Cloudflare указываете поддомен, через который хотите обращаться к сервису и локальный IP:порт этого сервиса.
Единственное ограничение — доменом должен рулить cloudflare. Не обязательно его там покупать (хотя я купил специально под это дело отдельный домен), но DNS должен быть прописан тамошний.

Тут два туннеля — на админку и на контейнер с librespeed.

Мой сервер бэкапов Nas, Резервное копирование, Linux, Сервер, Длиннопост

Скорость, по ощущениям, режется втрое, но тут мне сложно сказать, кто виноват — туннель такой медленный или микросервер не тянет. Впрочем, на меня одного для доступам к мелким сервисами типа пинговалки или vaultwarden’a такого туннеля вполне хватит.

Если измерять скорость через вышеупомянутый librespeed, то при прямом подключении внутри провайдерской сети — практически заявленные 100 мегабит.

Мой сервер бэкапов Nas, Резервное копирование, Linux, Сервер, Длиннопост

А вот через туннель 40 мегабит — это максимум, который удалось получить. Чаще же в районе 25-30 болтается. Впрочем, это для меня вполне терпимо, если не качать большие объёмы данных. А их я пока что качаю через локальную сеть провайдера.

Мой сервер бэкапов Nas, Резервное копирование, Linux, Сервер, Длиннопост

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

Бэкап как таковой

Можно пользоваться чем нравится, я пока что остановился на двух методах.

Самое большое и важное, что мне надо сохранять — это фотографии за много лет, которых уже порядка двух с половиной терабайт. Раньше они у меня через syncthing копировались на домашний сервер, а оттуда при помощи duplicati заливались в onedrive. Так что просто добавить ещё один инстанс syncthing’a смотрелось вполне логично. Ну и дальнейшую работу, наверное, большей частью буду в рамках syncthing’a организовывать. Хотя можно и любые другие протоколы использовать при необходимости.

Syncthing есть в каталоге приложений, ставится без вопросов. Само собой, надо в контейнер папку подмонтировать, куда бэкапы складывать. Сперва я посмотрел, как оно работает через глобальное обнаружение и посредников — вышло не очень. Максимум видел порядка 50 мегабит скорость, а так вообще колебалась в районе 10-20 мегабит. Два-три терабайта так качать совсем не хотелось.

Мой сервер бэкапов Nas, Резервное копирование, Linux, Сервер, Длиннопост

Потому настроил прямое соединение с домашним компьютером, выставив наружу порт syncthing’a на домашнем роутере. Так добился полной скорости — 100 мегабит, больше провайдер не предоставляет. Загрузка процессора при синхронизации колеблется в районе 50–70%, но особых лагов в админке не ощущается.

Второй способ — копирование данных с линуксовых серверов через rsync. Тут всё просто, был бы доступ к серверу по ssh. В настройках TrueNAS есть rsync tasks, просто добавляешь туда что, откуда и куда копировать, настраиваешь расписание — и вперёд.

Мой сервер бэкапов Nas, Резервное копирование, Linux, Сервер, Длиннопост

Версионность — через снапшоты zfs. На каждую папку с бэкапами я создаю отдельный датасет, потому могу снапшоты настраивать достаточно гибко, где каждый час, а где — каждую неделю.

Планы на будущее

Из аппаратного:
Постараюсь заменить память на ECC. Раньше я к этом относился "хорошо, но не обязательно, а вот после приколов с домашним сервером стал относиться более серьёзно. Но новую память по 7000 за модуль брать жаба не даёт, а али завалено регистровой памятью, которую микросервер не понимает. Так что придётся искать ECC UDIMM на барахолках, что дело не быстрое.

Заменю гигабитную сетевушку на 2.5 гигабита. Это для «внутренней» связи — на работе кроме микросервера у меня стоит небольшой вебсервер, который я перепрофилирую в ноду proxmox — с него тоже надо будет делать бэкапы, так что пусть они делаются на большей скорости. Ну и свой рабочий компьютер тоже добавлю сетевушку на 2.5 и воткну в тот же свитч.

Может быть, сниму контроллер usb-3 и поставлю вместо него переходник на nvme-диск — под кэш для массива.

По самому микросерверу — я не могу его рекомендовать, если вы собираете сервер совсем с нуля. В gen7 из полезного — только корпус на 4-5 дисков. Но нормально он себя ведёт только в связке с родной материнкой, если же её захочется обновить — то усилий по допиливанию корпуса под mini-ITX будет затрачено довольно много. По мне так проще потратиться на какой-нибудь китайский корпус и там уже собрать систему на нормальном железе. Или взять готовый NAS на x86 и поставить на него интересную вас ОС. Я микросервером воспользовался только по той причине, что он у меня имелся и по производительности более-менее устраивал. Иначе бы взял Jonsbo N2, очень симпатичный корпус, хоть и не очень бюджетный. Или N1.

Из программного:

Дождусь релиза TrueNAS 24.10. Прикручу бэкапы со своих облаков, которыми пока пользуюсь (вандрайв, мэйл, яндекс). Настрою бэкап почты с тех же gmail’ов и яндексов. Ну и настрою обратный бэкап на домашний сервер. Бэкапов много не бывает.

В остальном я не вижу каких-то серьёзных путей для развития. Основное всё сделано, а дальше уже только использование по назначению остаётся. Все эксперименты и тяжелые задачи пойдут на второй сервер (который с proxmox’ом). Но это отдельная история, отдельной статьи не заслуживающая. Материалов на тему «как я поставил proxmox» в сети навалом в любых видах.

Показать полностью 11
[моё] Nas Резервное копирование Linux Сервер Длиннопост
60
4
m474
1 год назад
Homelab

Те, кто делают бэкапы и те, кто еще не делает...⁠⁠

Подскажите, у кого как выстроен процесс по резервному копированию в хоумлабе.

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

Вроде бы и не так уж много пока чего сделано, но снова проходить через все эти настройки не хочется.

На текущий день у меня одна физическая нода для экспериментов и на ней:

Ubuntu server 22.04 minimized
Docker engine

Контейнеры в докере:
Portainer
Ngnix reverse proxy (настроены поддомены на сервисы с Let's encrypt wildcard сертификатом)
Home assistant (в нем порядка 5-6 интеграций и 20-30 устройств)
Jackett
TorrServer
Wireguard

Home assistant ежедневно бэкапится на NAS в локалке. Шара на насе подключена через маппинг docker volume. В принципе, можно по расписанию на эту же шару бэкапить все volume докера и compose файлы. В общем, с докером хотя бы ясность есть.

А вот как мне забэкапить настройки самой OS и приложений, чтобы можно было ее быстро заново развернуть?

Резервное копирование Linux Текст
3
151
mfc166
mfc166
2 года назад
GNU/Linux
Серия Linux

Использование Timeshift для управления снимками в Debian на Btrfs⁠⁠

Всем привет, на связи Уханов. В прошлом посте мы поприкалыавались на тему создания автоматических снимков файловой системы BTRFS в Debian. Тогда в конце заметки я упомянул, что Grub можно научить грузить систему прямо из снимка. Давайте сделаем это, а заодно, рассмотрим другую программу для управления снимками.

Нюанс установки системы

В посте про установку Debian на subvolume BTRFS я подробно рассказывал про процесс. Принцип действий будет тот-же, но subvolume должно быть только два: @ и @home. Subvolume @ мы будем использовать для корня файловой системы. Вот только нюанс в том, что установщик создаёт первый subvolume с именем @rootfs. Начнём.

Итак, дорогой друг, ты уже разметил диск, создал файловую систему и дошёл до этапа установки базовой системы. Словом, всё как в руководстве .

Итак, жми CTRL+ALT+F2 и погружайся в консоль. Осмотримся что у на по дискам:

df

Использование Timeshift для управления снимками в Debian на Btrfs Linux, Debian, Файловая система, Резервное копирование, Длиннопост

Отмонтируем всё, что касается /target

umount /dev/sda1 && umount /dev/sda3

Примонтируем нашу BTRFS для работы с ней:

mount /dev/sda3 /mnt

Посмотрим что там внутри

cd /mnt ls

Как я и говорил, там один subvolume с именем @rootfs. Нам надо его переименовать, но система сделать это не даст. Ты же помнишь, что в BTRFS снимок - это тоже subvolume? Делаем финт ушами снимок subvolume, называем его @ и удаляем старый subvolume с именем @rootfs.

btrfs subvolume snapshot /mnt/@rootfs /mnt/@ btrfs subvolume delete /mnt/@rootfs

Создаём subvolume для домашних каталогов:

btrfs subvolume create @home

Проверяем сделанное:

btrfs subvolume list /mnt

Мы должны видеть два subvolume: @ и @home. Отмонтируем и монтируем корень уже куда надо:

umount /mnt mount -o rw,noatime,compress=lzo,space_cache,subvol=@ /dev/sda3 /target

Создадим каталоги:

mkdir -p /target/boot/efi mkdir -p /target/home

Монтируем оставшееся:

mount /dev/sda1 /target/boot/efi

mount -o rw,noatime,compress=lzo,space_cache,subvol=@home /dev/sda3 /target/home

Использование Timeshift для управления снимками в Debian на Btrfs Linux, Debian, Файловая система, Резервное копирование, Длиннопост

Заметьте, что в отличие от предыдущей заметки я монтирую не через subvolid, а через subvol. То есть не по id, а по имени. Это важно. Там-же пишем и в fstab

nano /target/etc/fstab

Примерно так:

Использование Timeshift для управления снимками в Debian на Btrfs Linux, Debian, Файловая система, Резервное копирование, Длиннопост

Жмём CTRL+ALT+F1 и продолжаем установку.

Установка Timeshift

Timeshift - свободная программа, предназначенная для автоматического периодического резервного копирования и восстановления системы Linux. Она умеет создавать резервные копии через rsync или снимки BTRFS вручную или по расписанию. Установим:

sudo apt install timeshift

Пройдём несложную процедуру настройки и создадим тестовый снимок:

Использование Timeshift для управления снимками в Debian на Btrfs Linux, Debian, Файловая система, Резервное копирование, Длиннопост
Использование Timeshift для управления снимками в Debian на Btrfs Linux, Debian, Файловая система, Резервное копирование, Длиннопост
Использование Timeshift для управления снимками в Debian на Btrfs Linux, Debian, Файловая система, Резервное копирование, Длиннопост

Создание снимков при работе APT

Для того, чтобы снимки автоматически создавались при установке, удалении и обновлении пакетов, необходимо поставить пакет timeshift-autosnap-apt. Начнём.

sudo apt install git make

git clone https://github.com/wmutschl/timeshift-autosnap-apt.git /home/$USER/timeshift-autosnap-apt

cd /home/$USER/timeshift-autosnap-apt

sudo make install

Проверим создание снимков установкой Midnight Commander:

sudo apt install mc

Видим, что снимок создан:

Использование Timeshift для управления снимками в Debian на Btrfs Linux, Debian, Файловая система, Резервное копирование, Длиннопост

Загрузка системы из снимка

Для этого нам потребуется пакет grub-btrfs. Установим его.

git clone https://github.com/Antynea/grub-btrfs.git /home/$USER/grub-btrfs

cd /home/$USER/grub-btrfs

sudo make install

Теперь надо включить пункт меню загрузки:

nano /etc/default/grub-btrfs/config

Раскомментируйте пункт GRUB_BTRFS_SUBMENUNAME

Использование Timeshift для управления снимками в Debian на Btrfs Linux, Debian, Файловая система, Резервное копирование, Длиннопост

Мы видим, что теперь при установке пакетов редактируется меню загрузчика GRUB:

Использование Timeshift для управления снимками в Debian на Btrfs Linux, Debian, Файловая система, Резервное копирование, Длиннопост

Теперь появилось дополнительное подменю, откуда можно загрузиться в желаемый снимок.

Использование Timeshift для управления снимками в Debian на Btrfs Linux, Debian, Файловая система, Резервное копирование, Длиннопост

Восстановление

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

Использование Timeshift для управления снимками в Debian на Btrfs Linux, Debian, Файловая система, Резервное копирование, Длиннопост

У меня не заработала кнопка “Обзор” и средствами программы мне не удалось увидеть файлы в снимке. Впрочем, снимок можно примонтировать вручную.

Программа умеет делать копии и на файловой системе EXT4 при помощи rsync.

Оригинал как обычно в моём блоге.

Показать полностью 10
[моё] Linux Debian Файловая система Резервное копирование Длиннопост
46
57
mfc166
mfc166
2 года назад
GNU/Linux
Серия Linux

Автоматическое создание снимков BTRFS при помощи Snapper⁠⁠

В комментариях был вопрос о том, зачем ставить систему на subvolume BTRFS. Одна из приятных возможностей, которые открываются при таком подходе, гибкое использование снимков. Давайте автоматизируем их создание при помощи Snapper. Он из коробки создаёт снимки при работе APT. Один до и один после. Так можно точно увидеть что изменилось в процессе работы пакетного менеджера. Разделение файловой системы на subvolume позволяет точно разделять котлет от мух.
Возьмём систему с двумя subvolume :

  • @rootfs для корневой файловой системы. Тут ты всё сам понимаешь. Именно в этом subvolume будут происходить изменения когда ты что-то устанавливаешь или обновляешь.

  • @home для домашних каталогов. Ты же не хочешь при откате обновлений системы потерять свои документы или фото? Поэтому отделяем.

Установка Snapper

Мы будем использовать Snapper - инструмент, упрощающий и автоматизирующий работу со снимками. Он позволяет удобно создать снимок subvolume как вручную, так и автоматически. Автоматически снимки создаются по таймеру, при загрузке и при работе пакетного менеджера APT. Начнём.

apt install snapper

Если мы работаем в графическом режиме, ставим GUI

apt install snapper-gui

Надо создать начальную конфигурацию под каждый subvolume

snapper -c root create-config /  snapper -c home create-config /home

Использование

Снимки бывают трёх типов:

  • Single. Просто одиночный снимок, созданный вручную или автоматически.

  • Pre. Снимок, созданный перед определённым событием. Например, перед работой APT.

  • Post. Снимок, созданный после определённого события. Например, после работы APT. Обязательно ссылается на pre снимок.

Например я установлю Midnight Commander:

sudo apt install mc

После чего просмотрю снимки:

sudo snapper list

Автоматическое создание снимков BTRFS при помощи Snapper Linux, Debian, Файловая система, Резервное копирование, Длиннопост

Snapper-Gui надо запускать через sudo, иначе снимков не видно. Вот снимки после установки MC:

Автоматическое создание снимков BTRFS при помощи Snapper Linux, Debian, Файловая система, Резервное копирование, Длиннопост

Просмотр изменений

Увидеть что изменилось можно командой сравнения двух снимков. Для этого надо указать номера снимков.

snapper status 1..2

Вывод команды покажет изменения в снимках:

Автоматическое создание снимков BTRFS при помощи Snapper Linux, Debian, Файловая система, Резервное копирование, Длиннопост

В Snapper-Gui выделяем два снимка и нажимаем кнопку Changes:

Автоматическое создание снимков BTRFS при помощи Snapper Linux, Debian, Файловая система, Резервное копирование, Длиннопост

Можно увидеть и разницу в файлах:

sudo snapper diff 1..2

Автоматическое создание снимков BTRFS при помощи Snapper Linux, Debian, Файловая система, Резервное копирование, Длиннопост

В Snapper-Gui всё это удобнее и тоже хорошо видно на скриншоте выше.

Отмена изменений

sudo snapper undochange 1..2

Секунда и APT не знает ни про какой MC.

Автоматическое создание снимков BTRFS при помощи Snapper Linux, Debian, Файловая система, Резервное копирование, Длиннопост

В снимок можно зайти с правами суперпользователя как в каталог и забрать руками нужные файлы.

Автоматическое создание снимков BTRFS при помощи Snapper Linux, Debian, Файловая система, Резервное копирование, Длиннопост

Это простые BTRFS снимки и в случае невозможности загрузиться в систему можно можно загрузиться с флешки и восстановить систему из снимка. Не знаю как Debian, но у Arch Linux можно в Grub добавить пункт загрузки из снимка.

В следующий раз рассмотрим ещё одно аналогичное, но более удобное приложение.

Оригинал как обычно в моём блоге.

Показать полностью 7
[моё] Linux Debian Файловая система Резервное копирование Длиннопост
4
64
gogobugogo
gogobugogo
2 года назад
Лига Сисадминов
Серия SRE

WAL-G — инструмент для бэкапа и восстановления БД⁠⁠

WAL-G — прекрасный, быстрый, простой и эффективный инструмент для резервного копирования БД (PostgreSQL/MySQL/MariaDB/MongoDB/FoundationDB и т.п.) в почти любые облака (Amazon S3/MinIO, Yandex Object Storage, Google Cloud Storage, Azure Storage, Swift Object Storage и просто на файловую систему).


Исходники на github, собранные rpm под CentOS.


Расскажу на примере PostgreSQL и MongoDB, как пользоваться этой штукой. Версии актуальны на август 2022 года.


Все бэкапы складываю в MinIO — легкое хранилище объектов, совместимое с Amazon S3.

В местном редакторе не предусмотрен тег для кода, поэтому буду оформлять его в цитаты.


PostgreSQL


Для теста на одном из хостов поднимем PostgreSQL12:

yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL- 7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
yum install postgresql12-server
/usr/pgsql-12/bin/postgresql-12-setup initdb
systemctl enable postgresql-12 && systemctl start postgresql-12

создаю тестовую базу:

su — postgres
psql
create database test1;
\c test1;
CREATE TABLE indexing_table(created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW());

Генерирую и вливаю в тестовую базу данные размером около 1 Гб:


CREATE TABLE large_for_test (num1 bigint, num2 double precision, num3 double precision);
INSERT INTO large_for_test (num1, num2, num3)
SELECT round(random()*10), random(), random()*142
FROM generate_series(1, 20000000) s(i);
EXPLAIN (analyse, buffers)
SELECT num1, avg(num3) as num3_avg, sum(num2) as num2_sum
FROM large_for_test
GROUP BY num1;


Чтобы архиватор внутри базы сам заливал WAL-журналы в облако и восстанавливался из них (в случае необходимости) настраиваю некоторые параметры в postgresql.conf:

wal_level=replica
archive_mode=on
archive_command=’/usr/local/bin/wal-g wal-push \”%p\” >> /var/log/postgresql/archive_command.log 2>&1'
archive_timeout=60
restore_command=’/usr/local/bin/wal-g wal-fetch \”%f\” \”%p\” >> /var/log/postgresql/restore_command.log 2>&1'

Подробнее обо всех этих параметрах можно прочитать в переводе официальной документации.


И рестартую PostgreSQL:

systemctl restart postgresql-12

На тот же хост, где и PostgreSQL, ставлю WAL-G версии 0.2.15 (по сути — это просто один бинарник, без внешних зависимостей):

curl -L https://github.com/wal-g/wal-g/releases/download/v0.2.15/wal... -o wal-g.linux-amd64.tar.gz
tar -xzf wal-g.linux-amd64.tar.gz
mv wal-g /usr/local/bin/
Бинарники (для разных БД) самой свежей на данный момент версии 2.0.1 лежат здесь.


Для конфигурирования WAL-G нужно положить файл .walg.json (пример файла здесь) в домашнюю директорию пользователя postgres:

cat > /var/lib/pgsql/.walg.json << EOF
{
"AWS_ENDPOINT": "http://minio:9000",
"WALG_S3_PREFIX": "s3://pgbackup",
"AWS_ACCESS_KEY_ID": "admin",
"AWS_SECRET_ACCESS_KEY": "password",
"AWS_S3_FORCE_PATH_STYLE": "true",
"WALG_COMPRESSION_METHOD": "brotli",
"WALG_DELTA_MAX_STEPS": "5",
"PGDATA": "/var/lib/pgsql/12/main",
"PGHOST": "/var/run/postgresql/.s.PGSQL.5432"
}
EOF

Не забываем поменять владельца этого файла:

chown postgres: /var/lib/pgsql/.walg.json
Бэкап


Проверяю создание полного бэкапа: в WAL-G это аргумент запуска backup-push. Для начала выполняю эту команду вручную от пользователя postgres, чтобы убедиться что всё хорошо (не забудьте сначала создать бакет с именем из WALG_S3_PREFIX):


time su — postgres -c ‘/usr/local/bin/wal-g backup-push /var/lib/pgsql/12/data’
INFO: 2020/08/17 06:05:00.211318 Couldn’t find previous backup. Doing full backup.
INFO: 2020/08/17 06:05:00.225448 Calling pg_start_backup()
INFO: 2020/08/17 06:05:01.819922 Walking …
INFO: 2020/08/17 06:05:01.820466 Starting part 1 …
INFO: 2020/08/17 06:05:21.049285 Finished writing part 1.
INFO: 2020/08/17 06:05:21.049323 Starting part 2 …
INFO: 2020/08/17 06:05:21.149069 Finished writing part 2.
INFO: 2020/08/17 06:05:21.659995 Starting part 3 …
INFO: 2020/08/17 06:05:21.660060 /global/pg_control
INFO: 2020/08/17 06:05:21.660309 Finished writing part 3.
INFO: 2020/08/17 06:05:21.662065 Calling pg_stop_backup()
INFO: 2020/08/17 06:05:23.878346 Starting part 4 …
INFO: 2020/08/17 06:05:23.878460 backup_label
INFO: 2020/08/17 06:05:23.878490 tablespace_map
INFO: 2020/08/17 06:05:23.878635 Finished writing part 4.
INFO: 2020/08/17 06:05:24.924564 Wrote backup with name base_00000001000000000000007E
real 0m24.829s
user 0m20.669s
sys 0m2.323s

Бэкап ~1 Гб БД выполняется очень быстро.


В MinIO в нужном бакете появляются бэкапы, 1 Гб БД ужимается до 351.92 Мб.


Если всё прошло без ошибок, то далее можно добавить периодический запуск этой команды в crontab. Необходимо учесть, что хранение всех бэкапов вечно не имеет никакого смысла, поэтому нужно настроить удаление старых резервных копий (можно в том же кроне).


Восстановление


Попробуем восстановиться по-взрослому, удалив все данные (БД и пользователей).


Останавливаю PostrgeSQL:

systemctl stop postgresql-12

Удаляю все данные из текущей базы:

rm -rf /var/lib/pgsql/12/data

Скачиваю резервную копию и разархивирую её:

su — postgres -c ‘/usr/local/bin/wal-g backup-fetch /var/lib/pgsql/12/data LATEST’


От имени пользователя postgres помещаю рядом с базой специальный файл-сигнал для восстановления (подробнее здесь) :

su — postgres -c ‘touch /var/lib/pgsql/12/data/recovery.signal’

Запускаю базу данных, чтобы она инициировала процесс восстановления:

systemctl start postgresql-12 && systemctl status postgresql-12

Смотрим логи, там красота :)

2020–08–17 08:57:55.281 EDT [25536] LOG: starting archive recovery
2020–08–17 08:57:55.876 EDT [25536] LOG: restored log file “000000010000000100000044” from archive
2020–08–17 08:57:56.617 EDT [25536] LOG: redo starts at 1/44000028
2020–08–17 08:57:56.834 EDT [25536] LOG: restored log file “000000010000000100000045” from archive
2020–08–17 08:57:58.006 EDT [25536] LOG: consistent recovery state reached at 1/45000050
2020–08–17 08:57:58.007 EDT [25533] LOG: database system is ready to accept read only connections
2020–08–17 08:57:58.223 EDT [25536] LOG: restored log file “000000010000000100000046” from archive
2020–08–17 08:57:59.811 EDT [25536] LOG: redo done at 1/46000148
2020–08–17 08:58:00.096 EDT [25536] LOG: restored log file “000000010000000100000046” from archive
2020–08–17 08:58:00.740 EDT [25536] LOG: selected new timeline ID: 2
2020–08–17 08:58:02.291 EDT [25536] LOG: archive recovery complete
2020–08–17 08:58:07.408 EDT [25533] LOG: database system is ready to accept connections

Проверяем, что все на месте, размеры совпадают. Все отлично работает.


Восстановление на определенное время


Если нужно восстановить базу на определенную минуту, то в recovery.conf добавляем параметр recovery_target_time (задается в формате YYYY-MM-DD HH:mm:ss)— указываем на какое время восстановить базу:

restore_command = ‘/usr/local/bin/wal-fetch.sh “%f” “%p”’
recovery_target_time = ‘2020–08–14 09:00:00’

Резюмируя по Postgres:


- На каждом хосте с Postgres устанавливаем WAL-G

- на каждом хосте с Postgres правим postgresql.conf

- в home пользователя postrges кладем .walg.json

ставим команду резервного копирования (и зачистки ненужных старых бэкапов) в cron


Чтобы в дальнейшем все было красиво, я у себя для каждого хоста с БД создаю отдельный бакет (например, по имени хоста).


MongoDB


Для тестов на одном из хостов поднимаю MongoDB 4.4 и использую тот же инстанс MinIO c созданным под эти цели бакетом mongo.


Заливаю в Монгу тестовые данные:

curl -LO https://raw.githubusercontent.com/mongodb/docs-assets/primer...
mongoimport — db test — collection restaurants — file /tmp/primer-dataset.json
2020–08–18T06:05:46.661–0400 connected to: mongodb://localhost/
2020–08–18T06:05:48.746–0400 25359 document(s) imported successfully. 0 document(s) failed to import.

Бэкап


В директории пользователя, от имени которого запускается бэкап, должен лежать файл .walg.json c примерно следующим содержимым (подробное описание параметров в документации):

{
“WALG_S3_PREFIX”: “s3://mongo”,
“AWS_ACCESS_KEY_ID”: “minioadmin”,
“AWS_SECRET_ACCESS_KEY”: “minioadmin”,
“AWS_ENDPOINT”: “http://minio:9000",
“AWS_S3_FORCE_PATH_STYLE”: “true”,
“WALG_STREAM_CREATE_COMMAND”: “mongodump — archive — uri=\”mongodb://127.0.0.1:27017\””,
“WALG_STREAM_RESTORE_COMMAND”: “mongorestore — archive — drop — uri=\”mongodb://127.0.0.1:27017\””,
“MONGODB_URI”: “mongodb://127.0.0.1:27017”,
“WALG_SENTINEL_USER_DATA”: “{\”key\”: \”value\”}”,
“OPLOG_ARCHIVE_TIMEOUT_INTERVAL”: “5s”,
“OPLOG_ARCHIVE_AFTER_SIZE”: “1048576”,
“WALG_COMPRESSION_METHOD”: “brotli”,
“WALG_DISK_RATE_LIMIT”: “41943040”,
“WALG_NETWORK_RATE_LIMIT”: “10485760”,
“WALG_LOG_LEVEL”: “DEVEL”,
“WALG_UPLOAD_CONCURRENCY” : 1,
“OPLOG_PITR_DISCOVERY_INTERVAL”: “168h”
}

Особо нужно обратить внимание на параметр MONGODB_URI, который используется для подключения к инстансу MongoDB — например, при необходимости подключения к определенной БД, при необходимости указать пользователя/логин/пароль для подключения и т.п. (документация).


Для бэкапа нужно выполнить команду

wal-g backup-push
2020–09–05T03:51:21.247–0400 writing admin.system.version to archive on stdout
2020–09–05T03:51:21.252–0400 done dumping admin.system.version (1 document)
2020–09–05T03:51:21.252–0400 writing test.restaurants to archive on stdout
2020–09–05T03:51:21.324–0400 done dumping test.restaurants (25359 documents)
INFO: 2020/09/05 03:51:21.504031 FILE PATH: stream_20200905T075121Z/stream.br
INFO: 2020/09/05 03:51:21.511747 Removing sigmask. Shutting down

После выполнения команды бэкап появляется в бакете.

Для периодичного бэкапа можно запускать эту команду в cron’e (и опять же, не забываем удалять старые бэкапы).


Восстановление


Смотрим командой wal-g backup-list список имеющихся у нас бэкапов:


wal-g backup-list
name last_modified wal_segment_backup_start
stream_20200905T075121Z 2020–09–05T07:51:21Z ZZZZZZZZZZZZZZZZZZZZZZZZ
stream_20200905T082140Z 2020–09–05T08:21:40Z ZZZZZZZZZZZZZZZZZZZZZZZZ

и командой wal-g backup-fetch backup-name восстанавливаем нужный нам бэкап:

wal-g backup-fetch stream_20200905T075121Z
2020–09–05T04:11:39.297–0400 preparing collections to restore from
2020–09–05T04:11:40.295–0400 reading metadata for test.restaurants from archive on stdin
2020–09–05T04:11:40.319–0400 restoring test.restaurants from archive on stdin
2020–09–05T04:11:40.717–0400 no indexes to restore
2020–09–05T04:11:40.717–0400 finished restoring test.restaurants (25359 documents, 0 failures)
2020–09–05T04:11:40.717–0400 25359 document(s) restored successfully. 0 document(s) failed to restore.
INFO: 2020/09/05 04:11:40.720019 Removing sigmask. Shutting down

Все прекрасно работает.


Чем WAL-G лучше того же pg_dump (или pg_basebackup или Barman и т.п.) хорошо написано здесь (очень хорошая статья для понимания, как это устроено и работает), если вкратце — то это инструмент разработчика и он не предназначен для работы с высоконагруженной БД.


Рекомендую попробовать, уверен, что понравится :) Если что - спрашивайте!

Показать полностью
[моё] Linux Резервное копирование Postgresql Длиннопост Текст
20
21
AssGuard
AssGuard
7 лет назад

Скрипт бэкапа конфигов с коммутаторов и отправка на почту по расписанию⁠⁠

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


Варианты с использованием Kiwi Tools я отмел, ибо неудобно мне, решил поковырять Linux))


Остановился на простом варианте запуска по расписанию скрипта, который будет подключаться к свитчам по ssh или telnet, далее по команде копировать текущий конфиг на tftp-сервер, а оттуда уже отправлять его на почту.


Несмотря на то что есть несколько Linux-серверов, я решил взять для работы NAS WD MyCloud, который у нас используется как файловая помойка. Вот такой:

Скрипт бэкапа конфигов с коммутаторов и отправка на почту по расписанию Linux, Cisco, Уведомление, Почта, Openmediavault, Сисадминские штучки, Сисадмин, Резервное копирование, Длиннопост

Замечателен он тем что в этой маленькой коробочке стоит неплохой процессор, Marvell Armada 375 (2x1GHz) или Mindspeed Comcerto C2200 (2x650MHz), в зависимости от ревизии, и объем ОЗУ 512MB Ram или 256 MB Ram, в зависимости от ревизии.

К примеру у нас GEN2, который имеет более быстрый процессор и больше ОЗУ.


И там внутри Linux, пусть и урезанный, но Linux. И есть в сети руководства как накатить туда полноценный Linux, например Debian, а далее что душа пожелает.


Я в свое время почитал эту тему на 4PDA и поставил туда Debian, а потом и OpenMediaVault.


Но вы можете использовать любой другой компьютер/устройство на Linux.


Суть сводится к тому что нужно доставить пару пакетов:

expect и tcl - для обработки команд свитчей, и mpak для отправки вложения на почту.


Также необходимо поставить tftp-сервер, к примеру в OpenMediaVault это делается в пару кликов.


Итак, мы их поставили, далее пишем скрипт backup_cisco.sh, с таким содержанием:

#!/bin/bash
#!/usr/bin/expect -f
expect -c 'spawn telnet 192.168.254.10;
expect "sername: "
send "admin\r"
expect "assword: "
send "P@$$W0Rd\r"
expect ">"
send "enable\r"
expect "assword: "
send "P@$$W0Rd\r"
expect "#"
send "copy running-config tftp://192.168.32.243/CME.cfg\r\r\r";
expect "#";
send "exit\r"'
expect -c 'spawn telnet 192.168.32.254;
expect "sername: ";
send "admin\r";
expect "assword: ";
send "P@$$W0Rd\r";
expect "#";
send "copy running-config tftp://192.168.32.243/Core.cfg\r\r\r";
expect "#";
send "exit\r"'
expect -c 'spawn telnet 192.168.32.3;
expect "sername: ";
send "admin\r";
expect "assword: ";
send "P@$$W0Rd\r";
expect "#";
send "copy running-config tftp://192.168.32.243/SW_2.cfg\r\r\r";
expect "#";
send "exit\r"'
expect -c 'spawn telnet 192.168.32.4;
expect "sername: ";
send "admin\r";
expect "assword: ";
send "P@$$W0Rd\r";
expect "#";
send "copy running-config tftp://192.168.32.243/SW_3.cfg\r\r\r";
expect "#";
send "exit\r"'
expect -c 'spawn telnet 192.168.32.5;
expect "sername: ";
send "admin\r";
expect "assword: ";
send "P@$$W0Rd\r";
expect "#";
send "copy running-config tftp://192.168.32.243/Cisco_4948.cfg\r\r\r";
expect "#";
send "exit\r"'
expect -c 'spawn ssh admin@192.168.254.11;
expect "assword: ";
send "P@$$W0Rd\r";
expect ">";
send "enable\r";
expect "assword:";
send "P@$$W0Rd\r";
expect "#";
send "copy running-config tftp://192.168.32.243/ASA.cfg\r\r\r\r";
expect "#";
send "exit\r"'
expect -c 'spawn ssh 192.168.3.5;
expect "ser: ";
send "admin\r";
expect "assword: ";
send "P@$$W0Rd\r";
expect ">";
send "transfer upload datatype config\r";
expect ">";
send "transfer upload serverip 192.168.32.243\r";
expect ">";
send "transfer upload filename WiFi.cfg\r";
expect ">";
send "transfer upload start\r";
expect "(y/N)";
send "y\r";
expect ">";
send "logo\r";
expect "(y/N)";
send "y\r'
sleep 4m
mv /srv/dev-disk-by-id-ata-WDC_WD30EFRX-68EUZN0_WD-WCC4N6EATLHD-part2/tftproot/*.cfg /srv/dev-disk-by-id-ata-WDC_WD30EFRX-68EUZN0_WD-WCC4N6EATLHD-part2/backups/cisco/
cd /srv/dev-disk-by-id-ata-WDC_WD30EFRX-68EUZN0_WD-WCC4N6EATLHD-part2/backups/cisco/
tar -czf backup_cisco_`date +"%m-%d-%Y"`.tar.gz /srv/dev-disk-by-id-ata-WDC_WD30EFRX-68EUZN0_WD-WCC4N6EATLHD-part2/backups/cisco/*.cfg
mpack -s "CISCO Backup WD" /srv/dev-disk-by-id-ata-WDC_WD30EFRX-68EUZN0_WD-WCC4N6EATLHD-part2/backups/cisco/backup_cisco_`date +"%m-%d-%Y"`.tar.gz admin@krg.corpname.kz
rm -rf /srv/dev-disk-by-id-ata-WDC_WD30EFRX-68EUZN0_WD-WCC4N6EATLHD-part2/backups/cisco/*.cfg

Что делает скрипт:

1. Подключается к свитчу.

expect -c 'spawn telnet 192.168.254.10;

2. Авторизуется

expect "sername: "
send "admin\r"
expect "assword: "
send "P@$$W0Rd\r"

3. Переходит в привилегированный режим

expect ">"
send "enable\r"
expect "assword: "
send "P@$$W0Rd\r"

4. Передает команду копирования текущего конфига на tftp сервер.

expect "#"
send "copy running-config tftp://192.168.32.243/CME.cfg\r\r\r";

5. Отключается от свитча и переходит к следующему.

expect "#";
send "exit\r"'

За обработку ответа от свитча в скрипте отвечает как раз тот самый expect

Все свитчи разные, поэтому команды передачи конфига тоже разные.


Последние команды:


6. Пауза в 4 минуты чтобы убедиться что все конфиги слились.

sleep 4m

7. Перемещает все файлы с расширением *.cfg в отдельный каталог.

mv /srv/dev-disk-by-id-ata-WDC_WD30EFRX-68EUZN0_WD-WCC4N6EATLHD-part2/tftproot/*.cfg /srv/dev-disk-by-id-ata-WDC_WD30EFRX-68EUZN0_WD-WCC4N6EATLHD-part2/backups/cisco/

8. Переход в каталог с скопированными конфигами.

cd /srv/dev-disk-by-id-ata-WDC_WD30EFRX-68EUZN0_WD-WCC4N6EATLHD-part2/backups/cisco/

9. Архивация всех файлов с расширением *.cfg в архив с текущей датой в имени

tar -czf backup_cisco_`date +"%m-%d-%Y"`.tar.gz /srv/dev-disk-by-id-ata-WDC_WD30EFRX-68EUZN0_WD-WCC4N6EATLHD-part2/backups/cisco/*.cfg

10. Отправка файла вложением на почту админу на admin@krg.corpname.kz

mpack -s "CISCO Backup WD" /srv/dev-disk-by-id-ata-WDC_WD30EFRX-68EUZN0_WD-WCC4N6EATLHD-part2/backups/cisco/backup_cisco_`date +"%m-%d-%Y"`.tar.gz admin@krg.corpname.kz

11. Удаляет все конфиги, очищает папку:

rm -rf /srv/dev-disk-by-id-ata-WDC_WD30EFRX-68EUZN0_WD-WCC4N6EATLHD-part2/backups/cisco/*.cfg

Далее, в веб-интерфейсе OpenMediaVault настраиваем уведомления для работы с почтой, у нас почта идет через MS Office 365:

Скрипт бэкапа конфигов с коммутаторов и отправка на почту по расписанию Linux, Cisco, Уведомление, Почта, Openmediavault, Сисадминские штучки, Сисадмин, Резервное копирование, Длиннопост

Далее добавляем скрипт в встроенный планировщик OpenMediaVault, к примеру у меня он срабатывает в 8.00 по пятницам:

Скрипт бэкапа конфигов с коммутаторов и отправка на почту по расписанию Linux, Cisco, Уведомление, Почта, Openmediavault, Сисадминские штучки, Сисадмин, Резервное копирование, Длиннопост

И вот результат:

Скрипт бэкапа конфигов с коммутаторов и отправка на почту по расписанию Linux, Cisco, Уведомление, Почта, Openmediavault, Сисадминские штучки, Сисадмин, Резервное копирование, Длиннопост

Следующий пост будет про мониторинг оборудования через Zabbix с оповещением в Telegram

Показать полностью 4
[моё] Linux Cisco Уведомление Почта Openmediavault Сисадминские штучки Сисадмин Резервное копирование Длиннопост
10
31
Dopelngager
Dopelngager
7 лет назад

Автоматизация бэкапов.⁠⁠

Может и не совсем интересно, но кому-то может понадобиться такой мануал (ни в коем случае не реклама, только в ознакомительных целях). Мне руководитель поставил задачу на работе и вот так я ее решил....


Представим ситуацию, когда, у нас появилось слишком много филиалов и в каждом стоит роутер "Mikrotik" (в моем случае их 50+), Вы всегда делали бэкапы и сливали конфигурацию...., НО! К примеру, работаете Вы не один - это раз, надоело вручную заходить и делать бэкапы - это два, даже если уверены в своих коллегах - нужно страховаться - это три. При всем этом роутеров много и количество будет рости. *Нужно автоматизировать это дело* - подумаете Вы, этим собственно и займемся.


Нужно:

- UNIX-подобная система (в моем случае FreeBSD)

- Пара роутеров "Mikrotik" для проверки скрипта


Принцип работы скрипта:

- Скрипт будет заходить на каждый роутер указанный в массиве по SSH, под каким-либо пользователем

- Давать команду на создание бэкапа в двоичном и текстовом виде, а именно в расширениях *.backup и *.rsc

- Сливать файлы на наш сервер по SCP

- Удалять созданные бэкапы на самом роутере

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


Поехали....

1: Создадим сначала пользователя, с нужными на правами. Заходим на наш микротик, в меню жмакаем System -> Users и переходим в открывшемся окне на вкладку Group, нажимаем на "+", чтобы добавить новую группу (я назвал ее script) и назначаем права как на картинке:

Автоматизация бэкапов. Mikrotik, Резервное копирование, Freebsd, Linux, Автоматизация, Длиннопост

Далее переходим в вкладку Users и там жмем снова "+" вбиваем название пользователя, назначаем нашу созданную группу и пароль. Пусть будет у нас "Валли"

Автоматизация бэкапов. Mikrotik, Резервное копирование, Freebsd, Linux, Автоматизация, Длиннопост

Должно получиться так:

Автоматизация бэкапов. Mikrotik, Резервное копирование, Freebsd, Linux, Автоматизация, Длиннопост

2: Теперь нам нужно сгенерировать публичный ключ - для того, чтобы, скрипт подключался к микротику по ssh не спрашивая пароль т.е. автоматически. Заходим на наш FreeBSD под root'ом (для не знающих команда sudo su) и генерируем ключ командой: ssh-keygen -t dsa.

Будет вопрос в каком каталоге сохранять? я оставляю по дефолту, поэтому Enter, так же будет вопрос о пароле на ключ, оставляем пустой т.е. тоже нажимаем Enter.

Должно получиться так:

Автоматизация бэкапов. Mikrotik, Резервное копирование, Freebsd, Linux, Автоматизация, Длиннопост

Проверить наличие сгенерированного ключа можно так: ls -lh /root/.ssh/ и увидите в списке свой файл, с названием id_dsa.pub.

3: Следом надо залить ключ на микротик. Возвращаемся к микротику, нажимаем IP -> Services и там есть сервис "ftp", если он выключен, то включите.

Автоматизация бэкапов. Mikrotik, Резервное копирование, Freebsd, Linux, Автоматизация, Длиннопост

Возвращаемся на сервер и переходим в каталог с нашим ключом: cd /root/.ssh/.

Подключаемся на микротик через FTP командой: ftp 192.168.88.1

Спросит имя пользователя, вводим нашего: walle, следом пароль от него и увидите приветствие микротика:

Автоматизация бэкапов. Mikrotik, Резервное копирование, Freebsd, Linux, Автоматизация, Длиннопост

Вводим команду передачи ключа: put id_dsa.pub и ....

Автоматизация бэкапов. Mikrotik, Резервное копирование, Freebsd, Linux, Автоматизация, Длиннопост

Это говорит о том, что передача успешна и завершилась, вводим: exit.


4. Теперь надо назначить ключик нашему пользователю, переходим на роутер.

Откройте Files, там увидите свой ключик:

Автоматизация бэкапов. Mikrotik, Резервное копирование, Freebsd, Linux, Автоматизация, Длиннопост
Нажимаем в главном меню роутера New Terminal и вводим такую строку: user ssh-keys import public-key-file=id_dsa.pub user=walle. Команда выполнится молча. Проверяем импортировался ли ключ, переходим System -> Users в вкладке SSH Keys увидите ключ импортированный для пользователя walle.
Автоматизация бэкапов. Mikrotik, Резервное копирование, Freebsd, Linux, Автоматизация, Длиннопост

Ключ мы успешно импортировали и он будет работать.

Переходим на наш FreeBSD и пробуем подключиться по SSH с использованием ключа: ssh walle@192.168.88.1.

При первом подключении вам зададут вопрос: Are you sure you want to continue connecting (yes/no)? - отвечаем: yes. Больше спрашивать не будет.

После увидите приветствие роутера.


5. Необходимо на нашем FreeBSD создать папку для бэкапов, сделал я вот такой командой: mkdir /var/mikrotik_backups/.

Назначил полные права папке chmod 777 /var/mikrotik_backups/.


6. Необходимо создать сам файл скрипта: перехожу в свой каталог cd /usr/home/Dopelngager/ и создаем файл скрипта: touch backup_mikrotik.

Назначаю точно так же полные права chmod 777 backup_mikrotik.


7. Пришли теперь к основному, а именно к написанию скрипта.

Открываем файл скрипта командой: ее backup_mikrotik

и записываем в файл вот это:


#!/usr/local/bin/bash
routers=( 192.168.88.1 )
backupdir="/var/mikrotik_backups/"
privatekey="/root/.ssh/id_dsa"
login="walle"
DATE="`date '+%Y-%m-%d'`"
for r in ${routers[@]}; do
cmd_backup="/system backup save name=${r}.backup"
ssh ${login}@$r -i $privatekey "${cmd_backup}" > /dev/null
sleep 2
cmd_backup="/export file=${r}"
ssh ${login}@$r -i $privatekey "${cmd_backup}" > /dev/null
sleep 5
scp -i $privatekey ${login}@${r}:${r}.backup ${backupdir}$r-$DATE.backup
scp -i $privatekey ${login}@${r}:${r}.rsc ${backupdir}$r-$DATE.rsc
ssh ${login}@$r -i $privatekey "/file remove \"${r}.backup\""
ssh ${login}@$r -i $privatekey "/file remove \"${r}.rsc\""
done
find $backupdir* -mtime +3 -exec rm {} \;


Если у вас не один роутер, то, шаги с 1 по 4 нужно сделать с каждым и в скрипт добавить роутеры в строку "routers", между скобок. ОБЯЗАТЕЛЬНО!: добавлять роутеры через пробел и пробелы около скобок тоже должны быть! Для примера добавим еще один роутер:

routers=( 192.168.88.1 192.168.88.2 ).

Проверим наш скрипт, вводим команду: ./backup_mikrotik

Должен пойти процесс скачивания и сохранения файлов.


8. Остался последний шаг - это добавить скрипт в планировщик.

Вводим команду открытия планировщика Cron: ее /etc/crontab

Добавляем строки:

#backup Mikrotik routers

* 21 * * * root /usr/home/Dopelngager/backup_mikrotik

Сохраняем и необходимо перезапустить cron: /etc/rc.d/cron restart.


Таким образом я запланировал работу скрипта ежедневно в 21 час, еженедельно, ежемесячно, ежегодно. ВАЖНО! Соблюдайте пробелы и табуляции при добавлении записей в файл, cron чувствителен к этим вещам. А лучше про него подробнее почитайте в интернете.


У меня все, надеюсь было полезно. За ошибки и шакальные картинки простите. Unix-подобные системы знаю плохо, только учусь - так что сильно не придирайтесь. Если у кого есть вариант улучшить скрипт или его работу - обязательно приму во внимание.

А вот кстати результат работы срипта:

Автоматизация бэкапов. Mikrotik, Резервное копирование, Freebsd, Linux, Автоматизация, Длиннопост
Показать полностью 10
[моё] Mikrotik Резервное копирование Freebsd Linux Автоматизация Длиннопост
20
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии