commit | 705b76e8be6f8968f4e81bbab314ff3f7c76e1c1 | [log] [tgz] |
---|---|---|
author | Hiromu OCHIAI <otiai10@gmail.com> | Wed Nov 09 01:15:01 2022 |
committer | GitHub <noreply@github.com> | Wed Nov 09 01:15:01 2022 |
tree | 694a3b165540e087b78de49be03c21955f78e199 | |
parent | b96fe4337381c553d3cef43c649befaa5acf1463 [diff] | |
parent | ae3e4ab52ccbc537394df571662181777ea12bb0 [diff] |
Merge pull request #84 from otiai10/feature/fix-78 Skip device files by default: Use opt.Specials
copy
copies directories recursively.
package main import ( "fmt" cp "github.com/otiai10/copy" ) func main() { err := cp.Copy("your/src", "your/dest") fmt.Println(err) // nil }
// Options specifies optional actions on copying. type Options struct { // OnSymlink can specify what to do on symlink OnSymlink func(src string) SymlinkAction // OnDirExists can specify what to do when there is a directory already existing in destination. OnDirExists func(src, dest string) DirExistsAction // Skip can specify which files should be skipped Skip func(src string) (bool, error) // PermissionControl can control permission of // every entry. // When you want to add permission 0222, do like // // PermissionControl = AddPermission(0222) // // or if you even don't want to touch permission, // // PermissionControl = DoNothing // // By default, PermissionControl = PreservePermission PermissionControl PermissionControlFunc // Sync file after copy. // Useful in case when file must be on the disk // (in case crash happens, for example), // at the expense of some performance penalty Sync bool // Preserve the atime and the mtime of the entries // On linux we can preserve only up to 1 millisecond accuracy PreserveTimes bool // Preserve the uid and the gid of all entries. PreserveOwner bool // The byte size of the buffer to use for copying files. // If zero, the internal default buffer of 32KB is used. // See https://golang.org/pkg/io/#CopyBuffer for more information. CopyBufferSize uint }
// For example... opt := Options{ Skip: func(src string) (bool, error) { return strings.HasSuffix(src, ".git"), nil }, } err := Copy("your/directory", "your/directory.copy", opt)