Резервное копирование и восстановление#
Команда dump сохраняет инсталляцию в ZIP-файл. Этот файл можно распаковать и использовать для восстановления экземпляра инсталляции.
Полнота резервного копирования#
SourceControl состоит из базы данных, файлов и git-репозиториев, которые меняются при их использовании. Например, в процессе миграции создается транзакция в базе данных, и в то же время копируется git-репозиторий. Если резервное копирование происходит во время миграции, git-репозиторий может быть неполным, хотя база данных уже будет иметь полную информацию о репозитории. Во избежание такой ситуации остановите экземпляр SourceControl во время резервного копирования.
Создание резервной копии (dump)#
Для того чтобы создать резервную копию приложения и базы данных, используется команда sc dump. В этом случае используется XORM-библиотека (ORM-библиотека для языка Go, которая позволяет хранить структуры данных приложения в базе данных без дополнительных преобразований). Однако до сих пор существуют проблемы с восстановлением дампов, созданных с помощью XORM, поэтому рекомендуется осуществлять дамп БД стандартными средствами используемой СУБД (смотрите раздел Резервная копия базы данных стандартными средствами СУБД).
Для создания резервной копии через XORM-библиотеку переключитесь на пользователя, под которым запущен SourceControl: su git. Выполните ./sc dump -f sc-dump-1610949662.zip в каталоге установки SC. Должно получиться следующее (пример):
./sc dump -f sc-dump-1610949662.zip
2023/08/02 11:53:09.815359 dump.go:258:runDump() [INFO] Dumping local repositories... /sc/data/sc-repositories
2023/08/02 11:53:10.060029 dump.go:299:runDump() [INFO] Dumping database...
2023/08/02 11:53:10.161813 dump.go:311:runDump() [INFO] Adding custom configuration file from /sc/custom/conf/app.ini
2023/08/02 11:53:10.166293 dump.go:339:runDump() [INFO] Packing data directory... sc/data
2023/08/02 11:53:10.184666 dump.go:423:runDump() [INFO] Finish dumping in file sc-dump-1610949662.zip
Содержимое файла sc-dump-1610949662.zip:
app.ini— Необязательная копия конфигурационного файла, если изначально он хранился вне пользовательского каталога по умолчанию (custom/).custom— Все файлы конфигурации или пользовательские настройки находятся вcustom/.data— Каталог данных (APP_DATA_PATH), за исключением сессий, если вы используете файловые сессии. В этом каталоге содержатсяattachments,avatars,lfs,indexers.sc-db.sql— SQL-дамп базы данных.repos— Полная копия каталога репозитория.log/— Различные логи (не нужны для восстановления или миграции).
Промежуточные файлы резервных копий создаются во временном каталоге, указанном либо с помощью параметра командной строки --tempdir, либо переменной окружения TMPDIR.
Резервная копия базы данных стандартными инструментами СУБД#
Для PostgreSQL создание резервной копии выглядит следующим образом:
# postgres
pg_dump -U $USER $DATABASE > sc-db.sql
Восстановление резервной копии (restore)#
В настоящее время команда восстановления не поддерживается. Это ручной процесс, который в основном включает перемещение файлов в их правильное расположение и восстановление дампа базы данных, например:
unzip sc-dump-1610949662.zip
cd sc-dump-1610949662
mv data/conf/app.ini /etc/sc/conf/app.ini
mv data/* /var/lib/sc/data/
mv log/* /var/lib/sc/log/
mv repos/* /var/lib/sc/repositories/
chown -R sc:sc /etc/sc/conf/app.ini /var/lib/sc
# postgres
psql -U $USER -d $DATABASE < sc-db.sql
service sc restart
Если метод установки изменен или если SourceControl установлен в отличный от предыдущей установки каталог, заново сгенерируйте git-хуки репозитория. Для этого при запущенном SourceControl из каталога, где находится бинарный файл, выполните команду ./sc admin regenerate hooks. Если этого не сделать, команда git push завершится неудачей.
Обратите внимание
Для корректного восстановления резервной копии необходимо сначала остановить экземпляр SourceControl.
Файловая структура SourceControl#
AppWorkPathПараметр
WORK_PATHвapp.iniФлаг
--work-pathПеременная окружения
SC_WORK_DIRДиректория, которая содержит бинарный файл SourceControl
AppDataPath(по умолчанию для БД, индексов и т.п.)APP_DATA_PATHизapp.iniAppWorkPath/data
CustomPath(пользовательские шаблоны)Флаг
--custom-pathПеременная окружения
SC_CUSTOMAppWorkPath/custom
HomeDir
Unix: Переменная окружения
HOME
RepoRootPath
Если это абсолютный путь, то
ROOTв разделе [repository] файлаapp.iniИначе (путь относительный)
AppWorkPath/ROOT, еслиROOTв разделе [repository] файлаapp.iniПо умолчанию
%(APP_DATA_PATH)/sc-repositories
Конфигурационный файл (
app.ini)Флаг
--configCustomPath/conf/app.ini