CopyDir Dir copies a whole directory recursively
(src string, dst string)
| 89 | |
| 90 | // CopyDir Dir copies a whole directory recursively |
| 91 | func (d *SMB) CopyDir(src string, dst string) error { |
| 92 | var err error |
| 93 | var fds []fs.FileInfo |
| 94 | var srcinfo fs.FileInfo |
| 95 | |
| 96 | if srcinfo, err = d.fs.Stat(src); err != nil { |
| 97 | return err |
| 98 | } |
| 99 | if err = d.fs.MkdirAll(dst, srcinfo.Mode()); err != nil { |
| 100 | return err |
| 101 | } |
| 102 | if fds, err = d.fs.ReadDir(src); err != nil { |
| 103 | return err |
| 104 | } |
| 105 | for _, fd := range fds { |
| 106 | srcfp := filepath.Join(src, fd.Name()) |
| 107 | dstfp := filepath.Join(dst, fd.Name()) |
| 108 | |
| 109 | if fd.IsDir() { |
| 110 | if err = d.CopyDir(srcfp, dstfp); err != nil { |
| 111 | return err |
| 112 | } |
| 113 | } else { |
| 114 | if err = d.CopyFile(srcfp, dstfp); err != nil { |
| 115 | return err |
| 116 | } |
| 117 | } |
| 118 | } |
| 119 | return nil |
| 120 | } |
| 121 | |
| 122 | // Exists determine whether the file exists |
| 123 | func (d *SMB) Exists(name string) bool { |