golang 用tar打包檔案或資料夾

2022-05-18 05:08:55 字數 2687 閱讀 2170

打包檔案用到了tar包,其中tar包的用法可以參考api 

golang提供了個函式用來遍歷資料夾 filepath.walk

函式具體描述如下:

func walk(root string, walkfn walkfunc) error  root是用遍歷的資料夾

type walkfunc

type walkfunc func(path string, info os.fileinfo, err error) error path引數是返回遍歷的檔案路徑和檔案資訊

在使用中如**中藍色部分,通過該方法呢,我們可以對檔案和資料夾的操作更加熟悉,其中用到了

os.create 用來建立檔案,返回檔案資訊和錯誤資訊  func create(name string) (file *file, err error)
os.remove 用來刪除檔案,返回錯誤資訊  func remove(name string) error
os.stat   用來返回檔案具體資訊,返回檔案資訊和錯誤資訊   func (f *file) stat() (fi fileinfo, err error)
os.open   用來開啟檔案,返回檔案資訊和錯誤資訊    func open(name string) (file *file, err error)
io.copy   復職檔案資訊到writer 

func copy(dst writer, src reader) (written int64, err error)

func copybuffer(dst writer, src reader, buf byte) (written int64, err error)

os.mkdir 用來建立資料夾,返回錯誤資訊  func mkdir(name string, perm filemode) error

strings.trimprefix(targetpath, directory) 這個方法獲取具體的檔案路徑相對目標資料夾的相對路徑,也是在tar包中建立資料夾的相對路徑

package main
import (
"archive/tar"
"fmt"
"io"
"os"
"path/filepath"
"strings"
)
/***生成***/
func createtar(filesource, filetarget string, deleteifexist bool) error
} else
}
defer tarfile.close()
tarwriter := tar.newwriter(tarfile)
sfileinfo, err := os.stat(filesource)
if err != nil
if !sfileinfo.isdir()  else
return nil
}
func tarfile(directory string, filesource string, sfileinfo os.fileinfo, tarwriter *tar.writer) error
defer sfile.close()
header, err := tar.fileinfoheader(sfileinfo, "")
if err != nil
header.name = directory
err = tarwriter.writeheader(header)
if err != nil
//  can use buffer to copy the file to tar writer
//    buf := make(byte,15)
//    if _, err = io.copybuffer(tarwriter, sfile, buf); err != nil
if _, err = io.copy(tarwriter, sfile); err != nil
return nil
}
func tarfolder(directory string, tarwriter *tar.writer) error
if file.isdir()
header.name = filepath.join(basefolder, strings.trimprefix(targetpath, directory))
fmt.println(hdr.name)
if err = tarwriter.writeheader(header); err != nil
os.mkdir(strings.trimprefix(basefolder, file.name()), os.modedir)
return nil
} else
})
}

檔案打包壓縮tar

tar option.file c 建立 f 指定歸檔檔案名稱 t 顯示歸檔檔案中的內容 r 向歸檔檔案中新增檔案 x 取出歸檔檔案中的所有內容 c 指定解檔目錄 v 顯示過程,z gz格式壓縮 j bz2格式壓縮 j xz格式壓縮 get 取出單個檔案 delete 刪除單個檔案 打包 tar c...

tar 檔案打包,解壓

tar打包命令 以上三種壓縮解壓只能針對單檔案執行,那麼如果將多個檔案合併到乙個大檔案中,怎麼做到呢?那就要用tar這個命令。tar不止這麼多,它還支援gzip bzip2在打包的同時對檔案進行壓縮。由於這tar使用過於廣泛,就連windows中的winrar也支援.tar.gz檔名的解壓縮。語法 ...

Linux命令(十五) 打包或解壓檔案 tar

1.命令簡介 2.常用引數介紹 3.例項 4.直達底部 tar 命令用於將檔案打包或解壓,副檔名一般為 tar 指定特定的引數可以呼叫 gzip 或 bzip2 製作壓縮包或解壓壓縮包,擴充套件名為 tar.gz 或 tar.bz2 返回目錄 c 建立新的壓縮包 d 比較存檔與當前檔案的不同之處 d...