mirror of
https://github.com/owncast/owncast.git
synced 2024-11-21 20:28:15 +03:00
updates to backups directory (#1099)
* read BackupDirectory from command line flag * Change the default backup directory * mkdir BackupDirectory * use config for backup file path * migrateDatabase to the backup directory * use DoesFileExists change permission on the directory to 0700 * declare err * generate backupFile where needed * style fix * more style fixes * more style fixes
This commit is contained in:
parent
d9a6be2ac6
commit
e991199735
4 changed files with 22 additions and 4 deletions
|
@ -11,8 +11,6 @@ const (
|
||||||
PrivateHLSStoragePath = "hls"
|
PrivateHLSStoragePath = "hls"
|
||||||
// FfmpegSuggestedVersion is the version of ffmpeg we suggest.
|
// FfmpegSuggestedVersion is the version of ffmpeg we suggest.
|
||||||
FfmpegSuggestedVersion = "v4.1.5" // Requires the v
|
FfmpegSuggestedVersion = "v4.1.5" // Requires the v
|
||||||
// BackupDirectory is the directory we write backup files to.
|
|
||||||
BackupDirectory = "backup"
|
|
||||||
// DataDirectory is the directory we save data to.
|
// DataDirectory is the directory we save data to.
|
||||||
DataDirectory = "data"
|
DataDirectory = "data"
|
||||||
)
|
)
|
||||||
|
@ -20,4 +18,6 @@ const (
|
||||||
var (
|
var (
|
||||||
// PublicHLSStoragePath is the directory we write public HLS files to for distribution.
|
// PublicHLSStoragePath is the directory we write public HLS files to for distribution.
|
||||||
PublicHLSStoragePath = filepath.Join(WebRoot, "hls")
|
PublicHLSStoragePath = filepath.Join(WebRoot, "hls")
|
||||||
|
// BackupDirectory is the directory we write backup files to.
|
||||||
|
BackupDirectory = filepath.Join(DataDirectory, "backup")
|
||||||
)
|
)
|
||||||
|
|
|
@ -8,15 +8,16 @@ import (
|
||||||
"database/sql"
|
"database/sql"
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
"path/filepath"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/owncast/owncast/config"
|
||||||
"github.com/owncast/owncast/utils"
|
"github.com/owncast/owncast/utils"
|
||||||
log "github.com/sirupsen/logrus"
|
log "github.com/sirupsen/logrus"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
schemaVersion = 0
|
schemaVersion = 0
|
||||||
backupFile = "backup/owncastdb.bak"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var _db *sql.DB
|
var _db *sql.DB
|
||||||
|
@ -95,6 +96,7 @@ func SetupPersistence(file string) error {
|
||||||
|
|
||||||
dbBackupTicker := time.NewTicker(1 * time.Hour)
|
dbBackupTicker := time.NewTicker(1 * time.Hour)
|
||||||
go func() {
|
go func() {
|
||||||
|
backupFile := filepath.Join(config.BackupDirectory, "owncastdb.bak")
|
||||||
for range dbBackupTicker.C {
|
for range dbBackupTicker.C {
|
||||||
utils.Backup(_db, backupFile)
|
utils.Backup(_db, backupFile)
|
||||||
}
|
}
|
||||||
|
@ -105,7 +107,8 @@ func SetupPersistence(file string) error {
|
||||||
|
|
||||||
func migrateDatabase(db *sql.DB, from, to int) error {
|
func migrateDatabase(db *sql.DB, from, to int) error {
|
||||||
log.Printf("Migrating database from version %d to %d\n", from, to)
|
log.Printf("Migrating database from version %d to %d\n", from, to)
|
||||||
utils.Backup(db, fmt.Sprintf("backup/owncast-v%d.bak", from))
|
dbBackupFile := filepath.Join(config.BackupDirectory, fmt.Sprintf("owncast-v%d.bak", from))
|
||||||
|
utils.Backup(db, dbBackupFile)
|
||||||
for v := from; v < to; v++ {
|
for v := from; v < to; v++ {
|
||||||
switch v {
|
switch v {
|
||||||
case 0:
|
case 0:
|
||||||
|
|
5
main.go
5
main.go
|
@ -35,6 +35,7 @@ func main() {
|
||||||
|
|
||||||
dbFile := flag.String("database", "", "Path to the database file.")
|
dbFile := flag.String("database", "", "Path to the database file.")
|
||||||
logDirectory := flag.String("logdir", "", "Directory where logs will be written to")
|
logDirectory := flag.String("logdir", "", "Directory where logs will be written to")
|
||||||
|
backupDirectory := flag.String("backupdir", "", "Directory where backups will be written to")
|
||||||
enableDebugOptions := flag.Bool("enableDebugFeatures", false, "Enable additional debugging options.")
|
enableDebugOptions := flag.Bool("enableDebugFeatures", false, "Enable additional debugging options.")
|
||||||
enableVerboseLogging := flag.Bool("enableVerboseLogging", false, "Enable additional logging.")
|
enableVerboseLogging := flag.Bool("enableVerboseLogging", false, "Enable additional logging.")
|
||||||
restoreDatabaseFile := flag.String("restoreDatabase", "", "Restore an Owncast database backup")
|
restoreDatabaseFile := flag.String("restoreDatabase", "", "Restore an Owncast database backup")
|
||||||
|
@ -62,6 +63,10 @@ func main() {
|
||||||
configureLogging(*enableDebugOptions, *enableVerboseLogging)
|
configureLogging(*enableDebugOptions, *enableVerboseLogging)
|
||||||
log.Infoln(config.GetReleaseString())
|
log.Infoln(config.GetReleaseString())
|
||||||
|
|
||||||
|
if *backupDirectory != "" {
|
||||||
|
config.BackupDirectory = *backupDirectory
|
||||||
|
}
|
||||||
|
|
||||||
// Create the data directory if needed
|
// Create the data directory if needed
|
||||||
if !utils.DoesFileExists("data") {
|
if !utils.DoesFileExists("data") {
|
||||||
os.Mkdir("./data", 0700)
|
os.Mkdir("./data", 0700)
|
||||||
|
|
|
@ -10,6 +10,7 @@ import (
|
||||||
"io"
|
"io"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"os"
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
|
||||||
_ "github.com/mattn/go-sqlite3"
|
_ "github.com/mattn/go-sqlite3"
|
||||||
"github.com/schollz/sqlite3dump"
|
"github.com/schollz/sqlite3dump"
|
||||||
|
@ -59,6 +60,15 @@ func Restore(backupFile string, databaseFile string) error {
|
||||||
func Backup(db *sql.DB, backupFile string) {
|
func Backup(db *sql.DB, backupFile string) {
|
||||||
log.Traceln("Backing up database to", backupFile)
|
log.Traceln("Backing up database to", backupFile)
|
||||||
|
|
||||||
|
BackupDirectory := filepath.Dir(backupFile)
|
||||||
|
|
||||||
|
if !DoesFileExists(BackupDirectory) {
|
||||||
|
err := os.MkdirAll(BackupDirectory, 0700)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalln(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Dump the entire database as plain text sql
|
// Dump the entire database as plain text sql
|
||||||
var b bytes.Buffer
|
var b bytes.Buffer
|
||||||
out := bufio.NewWriter(&b)
|
out := bufio.NewWriter(&b)
|
||||||
|
|
Loading…
Reference in a new issue