Skip to content

Commit

Permalink
database backup
Browse files Browse the repository at this point in the history
  • Loading branch information
qishenonly committed Jan 23, 2024
1 parent 15d6df8 commit 2a7c016
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 4 deletions.
27 changes: 27 additions & 0 deletions db/engine/db_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -423,3 +423,30 @@ func TestDB_Sync(t *testing.T) {
err = db.Sync()
assert.Nil(t, err)
}

func TestDB_Backup(t *testing.T) {
opts := config.DefaultOptions
dir, _ := os.MkdirTemp("", "flydb-backup")
opts.DirPath = dir
opts.DataFileSize = 64 * 1024 * 1024
db, err := NewDB(opts)
defer destroyDB(db)
assert.Nil(t, err)
assert.NotNil(t, db)

for i := 1; i < 1000000; i++ {
err = db.Put(randkv.GetTestKey(i), randkv.RandomValue(128))
assert.Nil(t, err)
}

backupDir, _ := os.MkdirTemp("", "flydb-backup-test")
err = db.Backup(backupDir)
assert.Nil(t, err)

opts1 := config.DefaultOptions
opts1.DirPath = backupDir
db1, err := NewDB(opts1)
defer destroyDB(db1)
assert.Nil(t, err)
assert.NotNil(t, db1)
}
13 changes: 9 additions & 4 deletions lib/backup/backup.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import (
// CopyFile copies a file from src to dest.
func copyFile(src, dest string, mode os.FileMode) error {
// Open the source file
srcFile, err := os.OpenFile(src, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, mode)
srcFile, err := os.OpenFile(src, os.O_RDONLY, mode)
if err != nil {
return err
}
Expand All @@ -20,9 +20,14 @@ func copyFile(src, dest string, mode os.FileMode) error {
}
}(srcFile)

// Create the destination file
destFile, err := os.Create(dest)
// Create or open the destination file
destFile, err := os.OpenFile(dest, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, mode)
if err != nil {
// Close the source file if opening destination file fails
err = srcFile.Close()
if err != nil {
return err
}
return err
}
defer func(destFile *os.File) {
Expand All @@ -38,7 +43,7 @@ func copyFile(src, dest string, mode os.FileMode) error {
}

// Set permissions on destination files
return os.Chmod(dest, mode)
return os.Chmod(dest, 0644)
}

// CopyDir copies a directory from src to dest.
Expand Down

0 comments on commit 2a7c016

Please sign in to comment.