``` * use go 1.17 semantics in go.mod * pin tonistiigi/fsutil dep to match docker/docker's dep go get -u ./... go mod vendor ``` |
||
|---|---|---|
| .. | ||
| .gitignore | ||
| LICENSE | ||
| README.md | ||
| copy.go | ||
| copy_namedpipes.go | ||
| copy_namedpipes_x.go | ||
| fileinfo.go | ||
| options.go | ||
| preserve_owner.go | ||
| preserve_owner_windows.go | ||
| preserve_times.go | ||
| stat_times.go | ||
| stat_times_darwin.go | ||
| stat_times_freebsd.go | ||
| stat_times_windows.go | ||
| stat_times_x.go | ||
| test_setup.go | ||
| test_setup_x.go | ||
README.md
copy
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 entry,
// 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
// 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)