Files
KubePi/pkg/util/podtool/copyfrompod.go

56 lines
879 B
Go

package podtool
import (
"bufio"
"io"
"os"
)
func (p *PodTool) CopyFromPod(filePath string, destPath string) error {
reader, outStream := io.Pipe()
p.ExecConfig = ExecConfig{
Command: []string{"tar", "cf", "-", filePath},
Stdin: os.Stdin,
Stdout: outStream,
Stderr: os.Stderr,
NoPreserve: true,
}
err := p.Exec(Download)
if err != nil {
return err
}
file, err := os.OpenFile(destPath, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)
if err != nil {
return err
}
r := bufio.NewReader(reader)
w := bufio.NewWriter(file)
size := 4 * 1024
buf := make([]byte, 4*1024)
for {
n, err := r.Read(buf)
if err != nil && err != io.EOF {
return err
}
if n == 0 {
break
}
_, err = w.Write(buf[:n])
if err != nil {
return err
}
if n < size {
break
}
}
err = w.Flush()
if err != nil {
return err
}
return err
}