| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- package main
- import (
- "fmt"
- "archive/tar"
- //"errors"
- "io"
- "io/ioutil"
- "os"
- "path/filepath"
- "strings"
- )
- func main() {
- f, err := os.OpenFile("hello.tar", os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0777)
- if err != nil {
- panic(err)
- }
- defer f.Close()
- err = Persist(f)
- if err != nil {
- panic(err)
- }
- }
- func Persist(wr io.Writer) error {
- tw := tar.NewWriter(wr)
- defer tw.Close()
-
-
- dirPath := filepath.Dir("/opt/matrix/var/logs/odbserver/log.db")
-
- if dir, err := ioutil.ReadDir( dirPath ) ; err != nil {
- return err
- } else {
- println(dir)
- PthSep := string(os.PathSeparator)
- for _, fi := range dir {
- if fi.IsDir() { // 忽略目录
- continue
- }
-
- //-------------------------------
- // 把所有db保存为tar格式
- //-------------------------------
- println("name ==>"+fi.Name())
- if strings.HasSuffix(fi.Name(), ".db") { //匹配文件
-
- file := dirPath+PthSep+fi.Name()
- println("file =>", file)
- if f, err := os.Open(file) ; err != nil {
- return err
- }else{
-
- if header, err := tar.FileInfoHeader(fi, "") ; err != nil {
- return err
- }else{
- header.Name = "/" + header.Name
- println("header.Name =>"+header.Name)
- if err = tw.WriteHeader(header) ; err != nil {
- return err
- }else{
- if n, err := io.Copy(tw, f) ; err != nil {
- return err
- }else{
- fmt.Printf("n==> %d", n)
- f.Close()
- }
- }
- }
- }
- }
- }
- }
-
- return nil
- }
|