Резервное копирование и восстановление

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

1

Приложение для резервного копирования и восстановления

Приложение называется «Ticket System Backup & Restore». Оно стоит рядом с системой заявок, и у него свой ярлык на рабочем столе.

Есть версия для Windows и версия для Linux. Это одно и то же приложение, просто собранное под каждую операционную систему.

У него шесть вкладок. «Restore» перечисляет имеющиеся резервные копии, «Create Backup» делает новую, «Schedule» занимается расписанием, «Encryption» показывает ключ восстановления, «Settings» показывает пути, а «Log» — журнал.

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

Папка для резервных копий стоит в поле «Backup directory». Её можно изменить, например на другой диск.

В Windows приложение при запуске запрашивает права администратора. Его настройки действуют для каждого администратора компьютера и лежат в «%ProgramData%\SMITEY\backup-app».

Вкладка «Restore» с пятью резервными копиями, у каждой время, размер, тип и шифрование.
Красная рамка стоит на столбце «Encryption». Новые копии заканчиваются на «.smbk» и имеют статус «Encrypted». Старые копии в формате ZIP показывают «Not encrypted». Столбец «Type» говорит, пришла ли копия из расписания, сделана вручную или создана перед обновлением.Открыть изображение в полном размере
Вкладка «Settings» с папкой для резервных копий и сведениями о базе данных.
Красная рамка стоит на имени контейнера PostgreSQL. Ниже стоят тома, которые тоже сохраняются.Открыть изображение в полном размере
2

Расписание работает с момента установки

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

Установка сама настраивает ежедневное копирование. Оно идёт в 23:00 в часовом поясе системы заявок.

Расписание живёт в операционной системе. В Windows это планировщик заданий, в Linux служба cron. Поэтому отдельная служба только ради копий не работает.

Резервному копированию не нужно, чтобы кто-то был в системе. На сервере, куда никто никогда не входит, оно всё равно идёт.

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

Копии хранятся пятью ступенями: 14 дней, 4 недели, 12 месяцев, 4 квартала и 5 лет. Копия остаётся, пока она самая новая за свой период на одной из этих ступеней.

Считаются календарные дни, а не файлы. Две копии за один день — это один день.

Копии, созданные вами вручную, автоматически не удаляются никогда. Это и означает 0 в поле «Keep manual».

Если вы измените расписание, ваше изменение переживёт обновление. Установка задаёт его, только если вы ни разу не задавали расписание. Если вы выключили копирование, оно остаётся выключенным. «Remove all scheduled tasks» тоже сохраняется: обновление потом не настраивает расписание заново.

Вкладка «Schedule» с отмеченным «Daily» и временем 23:00.
Красные рамки стоят на «Daily» и на времени. Предложение выше называет оба пути: планировщик заданий и cron.Открыть изображение в полном размере
Строка «Registered with the operating system: yes (Daily)» под кнопками.
Эта строка проверяется заново при каждом запуске. Если там стоит «NO», само по себе ничего не идёт, и тогда нажмите «Apply schedule» от имени администратора.Открыть изображение в полном размере
Шесть полей хранения: 14, 4, 12, 4, 5 и 0.
Красная рамка стоит на ступенях. «Keep manual (0 = keep all)» означает, что сделанные вручную копии сохраняются.Открыть изображение в полном размере
Вкладка «Schedule» после «Apply schedule», ниже стоят «02:00 (America/New_York)» и «Registered with the operating system: yes (Daily)».
Красные рамки стоят на «Apply schedule» и на строках под ней. В скобках указан часовой пояс системы заявок. Время действует в этом поясе, а не в часовом поясе компьютера.Открыть изображение в полном размере
3

Что содержит резервная копия

Резервная копия содержит всё, из чего складывается состояние вашей системы. Это база данных, вложенные файлы, архив и ключи. Не хватает только базы данных вне SMITEY.

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

