티스토리 뷰
오늘은 Golang으로 파일을 압축하는 방법을 알아보겠습니다. 내용은 아래 소스파일의 주석을 확인해주세요.
package main
import(
"archive/tar"
"path/filepath"
)
func compress(tarWriter *tar.Writer, dir *os.File) error {
// 0을 넘겨 모든 파일 정보를 받아옵니다.
files, _ := dir.Readdir(0)
for _, fileInfo := range files {
// 파일을 가져오고
file, err := os.Open(dir.Name() + string(filepath.Separator) + fileInfo.Name())
if err != nil {
return err
}
// 파일이 디렉터리일 경우
if fileInfo.IsDir() {
// 압축파일의 Writer와 바로 위에서 가져온 파일을 넘겨 아래의 모든 파일까지 압축합니다.
compress(tarWriter, file)
// 위에서 모든 파일을 압축했으니 다음 파일로 넘어간다.
continue
}
// file header
header := new(tar.Header)
header.Name = file.Name()
header.Size = fileInfo.Size()
header.Mode = int64(fileInfo.Mode())
header.ModTime = fileInfo.ModTime()
// 압축파일에 쓰기.
err = tarWriter.WriteHeader(header)
if err != nil {
return err
}
_, err = io.Copy(tarWriter, file)
file.Close()
if err != nil {
return err
}
}
return nil
}
func main() {
tarFile, _ := os.Create("file path.tar")
defer tarFile.Close()
tarWriter := tar.NewWriter(tarFile)
defer tarWriter.Close()
dir, _ := os.Open("directory path")
defer dir.Close()
compress(tarWriter, dir)
}
결과 화면
감사합니다 끝!
'Golang' 카테고리의 다른 글
Golang REST API 만들기 (0) | 2021.08.05 |
---|
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- pg dump
- golang web api
- postgresql db dump
- docker redis
- docker redis container
- golang file compress
- docker run redis-cli
- golang http encode
- docker postgres
- docker run postgres
- golang REST API example
- golang rest api server
- docker redis image
- postgres images
- golang http decode
- golang 디렉터리 압축
- golang 폴더 압축
- golang 압축
- golang rest api
- postgresql dump
- golang http
- docker run redis
- golang directory compress
- golang 파일 압축
- golang request body decode
- db dump
- postgres container
- golang api
- docker run redis-server
- pg db dump
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함