wal-g

Форк
0
/
tar_ball.go 
36 строк · 812.0 Байт
1
package internal
2

3
import (
4
	"archive/tar"
5
	"io"
6

7
	"github.com/pkg/errors"
8
	"github.com/wal-g/wal-g/internal/crypto"
9
)
10

11
// A TarBall represents one tar file.
12
type TarBall interface {
13
	SetUp(crypter crypto.Crypter, args ...string)
14
	CloseTar() error
15
	Size() int64
16
	AddSize(int64)
17
	TarWriter() *tar.Writer
18
	AwaitUploads()
19
	Name() string
20
}
21

22
func PackFileTo(tarBall TarBall, fileInfoHeader *tar.Header, fileContent io.Reader) (fileSize int64, err error) {
23
	tarWriter := tarBall.TarWriter()
24
	err = tarWriter.WriteHeader(fileInfoHeader)
25
	if err != nil {
26
		return 0, errors.Wrap(err, "PackFileTo: failed to write header")
27
	}
28

29
	fileSize, err = io.Copy(tarWriter, fileContent)
30
	if err != nil {
31
		return fileSize, errors.Wrap(err, "PackFileTo: copy failed")
32
	}
33

34
	tarBall.AddSize(fileInfoHeader.Size)
35
	return fileSize, err
36
}
37

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.