From 9303b69ea569bcb5e581147543a3fd58e90d0d25 Mon Sep 17 00:00:00 2001 From: sunty <1172534965@qq.com> Date: 星期四, 20 八月 2020 20:05:23 +0800 Subject: [PATCH] add get buckets contrl --- extend/util/zip.go | 101 ++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 89 insertions(+), 12 deletions(-) diff --git a/extend/util/zip.go b/extend/util/zip.go index cb44ee3..0fac79f 100644 --- a/extend/util/zip.go +++ b/extend/util/zip.go @@ -5,10 +5,14 @@ "basic.com/valib/logger.git" "compress/gzip" "errors" + "fmt" "io" "io/ioutil" + "log" "os" + "os/exec" "path" + "path/filepath" "strings" ) @@ -26,7 +30,7 @@ logger.Debug("鏂囦欢鍚嶇О鏄�", FileName) //鍒涘缓瀛樻斁鍘嬬缉鏂囦欢鐨勮矾寰�(濡傛灉鏂囦欢澶逛笉瀛樺湪) - if !dirExists(DesPathName) { + if !DirExists(DesPathName) { os.MkdirAll(DesPathName, 0777) } logger.Debug("鍒涘缓鏂囦欢") @@ -121,11 +125,11 @@ // 娓呯悊璺緞瀛楃涓� src = path.Clean(src) // 鍒ゆ柇瑕佹墦鍖呯殑鏂囦欢鎴栫洰褰曟槸鍚﹀瓨鍦� - if !exists(src) { + if !Exists(src) { return errors.New("瑕佹墦鍖呯殑鏂囦欢鎴栫洰褰曚笉瀛樺湪锛�" + src) } // 鍒ゆ柇鐩爣鏂囦欢鏄惁瀛樺湪 - if fileExists(dstTar) { + if FileExists(dstTar) { if failIfExist { // 涓嶈鐩栧凡瀛樺湪鐨勬枃浠� return errors.New("鐩爣鏂囦欢宸茬粡瀛樺湪锛�" + dstTar) } else { // 瑕嗙洊宸插瓨鍦ㄧ殑鏂囦欢 @@ -277,6 +281,12 @@ return nil } +func UnTarGzByCmd(srcFile string, dstPath string) (string,error) { + cmd := exec.Command("tar","-zxvf", srcFile, "-C", dstPath) + outPut, err := cmd.Output() + return string(outPut), err +} + // 鍥犱负瑕佸湪 defer 涓叧闂枃浠讹紝鎵�浠ヨ鍗曠嫭鍒涘缓涓�涓嚱鏁� func unTarFile(dstFile string, tr *tar.Reader) error { // 鍒涘缓绌烘枃浠讹紝鍑嗗鍐欏叆瑙e寘鍚庣殑鏁版嵁 @@ -295,20 +305,87 @@ return nil } -// 鍒ゆ柇妗f鏄惁瀛樺湪 -func exists(name string) bool { - _, err := os.Stat(name) - return err == nil || os.IsExist(err) -} - // 鍒ゆ柇鏂囦欢鏄惁瀛樺湪 -func fileExists(filename string) bool { +func FileExists(filename string) bool { fi, err := os.Stat(filename) return (err == nil || os.IsExist(err)) && !fi.IsDir() } // 鍒ゆ柇鐩綍鏄惁瀛樺湪 -func dirExists(dirname string) bool { +func DirExists(dirname string) bool { fi, err := os.Stat(dirname) return (err == nil || os.IsExist(err)) && fi.IsDir() -} \ No newline at end of file +} + +func CopyDirByCmd(src ,dest string) (string,error) { + cmd := exec.Command("cp","-r", src, dest) + outPut, err := cmd.Output() + return string(outPut), err +} + +//鏂囦欢澶瑰鍒� +func CopyDir(src string, dest string) { + src_original := src + err := filepath.Walk(src, func(src string, f os.FileInfo, err error) error { + if f == nil { + return err + } + if f.IsDir() { + CopyDir(f.Name(), dest+"/"+f.Name()) + } else { + fmt.Println(src) + fmt.Println(src_original) + fmt.Println(dest) + + dest_new := strings.Replace(src, src_original, dest, -1) + fmt.Println(dest_new) + fmt.Println("CopyFile:" + src + " to " + dest_new) + CopyFile(src, dest_new) + } + return nil + }) + if err != nil { + fmt.Printf("filepath.Walk() returned %v\n", err) + } +} + +//澶ф枃浠跺鍒� +func CopyFile(srcFileName string, dstFileName string) { + //鎵撳紑婧愭枃浠� + srcFile, err := os.Open(srcFileName) + if err != nil { + log.Fatalf("婧愭枃浠惰鍙栧け璐�,鍘熷洜鏄�:%v\n", err) + } + defer func() { + err = srcFile.Close() + if err != nil { + log.Fatalf("婧愭枃浠跺叧闂け璐�,鍘熷洜鏄�:%v\n", err) + } + }() + + //鍒涘缓鐩爣鏂囦欢,绋嶅悗浼氬悜杩欎釜鐩爣鏂囦欢鍐欏叆鎷疯礉鍐呭 + distFile, err := os.Create(dstFileName) + if err != nil { + log.Fatalf("鐩爣鏂囦欢鍒涘缓澶辫触,鍘熷洜鏄�:%v\n", err) + } + defer func() { + err = distFile.Close() + if err != nil { + log.Fatalf("鐩爣鏂囦欢鍏抽棴澶辫触,鍘熷洜鏄�:%v\n", err) + } + }() + //瀹氫箟鎸囧畾闀垮害鐨勫瓧鑺傚垏鐗�,姣忔鏈�澶氳鍙栨寚瀹氶暱搴� + var tmp = make([]byte, 1024*4) + //寰幆璇诲彇骞跺啓鍏� + for { + n, err := srcFile.Read(tmp) + n, _ = distFile.Write(tmp[:n]) + if err != nil { + if err == io.EOF {//璇诲埌浜嗘枃浠舵湯灏�,骞朵笖鍐欏叆瀹屾瘯,浠诲姟瀹屾垚杩斿洖(鍏抽棴鏂囦欢鐨勬搷浣滅敱defer鏉ュ畬鎴�) + return + } else { + log.Fatalf("鎷疯礉杩囩▼涓彂鐢熼敊璇�,閿欒鍘熷洜涓�:%v\n", err) + } + } + } +} -- Gitblit v1.8.0