Auto create data/ subdirs on demand

Closes #40
This commit is contained in:
Alexander Neumann 2018-01-05 17:16:06 +01:00 committed by Zlatko Čalušić
parent b786c5d1cc
commit f02ee7386a
2 changed files with 11 additions and 4 deletions

View file

@ -14,10 +14,6 @@ Rest Server requires Go 1.7 or higher to build. The only tested compiler is the
The required version of restic backup client to use with Rest Server is [v0.7.1](https://github.com/restic/restic/releases/tag/v0.7.1) or higher.
If you have a local repository created with an older version of restic client, which you would now like to serve via Rest Server, you need to first create missing subdirectories in the data directory. Run this simple one-liner in the repository directory:
```for i in {0..255}; do mkdir -p $(printf "data/%02x" $i); done```
## Installation
### From source

View file

@ -367,6 +367,17 @@ func SaveBlob(w http.ResponseWriter, r *http.Request) {
}
tf, err := os.OpenFile(path, os.O_CREATE|os.O_WRONLY|os.O_EXCL, 0600)
if os.IsNotExist(err) {
// the error is caused by a missing directory, create it and retry
mkdirErr := os.MkdirAll(filepath.Dir(path), 0700)
if mkdirErr != nil {
log.Print(mkdirErr)
} else {
// try again
tf, err = os.OpenFile(path, os.O_CREATE|os.O_WRONLY|os.O_EXCL, 0600)
}
}
if err != nil {
if Config.Debug {
log.Print(err)