diff --git a/copy.go b/copy.go index 60643dd..d0450e7 100644 --- a/copy.go +++ b/copy.go @@ -65,6 +65,14 @@ func copyNextOrSkip(src, dest string, info os.FileInfo, opt Options) error { // with considering existence of parent directory // and file permission. func fcopy(src, dest string, info os.FileInfo, opt Options) (err error) { + s, err := os.Open(src) + if err != nil { + if os.IsNotExist(err) { + return nil + } + return + } + defer fclose(s, &err) if err = os.MkdirAll(filepath.Dir(dest), os.ModePerm); err != nil { return @@ -82,12 +90,6 @@ func fcopy(src, dest string, info os.FileInfo, opt Options) (err error) { } chmodfunc(&err) - s, err := os.Open(src) - if err != nil { - return - } - defer fclose(s, &err) - var buf []byte = nil var w io.Writer = f var r io.Reader = s @@ -146,6 +148,9 @@ func dcopy(srcdir, destdir string, info os.FileInfo, opt Options) (err error) { contents, err := ioutil.ReadDir(srcdir) if err != nil { + if os.IsNotExist(err) { + return nil + } return } @@ -222,6 +227,9 @@ func onsymlink(src, dest string, opt Options) error { func lcopy(src, dest string) error { src, err := os.Readlink(src) if err != nil { + if os.IsNotExist(err) { + return nil + } return err } return os.Symlink(src, dest)