MCPcopy
hub / github.com/kopia/kopia / WriteFile

Method WriteFile

snapshot/restore/tar_output.go:72–98  ·  view source on GitHub ↗

WriteFile implements restore.Output interface.

(ctx context.Context, relativePath string, f fs.File, _ FileWriteProgress)

Source from the content-addressed store, hash-verified

70
71// WriteFile implements restore.Output interface.
72func (o *TarOutput) WriteFile(ctx context.Context, relativePath string, f fs.File, _ FileWriteProgress) error {
73 r, err := f.Open(ctx)
74 if err != nil {
75 return errors.Wrap(err, "error opening file")
76 }
77 defer r.Close() //nolint:errcheck
78
79 h := &tar.Header{
80 Name: relativePath,
81 ModTime: f.ModTime(),
82 Size: f.Size(),
83 Mode: int64(f.Mode()),
84 Uid: int(f.Owner().UserID),
85 Gid: int(f.Owner().GroupID),
86 Typeflag: tar.TypeReg,
87 }
88
89 if err := o.tf.WriteHeader(h); err != nil {
90 return errors.Wrap(err, "error writing tar header")
91 }
92
93 if _, err := io.Copy(o.tf, r); err != nil {
94 return errors.Wrap(err, "error copying data to tar")
95 }
96
97 return nil
98}
99
100// FileExists implements restore.Output interface.
101//

Callers

nothing calls this directly

Calls 6

OpenMethod · 0.65
CloseMethod · 0.65
OwnerMethod · 0.65
ModTimeMethod · 0.45
SizeMethod · 0.45
ModeMethod · 0.45

Tested by

no test coverage detected