CreateSymlink implements restore.Output interface.
(ctx context.Context, relativePath string, l fs.Symlink)
| 106 | |
| 107 | // CreateSymlink implements restore.Output interface. |
| 108 | func (o *TarOutput) CreateSymlink(ctx context.Context, relativePath string, l fs.Symlink) error { |
| 109 | target, err := l.Readlink(ctx) |
| 110 | if err != nil { |
| 111 | return errors.Wrap(err, "error reading link target") |
| 112 | } |
| 113 | |
| 114 | h := &tar.Header{ |
| 115 | Name: relativePath, |
| 116 | ModTime: l.ModTime(), |
| 117 | Mode: int64(l.Mode()), |
| 118 | Uid: int(l.Owner().UserID), |
| 119 | Gid: int(l.Owner().GroupID), |
| 120 | Typeflag: tar.TypeSymlink, |
| 121 | Linkname: target, |
| 122 | } |
| 123 | |
| 124 | if err := o.tf.WriteHeader(h); err != nil { |
| 125 | return errors.Wrap(err, "error writing tar header") |
| 126 | } |
| 127 | |
| 128 | return nil |
| 129 | } |
| 130 | |
| 131 | // SymlinkExists implements restore.Output interface. |
| 132 | // |