Каждая новая копия — это один зашифрованный файл с окончанием «.smbk». В нём лежат по файлу на каждый том, список содержимого и база данных текстовым файлом, если она входит в копию.

Система при этом продолжает работать. Ваши операторы резервного копирования вообще не замечают.

«Estimate size» заранее говорит, насколько велика база данных. Тома с вложениями добавляются к ней. Копия не сжимается.

Ничего никогда не перезаписывается. Каждая копия — отдельный файл, и старые убирает только уборка.

Резервные копии могут читать только администраторы. То же касается файла конфигурации и файла с первым входом в папке установки. Установщик и каждое обновление сами выставляют эти права.

Если ваша база данных работает на отдельном сервере, а не в контейнере SMITEY, приложение не может сделать её копию. Тогда сделайте её копию собственными средствами. В этом случае копия содержит только вложения, архивы и ключи, зашифрованные как обычно. Обновление само распознаёт такую базу данных и переключает приложение. До этого момента ежедневное копирование на такой установке не удаётся, если вы не переключите приложение вручную заранее. В командной строке это можно сделать и вручную командой «config --database external». Командой «config --database bundled» вы возвращаетесь назад.

Подробнее об этом в карточке: Шифрование и ключ восстановления

Вкладка «Create Backup» с кнопками «Estimate size» и «Create backup now».
Красная рамка стоит на обеих кнопках. Предложение выше перечисляет, что входит в копию.Открыть изображение в полном размере
Сообщение внизу с полным путём созданного файла.
После создания имя файла появляется внизу окна. Время входит в имя.Открыть изображение в полном размере
4

Шифрование и ключ восстановления

Прежде чем начать: Храните ключ восстановления вне сервера. Без него после потери сервера ни одну копию нельзя открыть. Никто не сможет восстановить его за вас.

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

Копии шифруются алгоритмом AES-256. Установка сама создаёт ключ. В существующей установке он создаётся при первом обновлении до версии с шифрованием. Он хранится на сервере в защищённом виде. Прочитать его могут только администраторы.

Это защищает копии вне сервера. Кто найдёт копию на сетевом диске, USB-накопителе или в онлайн-хранилище, не прочитает её без ключа. Кто контролирует сам сервер, тот имеет и ключ.

Ключ восстановления — это тот же ключ в виде, который можно записать. Он начинается с «SMBK-». Вы найдёте его на вкладке «Encryption» и в файле «SMITEY-credentials.txt» в папке установки. Если вы удалили этот файл, ключ всё равно есть на вкладке «Encryption».

«Copy» помещает ключ в буфер обмена. «Save to file...» сохраняет его вместе с идентификатором ключа и датой в текстовый файл. Храните его, например, в менеджере паролей или на бумаге в сейфе.

Пока вы не подтвердите, что ключ сохранён, приложение показывает вверху жёлтую полосу. Чтобы подтвердить, нажмите «I stored the key outside this server» и ответьте на вопрос «Yes». После этого полоса исчезает. Затем вкладка показывает, когда вы подтвердили.

Идентификатор ключа показывает, какому серверу принадлежит копия. Если копия не принадлежит этому серверу, приложение называет её идентификатор ключа. Затем оно запрашивает подходящий ключ восстановления.

Если приложение не может прочитать ключ, оно не делает копию. Незашифрованную копию оно тоже не делает. В этом случае вкладка «Encryption» сообщает, что ключ не читается. Если файла ключа нет совсем, следующая копия создаёт новый ключ. Жёлтая полоса тогда появляется снова, потому что новый ключ тоже нужно сохранить. Более старые копии по-прежнему открываются только старым ключом восстановления.

Более старые копии в формате ZIP не зашифрованы. Их по-прежнему можно восстановить. Вкладка показывает, сколько их. Очистка удаляет их по тем же правилам, что и любые другие копии.

На сервере без рабочего стола «key --show» показывает то же самое в командной строке.

Подробнее об этом в карточке: Вернуть всё, На сервере без рабочего стола

