forked from TrueCloudLab/restic
Add support for $RESTIC_CACHE_DIR
Add support for restic-specific $RESTIC_CACHE_DIR environment variable to override the cache directory like --cache-dir would have.
This commit is contained in:
parent
604b18aa74
commit
0e897ef7b8
2 changed files with 10 additions and 5 deletions
|
@ -376,9 +376,10 @@ OS-specific cache folder:
|
||||||
* macOS: ``~/Library/Caches/restic``
|
* macOS: ``~/Library/Caches/restic``
|
||||||
* Windows: ``%LOCALAPPDATA%/restic``
|
* Windows: ``%LOCALAPPDATA%/restic``
|
||||||
|
|
||||||
The command line parameter ``--cache-dir`` can each be used to override the
|
The command line parameter ``--cache-dir`` or the environment variable
|
||||||
default cache location. The parameter ``--no-cache`` disables the cache
|
``$RESTIC_CACHE_DIR`` can be used to override the default cache location. The
|
||||||
entirely. In this case, all data is loaded from the repo.
|
parameter ``--no-cache`` disables the cache entirely. In this case, all data
|
||||||
|
is loaded from the repo.
|
||||||
|
|
||||||
The cache is ephemeral: When a file cannot be read from the cache, it is loaded
|
The cache is ephemeral: When a file cannot be read from the cache, it is loaded
|
||||||
from the repository.
|
from the repository.
|
||||||
|
|
8
internal/cache/dir.go
vendored
8
internal/cache/dir.go
vendored
|
@ -12,17 +12,21 @@ import (
|
||||||
|
|
||||||
// xdgCacheDir returns the cache directory according to XDG basedir spec, see
|
// xdgCacheDir returns the cache directory according to XDG basedir spec, see
|
||||||
// http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html
|
// http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html
|
||||||
|
// unless RESTIC_CACHE_DIR is defined
|
||||||
func xdgCacheDir() (string, error) {
|
func xdgCacheDir() (string, error) {
|
||||||
|
cachedir := os.Getenv("RESTIC_CACHE_DIR")
|
||||||
xdgcache := os.Getenv("XDG_CACHE_HOME")
|
xdgcache := os.Getenv("XDG_CACHE_HOME")
|
||||||
home := os.Getenv("HOME")
|
home := os.Getenv("HOME")
|
||||||
|
|
||||||
if xdgcache != "" {
|
if cachedir != "" {
|
||||||
|
return cachedir, nil
|
||||||
|
} else if xdgcache != "" {
|
||||||
return filepath.Join(xdgcache, "restic"), nil
|
return filepath.Join(xdgcache, "restic"), nil
|
||||||
} else if home != "" {
|
} else if home != "" {
|
||||||
return filepath.Join(home, ".cache", "restic"), nil
|
return filepath.Join(home, ".cache", "restic"), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
return "", errors.New("unable to locate cache directory (XDG_CACHE_HOME and HOME unset)")
|
return "", errors.New("unable to locate cache directory (RESTIC_CACHE_DIR, XDG_CACHE_HOME and HOME unset)")
|
||||||
}
|
}
|
||||||
|
|
||||||
// windowsCacheDir returns the cache directory for Windows.
|
// windowsCacheDir returns the cache directory for Windows.
|
||||||
|
|
Loading…
Reference in a new issue