Documentation
¶
Overview ¶
Package filter controls the filtering of files
Index ¶
- Variables
- func CopyConfig(dstCtx, srcCtx context.Context) context.Context
- func GetUseFilter(ctx context.Context) bool
- func GlobPathToRegexp(glob string, ignoreCase bool) (*regexp.Regexp, error)
- func GlobStringToRegexp(glob string, addAnchors bool, ignoreCase bool) (*regexp.Regexp, error)
- func Reload(ctx context.Context) (err error)
- func ReplaceConfig(ctx context.Context, f *Filter) context.Context
- func SetUseFilter(ctx context.Context, useFilter bool) context.Context
- type FilesMap
- type Filter
- func (f *Filter) Add(Include bool, glob string) error
- func (f *Filter) AddFile(file string) error
- func (f *Filter) AddRule(rule string) error
- func (f *Filter) Clear()
- func (f *Filter) DirContainsExcludeFile(ctx context.Context, fremote fs.Fs, remote string) (bool, error)
- func (f *Filter) DumpFilters() string
- func (f *Filter) Files() FilesMap
- func (f *Filter) HaveFilesFrom() bool
- func (f *Filter) InActive() bool
- func (f *Filter) Include(remote string, size int64, modTime time.Time, metadata fs.Metadata) bool
- func (f *Filter) IncludeDirectory(ctx context.Context, fs fs.Fs) func(string) (bool, error)
- func (f *Filter) IncludeObject(ctx context.Context, o fs.Object) bool
- func (f *Filter) IncludeRemote(remote string) bool
- func (f *Filter) ListContainsExcludeFile(entries fs.DirEntries) bool
- func (f *Filter) MakeListR(ctx context.Context, ...) fs.ListRFn
- func (f *Filter) UsesDirectoryFilters() bool
- type Options
- type RulesOpt
Constants ¶
This section is empty.
Variables ¶
var Opt = Options{ MinAge: fs.DurationOff, MaxAge: fs.DurationOff, MinSize: fs.SizeSuffix(-1), MaxSize: fs.SizeSuffix(-1), }
Opt is the default config for the filter
var OptionsInfo = fs.Options{{ Name: "delete_excluded", Default: false, Help: "Delete files on dest excluded from sync", Groups: "Filter", }, { Name: "exclude_if_present", Default: []string{}, Help: "Exclude directories if filename is present", Groups: "Filter", }, { Name: "files_from", Default: []string{}, Help: "Read list of source-file names from file (use - to read from stdin)", Groups: "Filter", }, { Name: "files_from_raw", Default: []string{}, Help: "Read list of source-file names from file without any processing of lines (use - to read from stdin)", Groups: "Filter", }, { Name: "min_age", Default: fs.DurationOff, Help: "Only transfer files older than this in s or suffix ms|s|m|h|d|w|M|y", Groups: "Filter", }, { Name: "max_age", Default: fs.DurationOff, Help: "Only transfer files younger than this in s or suffix ms|s|m|h|d|w|M|y", Groups: "Filter", }, { Name: "min_size", Default: fs.SizeSuffix(-1), Help: "Only transfer files bigger than this in KiB or suffix B|K|M|G|T|P", Groups: "Filter", }, { Name: "max_size", Default: fs.SizeSuffix(-1), Help: "Only transfer files smaller than this in KiB or suffix B|K|M|G|T|P", Groups: "Filter", }, { Name: "ignore_case", Default: false, Help: "Ignore case in filters (case insensitive)", Groups: "Filter", }, { Name: "hash_filter", Default: "", Help: "Partition filenames by hash k/n or randomly @/n", Groups: "Filter", }, { Name: "filter", Default: []string{}, ShortOpt: "f", Help: "Add a file filtering rule", Groups: "Filter", }, { Name: "filter_from", Default: []string{}, Help: "Read file filtering patterns from a file (use - to read from stdin)", Groups: "Filter", }, { Name: "exclude", Default: []string{}, Help: "Exclude files matching pattern", Groups: "Filter", }, { Name: "exclude_from", Default: []string{}, Help: "Read file exclude patterns from file (use - to read from stdin)", Groups: "Filter", }, { Name: "include", Default: []string{}, Help: "Include files matching pattern", Groups: "Filter", }, { Name: "include_from", Default: []string{}, Help: "Read file include patterns from file (use - to read from stdin)", Groups: "Filter", }, { Name: "metadata_filter", Default: []string{}, Help: "Add a metadata filtering rule", Groups: "Filter,Metadata", }, { Name: "metadata_filter_from", Default: []string{}, Help: "Read metadata filtering patterns from a file (use - to read from stdin)", Groups: "Filter,Metadata", }, { Name: "metadata_exclude", Default: []string{}, Help: "Exclude metadatas matching pattern", Groups: "Filter,Metadata", }, { Name: "metadata_exclude_from", Default: []string{}, Help: "Read metadata exclude patterns from file (use - to read from stdin)", Groups: "Filter,Metadata", }, { Name: "metadata_include", Default: []string{}, Help: "Include metadatas matching pattern", Groups: "Filter,Metadata", }, { Name: "metadata_include_from", Default: []string{}, Help: "Read metadata include patterns from file (use - to read from stdin)", Groups: "Filter,Metadata", }}
OptionsInfo describes the Options in use
Functions ¶
func CopyConfig ¶ added in v1.55.0
CopyConfig copies the global config (if any) from srcCtx into dstCtx returning the new context.
func GetUseFilter ¶ added in v1.57.1
GetUseFilter obtains the "use filter" flag from context The flag tells filter-aware backends (Drive) to constrain List using filter
func GlobPathToRegexp ¶ added in v1.70.1
GlobPathToRegexp converts an rsync style glob path to a regexp
func GlobStringToRegexp ¶ added in v1.70.1
GlobStringToRegexp converts an rsync style glob string to a regexp
Without adding of anchors but with ignoring of case, i.e. called `GlobStringToRegexp(glob, false, true)`, it takes a lenient approach where the glob "sum" would match "CheckSum", more similar to text search functions than strict glob filtering.
With adding of anchors and not ignoring case, i.e. called `GlobStringToRegexp(glob, true, false)`, it uses a strict glob interpretation where the previous example would have to be changed to "*Sum" to match "CheckSum".
func ReplaceConfig ¶ added in v1.55.0
ReplaceConfig replaces the filter config in the ctx with the one passed in and returns a new context with that added to it.
Types ¶
type Filter ¶
type Filter struct {
Opt Options
ModTimeFrom time.Time
ModTimeTo time.Time
// contains filtered or unexported fields
}
Filter describes any filtering in operation
func AddConfig ¶ added in v1.55.0
AddConfig returns a mutable config structure based on a shallow copy of that found in ctx and returns a new context with that added to it.
func NewFilter ¶
NewFilter parses the command line options and creates a Filter object. If opt is nil, then DefaultOpt will be used
func (*Filter) AddRule ¶
AddRule adds a filter rule with include/exclude indicated by the prefix
These are
- glob
- glob !
'+' includes the glob, '-' excludes it and '!' resets the filter list
Line comments may be introduced with '#' or ';'
func (*Filter) DirContainsExcludeFile ¶
func (f *Filter) DirContainsExcludeFile(ctx context.Context, fremote fs.Fs, remote string) (bool, error)
DirContainsExcludeFile checks if exclude file is present in a directory. If fs is nil, it works properly if ExcludeFile is an empty string (for testing).
func (*Filter) DumpFilters ¶
DumpFilters dumps the filters in textual form, 1 per line
func (*Filter) Files ¶
Files returns all the files from the `--files-from` list
It may be nil if the list is empty
func (*Filter) HaveFilesFrom ¶
HaveFilesFrom returns true if --files-from has been supplied
func (*Filter) Include ¶
Include returns whether this object should be included into the sync or not and logs the reason for exclusion if not included
func (*Filter) IncludeDirectory ¶
IncludeDirectory returns a function which checks whether this directory should be included in the sync or not.
func (*Filter) IncludeObject ¶
IncludeObject returns whether this object should be included into the sync or not. This is a convenience function to avoid calling o.ModTime(), which is an expensive operation.
func (*Filter) IncludeRemote ¶ added in v1.56.0
IncludeRemote returns whether this remote passes the filter rules.
func (*Filter) ListContainsExcludeFile ¶
func (f *Filter) ListContainsExcludeFile(entries fs.DirEntries) bool
ListContainsExcludeFile checks if exclude file is present in the list.
func (*Filter) MakeListR ¶
func (f *Filter) MakeListR(ctx context.Context, NewObject func(ctx context.Context, remote string) (fs.Object, error)) fs.ListRFn
MakeListR makes function to return all the files set using --files-from
func (*Filter) UsesDirectoryFilters ¶ added in v1.6.1
UsesDirectoryFilters returns true if the filter uses directory filters and false if it doesn't.
This is used in deciding whether to walk directories or use ListR
type Options ¶ added in v1.70.1
type Options struct {
DeleteExcluded bool `config:"delete_excluded"`
RulesOpt // embedded so we don't change the JSON API
ExcludeFile []string `config:"exclude_if_present"`
FilesFrom []string `config:"files_from"`
FilesFromRaw []string `config:"files_from_raw"`
MetaRules RulesOpt `config:"metadata"`
MinAge fs.Duration `config:"min_age"`
MaxAge fs.Duration `config:"max_age"`
MinSize fs.SizeSuffix `config:"min_size"`
MaxSize fs.SizeSuffix `config:"max_size"`
IgnoreCase bool `config:"ignore_case"`
HashFilter string `config:"hash_filter"`
}
Options configures the filter
type RulesOpt ¶ added in v1.61.1
type RulesOpt struct {
FilterRule []string `config:"filter"`
FilterFrom []string `config:"filter_from"`
ExcludeRule []string `config:"exclude"`
ExcludeFrom []string `config:"exclude_from"`
IncludeRule []string `config:"include"`
IncludeFrom []string `config:"include_from"`
}
RulesOpt is configuration for a rule set
Directories
¶
| Path | Synopsis |
|---|---|
|
Package filterflags implements command line flags to set up a filter
|
Package filterflags implements command line flags to set up a filter |