Вкладка «Encryption» с ключом восстановления, идентификатором ключа и тремя кнопками. Жёлтая полоса уведомления находится вверху.
Красные рамки стоят на полосе уведомления, на ключе и идентификаторе ключа и на «I stored the key outside this server». Ключ на снимке взят из тестовой среды.Открыть изображение в полном размере
Та же вкладка после подтверждения, без полосы уведомления.
Верхняя рамка стоит на времени подтверждения. Нижняя показывает, сколько копий всё ещё не зашифровано.Открыть изображение в полном размере
5

Получить всё обратно

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

Во вкладке «Restore» вы выбираете ту копию, которую хотите вернуть. Затем нажимаете «Restore».

Приложение сначала спрашивает. Оно говорит, что произойдёт: сегодняшнее состояние перезаписывается, и приложение перезапускает контейнеры. Если в сегодняшнем состоянии есть анонимизированные люди, следует второй вопрос. Он называет их число и спрашивает, анонимизировать ли их снова после восстановления. «Yes» выбрано заранее. При «No» копия восстанавливается без этого шага. Если вместо этого закрыть окно, ничего не восстанавливается.

Отметка «Wipe target volumes before restore» сначала очищает тома. Так не остаётся файла, которого не было в момент создания копии.

Шаги появляются во вкладке «Log». Там видно по порядку, что приложение сделало. Если вы ответили «Yes» на второй вопрос, строка в конце сообщает, сколько анонимизаций система заявок снова применит следующей ночью. Если их не удаётся перенести, журнал вместо этого показывает предупреждение. Если были предупреждения, строка состояния внизу окна называет их число.

Если копия содержит базу данных, возвращается полное состояние. Заявки, комментарии, история, вложенные файлы, записанное время и база знаний снова на месте такими, какими были на момент копии.

После этого системой снова можно пользоваться. На небольшой установке это занимает меньше минуты.

Если копия содержит базу данных, она возвращается полностью или не возвращается вовсе. Тома следуют за ней. Если том не удался, база данных уже вернулась, но файлов может не хватать; вкладка «Log» показывает, какой шаг не удался. В любом случае приложение после этого снова запускает контейнеры, даже если восстановление не удалось.

Копию из более старой версии можно восстановить в более новую. При следующем запуске система доводит базу данных до своей версии.

Согласия и отписки для опроса об удовлетворённости переносятся без вопроса. Это действует и тогда, когда вы отвечаете «No» на второй вопрос. Приложение читает их из работающей установки до восстановления. После этого строка во вкладке «Log» называет число, например «12 consent and unsubscribe record(s) were carried over.» Система заявок принимает их при первом запуске. Согласие или отписка, сделанные после резервной копии, поэтому остаются в силе. Если перенос не удался, журнал показывает предупреждение. Восстановление всё равно считается успешным.

Приложение сначала полностью проверяет зашифрованную копию. Пока это идёт, в строке состояния написано «Checking the encrypted backup before anything is changed...». Только после этого оно останавливает контейнеры. Если файл повреждён или был изменён, приложение останавливается и сообщает «The backup file is damaged. Nothing was changed.»

Если копия с другого сервера, приложение запрашивает ключ восстановления этого сервера. Это происходит после вопросов. Окно «Recovery key needed» называет идентификатор ключа копии. То же окно появляется, если ключа этого сервера нет.

Опечатка обнаруживается до того, как что-либо изменено. Тогда строка состояния сообщает «The recovery key has a typing error. Check each character.» После этого окно спрашивает снова. Если ключ относится к другой копии, строка состояния сообщает «This recovery key does not belong to this backup.» При нажатии «Cancel» приложение останавливается и сообщает «Restore cancelled. Nothing was changed.»

Приложение не принимает введённый вами ключ как свой. Оно сохраняет собственный. Новые копии по-прежнему создаются ключом этого сервера. Если вы восстанавливаете данные на новом сервере, сохраните также ключ восстановления этого сервера.

