compress archived configs
This commit is contained in:
parent
115fb9b48f
commit
9acfa08ca4
@ -1,6 +1,7 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"compress/gzip"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"flag"
|
"flag"
|
||||||
"io"
|
"io"
|
||||||
@ -273,13 +274,12 @@ func uploadConfig(w http.ResponseWriter, r *http.Request) {
|
|||||||
|
|
||||||
defer os.Remove(out.Name())
|
defer os.Remove(out.Name())
|
||||||
|
|
||||||
func() {
|
_, err = io.Copy(out, r.Body)
|
||||||
defer out.Close()
|
out.Close()
|
||||||
if _, err = io.Copy(out, r.Body); err != nil {
|
if err != nil {
|
||||||
writeError(w, err)
|
writeError(w, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}()
|
|
||||||
|
|
||||||
archivesPath := filepath.Join(*dataDir, "archives")
|
archivesPath := filepath.Join(*dataDir, "archives")
|
||||||
cfgPath := configFilePath()
|
cfgPath := configFilePath()
|
||||||
@ -290,14 +290,38 @@ func uploadConfig(w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
backupPath := filepath.Join(archivesPath, "config."+time.Now().Format(time.RFC3339)+".yaml")
|
err = func() (err error) {
|
||||||
err = os.Rename(cfgPath, backupPath)
|
backupPath := filepath.Join(archivesPath, "config."+time.Now().Format(time.RFC3339)+".yaml.gz")
|
||||||
|
|
||||||
|
bck, err := os.Create(backupPath)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
defer bck.Close()
|
||||||
|
|
||||||
|
in, err := os.Open(cfgPath)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
gz, err := gzip.NewWriterLevel(bck, 2)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err = io.Copy(gz, in)
|
||||||
|
gz.Close()
|
||||||
|
in.Close()
|
||||||
|
return
|
||||||
|
}()
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
writeError(w, err)
|
writeError(w, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
err = os.Rename(out.Name(), configFilePath())
|
err = os.Rename(out.Name(), cfgPath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
writeError(w, err)
|
writeError(w, err)
|
||||||
return
|
return
|
||||||
|
Loading…
Reference in New Issue
Block a user