Update README: License scan
1 file changed
tree: ea88ed2039f544db0c2a966eb5bdd9aa4590f7e3
  1. .github/
  2. .gitignore
  4. README.md
  5. all_test.go
  6. copy.go
  7. copy_namedpipes.go
  8. copy_namedpipes_windows.go
  9. example_test.go
  10. go.mod
  11. go.sum
  12. options.go
  13. patherror_go1.15_test.go
  14. patherror_go1.16_test.go
  15. preserve_times.go
  16. stat_times.go
  17. stat_times_darwin.go
  18. stat_times_freebsd.go
  19. stat_times_windows.go
  20. test/
  21. test_setup.go
  22. test_setup_windows.go


Go Reference Actions Status codecov License: MIT FOSSA Status Go Report Card GitHub tag (latest SemVer)

copy copies directories recursively.

Example Usage

err := Copy("your/directory", "your/directory.copy")

Advanced Usage

// 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)

	// AddPermission to every entities,
	// NO MORE THAN 0777
	AddPermission os.FileMode

	// 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

	// 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)