Копия без базы данных восстанавливает только вложения, архивы и ключи. Имеющиеся ключи сохраняются. База данных остаётся как есть. Приложение сообщает об этом перед восстановлением и спрашивает. После «No» ничего не меняется.

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

Выбранная копия в списке, с отметкой и кнопкой «Restore» ниже.
Красные рамки стоят на отметке и на «Restore». Без выбранной строки кнопка остаётся выключенной.Открыть изображение в полном размере
Подтверждение перед восстановлением с кнопками «Yes» и «No».
Вопрос называет оба последствия: сегодняшнее состояние перезаписывается, и контейнеры перезапускаются.Открыть изображение в полном размере
Журнал после восстановления, с сообщением «Restore complete.» внизу.
Каждый шаг стоит там со своим временем. В конце приложение сообщает «Restore complete.»Открыть изображение в полном размере
Второй вопрос «6 person(s) were anonymized in the current system.» с кнопками «Yes» и «No».
Красные рамки стоят на вопросе и на «Yes». «Yes» выбрано заранее. Число показывает, сколько человек анонимизировано в сегодняшнем состоянии.Открыть изображение в полном размере
Строка состояния после восстановления: «1 warning(s) while carrying over anonymizations and survey consents. See the Log tab.»
Красная рамка стоит на строке состояния. Она называет только число предупреждений. Что именно произошло, видно на вкладке «Log».Открыть изображение в полном размере
Запрос ключа восстановления с идентификатором ключа копии, поле ввода и кнопки «OK» и «Cancel».
Красные рамки стоят на вопросе с идентификатором ключа и на поле ввода. Дефисы, пробелы и регистр букв при вводе ключа не важны. Ключ на снимке взят из тестовой среды.Открыть изображение в полном размере
6

На сервере без рабочего стола

У сервера часто нет рабочего стола. Поэтому то же приложение работает и как команда.

В повседневной работе нужны пять команд: «backup» сохраняет, «list» показывает имеющиеся копии, «restore» возвращает одну, «schedule» задаёт расписание, а «config» показывает настройки. Для ключа добавляются «key» и «decrypt».

За ними стоит то же приложение, что и в окне. Второго пути, который делает что-то другое, нет.

Приложение лежит в «/opt/smitey/Backup». Вызывают его через «sudo» и добавляют команду. Контейнеры работают от «root», поэтому и копированию нужны эти права.

Шесть блоков ниже можно скопировать. Они покрывают то, что в повседневной работе действительно нужно.

Восстановление и здесь спрашивает. Оно выполняется, только когда вы добавите «--yes». Тогда оно переносит и анонимизации из сегодняшнего состояния, как «Yes» в окне. С «--no-reapply» оно выполняется без этого шага.

На сервере есть файл, чтобы всё это прочитать. Он называется «BACKUP-RESTORE.txt» и лежит в «/opt/smitey». Он ещё раз, в вашем темпе, проходит расписание, каждую команду и путь назад. Он есть на немецком и на английском: если при установке вы выбрали немецкий, вы получаете немецкий, иначе английский. Обе версии лежат также в «/opt/smitey/docs».

«key --show» показывает ключ восстановления, идентификатор ключа и число незашифрованных копий. Когда ключ сохранён вне сервера, вы подтверждаете это командой «key --confirm-stored».

Копию с другого сервера вы восстанавливаете с параметром «--key-file». Указанный файл содержит ключ восстановления. Для этого подходит и файл из «Save to file...». Вместо файла можно использовать переменную окружения «SMITEY_BACKUP_KEY». С «sudo» её ставят прямо перед программой, то есть «sudo SMITEY_BACKUP_KEY=<ключ> /opt/smitey/Backup/TicketSystemBackup restore …». Тогда ключ попадает в историю оболочки. Если ключ не подходит, ничего не меняется.

«decrypt» записывает содержимое копии как незашифрованные файлы в пустую папку. Эти файлы не зашифрованы. Они содержат пароли и личные данные. Удалите их, как только закончите.

