forked from TrueCloudLab/restic
Close exclude files and check errors
This commit is contained in:
parent
efc5d0699a
commit
37aad2e3aa
1 changed files with 43 additions and 25 deletions
|
@ -408,31 +408,7 @@ func runBackup(opts BackupOptions, gopts GlobalOptions, args []string) error {
|
||||||
|
|
||||||
// add patterns from file
|
// add patterns from file
|
||||||
if len(opts.ExcludeFiles) > 0 {
|
if len(opts.ExcludeFiles) > 0 {
|
||||||
for _, filename := range opts.ExcludeFiles {
|
opts.Excludes = append(opts.Excludes, readExcludePatternsFromFiles(opts.ExcludeFiles)...)
|
||||||
file, err := fs.Open(filename)
|
|
||||||
if err != nil {
|
|
||||||
Warnf("error reading exclude patterns: %v", err)
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
scanner := bufio.NewScanner(file)
|
|
||||||
for scanner.Scan() {
|
|
||||||
line := strings.TrimSpace(scanner.Text())
|
|
||||||
|
|
||||||
// ignore empty lines
|
|
||||||
if line == "" {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
// strip comments
|
|
||||||
if strings.HasPrefix(line, "#") {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
line = os.ExpandEnv(line)
|
|
||||||
opts.Excludes = append(opts.Excludes, line)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
selectFilter := func(item string, fi os.FileInfo) bool {
|
selectFilter := func(item string, fi os.FileInfo) bool {
|
||||||
|
@ -499,3 +475,45 @@ func runBackup(opts BackupOptions, gopts GlobalOptions, args []string) error {
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func readExcludePatternsFromFiles(excludeFiles []string) []string {
|
||||||
|
var excludes []string
|
||||||
|
for _, filename := range excludeFiles {
|
||||||
|
err := func() (err error) {
|
||||||
|
file, err := fs.Open(filename)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
defer func() {
|
||||||
|
// return pre-close error if there was one
|
||||||
|
if errClose := file.Close(); err == nil {
|
||||||
|
err = errClose
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
|
scanner := bufio.NewScanner(file)
|
||||||
|
for scanner.Scan() {
|
||||||
|
line := strings.TrimSpace(scanner.Text())
|
||||||
|
|
||||||
|
// ignore empty lines
|
||||||
|
if line == "" {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
// strip comments
|
||||||
|
if strings.HasPrefix(line, "#") {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
line = os.ExpandEnv(line)
|
||||||
|
excludes = append(excludes, line)
|
||||||
|
}
|
||||||
|
return scanner.Err()
|
||||||
|
}()
|
||||||
|
if err != nil {
|
||||||
|
Warnf("error reading exclude patterns: %v:", err)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return excludes
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue