switch to different copy
This commit is contained in:
78
backup.go
78
backup.go
@ -5,12 +5,14 @@ import (
|
||||
"bufio"
|
||||
"fmt"
|
||||
"io"
|
||||
"log"
|
||||
"os"
|
||||
"os/exec"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/otiai10/copy"
|
||||
"github.com/pelletier/go-toml"
|
||||
)
|
||||
|
||||
@ -95,62 +97,15 @@ func zipIt(pathToZip string, pathToFiles string) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func _CopyDir(source string, destination string) error {
|
||||
srcDir, err := os.Stat(source)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if !srcDir.IsDir() {
|
||||
return fmt.Errorf("source is not a directory")
|
||||
}
|
||||
|
||||
dstDir, err := os.Stat(destination)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if !dstDir.IsDir() {
|
||||
return fmt.Errorf("destination is not a directory")
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func _CopyFile(source string, destination string) error {
|
||||
srcFile, err := os.Open(source)
|
||||
dstFile, err := os.Create(destination)
|
||||
|
||||
_, err = io.Copy(dstFile, srcFile)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = dstFile.Sync()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = srcFile.Close()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = dstFile.Close()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func backup(when string) error {
|
||||
var err error
|
||||
tmpPath := fmt.Sprint("/tmp/update/", when, "_backup")
|
||||
log.Printf("tmpPath is: %s\n", tmpPath)
|
||||
pacmanDb, err := parsePacmanConf()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
log.Printf("pacmanDB is at: %s\n", pacmanDb)
|
||||
|
||||
err = os.MkdirAll(tmpPath, 0755)
|
||||
if err != nil {
|
||||
@ -171,7 +126,7 @@ func backup(when string) error {
|
||||
}
|
||||
|
||||
if strings.Compare(when, "post") != 0 {
|
||||
err = _CopyDir(pacmanDb, fmt.Sprint(tmpPath, "/", pacmanDb))
|
||||
err = copy.Copy(pacmanDb, fmt.Sprint(tmpPath, "/", pacmanDb))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@ -179,13 +134,16 @@ func backup(when string) error {
|
||||
|
||||
current_time := time.Now().Format(time.RFC3339)
|
||||
pathToZip := fmt.Sprint(tmpPath, "_", current_time, ".zip")
|
||||
log.Printf("pathToZip is: %s\n", pathToZip)
|
||||
err = zipIt(pathToZip, tmpPath)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
for _, backup_location := range backup_locations {
|
||||
err = _CopyFile(pathToZip, fmt.Sprint(backup_location, "/", when, "_backup_", current_time, ".zip"))
|
||||
backup_path := fmt.Sprintf("%s/%s/%s_backup_%s.zip", backup_location, when, when, current_time)
|
||||
log.Printf("backup_path is: %s\n", backup_path)
|
||||
err = copy.Copy(pathToZip, backup_path)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@ -195,6 +153,23 @@ func backup(when string) error {
|
||||
}
|
||||
|
||||
func main() {
|
||||
if strings.Compare(os.Args[1], "debug") != 0 {
|
||||
log.SetOutput(io.Discard)
|
||||
} else {
|
||||
logFile, err := os.OpenFile("/tmp/update.txt", os.O_CREATE | os.O_APPEND | os.O_RDWR, 0666)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
defer logFile.Close()
|
||||
|
||||
mw := io.MultiWriter(os.Stdout, logFile)
|
||||
log.SetOutput(mw)
|
||||
|
||||
fmt.Println("Logfile is /tmp/update.txt")
|
||||
}
|
||||
|
||||
log.Printf("Cmdline argument is: %s\n", os.Args[1])
|
||||
|
||||
os.RemoveAll("/tmp/update")
|
||||
|
||||
tree, err := toml.LoadFile("/etc/update.toml")
|
||||
@ -204,6 +179,7 @@ func main() {
|
||||
}
|
||||
|
||||
backup_locations = tree.GetArray("backup.locations").([]string)
|
||||
log.Printf("backup_locations are: %s\n", backup_locations)
|
||||
|
||||
err = backup(os.Args[1])
|
||||
if err != nil {
|
||||
|
Reference in New Issue
Block a user