Показать имеющиеся копии

sudo /opt/smitey/Backup/TicketSystemBackup list

В каждой строке стоят время, причина, размер и имя файла. Это тот же список, что и в окне.

Показать расписание

sudo /opt/smitey/Backup/TicketSystemBackup schedule --show

Первая строка называет заданное время вместе с часовым поясом. Последняя говорит, действительно ли задача есть в операционной системе. Если там стоит «NO», само по себе ничего не идёт.

Изменить расписание

sudo /opt/smitey/Backup/TicketSystemBackup schedule --daily 23:00 --keep 14

Время действует в часовом поясе системы заявок. «--keep» говорит, сколько ежедневных копий сохраняется. «schedule --off» выключает ежедневное копирование.

Создать копию прямо сейчас

sudo /opt/smitey/Backup/TicketSystemBackup backup

Такая копия считается «Manual». Сделанные вручную копии автоматически не удаляются никогда.

Показать ключ восстановления

sudo /opt/smitey/Backup/TicketSystemBackup key --show

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

Восстановить копию с другого сервера

sudo /opt/smitey/Backup/TicketSystemBackup restore <file>.smbk --yes --key-file /root/recovery-key.txt

Замените <file> именем или путём копии. Файл «/root/recovery-key.txt» вы создаёте заранее. Он содержит ключ восстановления. Подходит и файл из «Save to file...».

Командная строка на сервере Linux со списком из «list» и выводом «key --show» под ним.
Сверху «list» показывает копии. У более старых копий в формате ZIP стоит пометка «(Not encrypted)». Ниже «key --show» выдаёт ключ восстановления, идентификатор ключа и число незашифрованных копий. Ключ на снимке взят из тестовой среды.Открыть изображение в полном размере
7

Копии лежат на той же машине

Прежде чем начать: Копия рядом с системой не защищает от отказа диска. Регулярно копируйте файлы в другое место.

Копии — это файлы в той папке, которую вы задали. Эта папка находится на той же машине, что и система заявок.

Для обычных случаев это работает хорошо. Ошибочно удалённые данные, неудачное обновление или ошибка в данных этим покрыты.

От отказа диска это не помогает. Если диска нет, копий тоже нет.

Поэтому копируйте файлы куда-то ещё. Достаточно сетевого диска, второго сервера или хранилища в сети.

Скопированный файл можно загрузить обратно на любом сервере. На другом сервере для этого нужен ключ восстановления. «Import backup file…» возвращает файл в список.

Копии зашифрованы. Без ключа восстановления их никто не прочитает. Поэтому не храните ключ рядом с копиями. Более старые копии с окончанием «.zip» не зашифрованы.

Вкладка «Settings» с полем «Backup directory».
Поле «Backup directory» говорит, где лежат файлы. Именно эту папку и стоит регулярно копировать в другое место.Открыть изображение в полном размере
8

Перед каждым обновлением система сохраняет сама

Обновление заранее делает собственную резервную копию. Это происходит независимо от вашего расписания и без того, чтобы вы что-то отмечали.

Сохраняет оно то же, что и всегда: базу данных, вложения, архивы и ключи. Если база данных работает вне SMITEY, обновление сохраняет только вложения, архивы и ключи.

Эту копию делает приложение «Ticket System Backup & Restore». Она зашифрована, как и любая другая, и лежит в той же папке. В списке её тип — «Update». Три самые новые такие копии сохраняются. Более старые приложение удаляет само.

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

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

Подробнее об этом в карточке: Обновление одним нажатием

Подтверждение перед обновлением с примечанием о резервной копии.
Предложение «A full backup is taken automatically beforehand» входит в вопрос. Копия делается до того, как что-то будет заменено.Открыть изображение в полном размере

Снимки экрана сделаны в версии 1.3.1. На показанных экранах до версии 1.13.3 ничего не изменилось. Отличается только номер версии внизу боковой панели.