diff options
Diffstat (limited to 'backup/backup.go')
-rw-r--r-- | backup/backup.go | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/backup/backup.go b/backup/backup.go index 5e4ffc1..c2106ba 100644 --- a/backup/backup.go +++ b/backup/backup.go @@ -3,6 +3,7 @@ package backup import ( "code.laria.me/petrific/cache" "code.laria.me/petrific/fs" + "code.laria.me/petrific/logging" "code.laria.me/petrific/objects" "code.laria.me/petrific/storage" "io" @@ -28,10 +29,12 @@ type writeFileTask struct { result *chan writeFileTaskResult } -func (task writeFileTask) process(store storage.Storage) { +func (task writeFileTask) process(proc writeDirProcess) { var result writeFileTaskResult result.file = task.file + proc.log.Info().Printf("start writing file %s", task.file.Name()) + rwc, err := task.file.Open() if err != nil { result.err = err @@ -40,7 +43,9 @@ func (task writeFileTask) process(store storage.Storage) { } defer rwc.Close() - result.file_id, result.err = WriteFile(store, rwc) + result.file_id, result.err = WriteFile(proc.store, rwc) + + proc.log.Info().Printf("finished writing file %s", task.file.Name()) *(task.result) <- result } @@ -48,11 +53,12 @@ func (task writeFileTask) process(store storage.Storage) { type writeDirProcess struct { queue chan writeFileTask store storage.Storage + log *logging.Log } func (proc writeDirProcess) worker() { for task := range proc.queue { - task.process(proc.store) + task.process(proc) } } @@ -71,10 +77,12 @@ func WriteDir( abspath string, d fs.Dir, pcache cache.Cache, + log *logging.Log, ) (objects.ObjectId, error) { proc := writeDirProcess{ make(chan writeFileTask), store, + log, } defer proc.stop() @@ -90,6 +98,8 @@ func (proc writeDirProcess) writeDir( d fs.Dir, pcache cache.Cache, ) (objects.ObjectId, error) { + proc.log.Info().Printf("start writeDir for %s", abspath) + _children, err := d.Readdir() if err != nil { return objects.ObjectId{}, err @@ -104,11 +114,15 @@ func (proc writeDirProcess) writeDir( infos := make(objects.Tree) for _, c := range children { + proc.log.Info().Printf("processing %s (%s) in %s", c.Name(), c.Type(), abspath) + var info objects.TreeEntry = nil switch c.Type() { case fs.FFile: mtime, file_id, ok := pcache.PathUpdated(abspath + "/" + c.Name()) + proc.log.Debug().Printf("cache info for %s: %s, %s, %t", abspath+"/"+c.Name(), mtime, file_id, ok) + if !ok || mtime.Before(c.ModTime()) { // According to cache the file was changed @@ -159,6 +173,7 @@ func (proc writeDirProcess) writeDir( return objects.ObjectId{}, err } + proc.log.Info().Printf("finishing writeDir for %s", abspath) return storage.SetObject(proc.store, objects.ToRawObject(infos)) } |