MCPcopy
hub / github.com/1Panel-dev/KubePi / CopyFolderFromPod

Method CopyFolderFromPod

pkg/util/podtool/copyfrompod.go:55–101  ·  view source on GitHub ↗
(filePath string, destPath string)

Source from the content-addressed store, hash-verified

53 return err
54}
55func (p *PodTool) CopyFolderFromPod(filePath string, destPath string) error {
56 reader, outStream := io.Pipe()
57
58 p.ExecConfig = ExecConfig{
59 Command: []string{"tar", "cf", "-", filePath},
60 Stdin: os.Stdin,
61 Stdout: outStream,
62 Stderr: os.Stderr,
63 NoPreserve: true,
64 }
65
66 err := p.Exec(Download)
67 if err != nil {
68 return err
69 }
70
71 file, err := os.OpenFile(destPath, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)
72 if err != nil {
73 return err
74 }
75
76 r := bufio.NewReader(reader)
77 w := bufio.NewWriter(file)
78 size := 4 * 1024
79 buf := make([]byte, 4*1024)
80 for {
81 n, err := r.Read(buf)
82 if err != nil && err != io.EOF {
83 return err
84 }
85 if n == 0 {
86 break
87 }
88 _, err = w.Write(buf[:n])
89 if err != nil {
90 return err
91 }
92 if n < size {
93 break
94 }
95 }
96 err = w.Flush()
97 if err != nil {
98 return err
99 }
100 return err
101}

Callers 1

DownloadFolderMethod · 0.80

Calls 4

ExecMethod · 0.95
OpenFileMethod · 0.80
ReadMethod · 0.45
WriteMethod · 0.45

Tested by

no test coverage detected