mirror of
https://github.com/rclone/rclone.git
synced 2024-12-22 23:22:08 +01:00
vfs: add --vfs-refresh flag to read all the directories on start
Refreshes the directory listing recursively at VFS start time.
This commit is contained in:
parent
a752563842
commit
3337fe31c7
14
vfs/vfs.go
14
vfs/vfs.go
@ -232,12 +232,26 @@ func New(f fs.Fs, opt *vfscommon.Options) *VFS {
|
|||||||
// removed when the vfs is finalized
|
// removed when the vfs is finalized
|
||||||
cache.PinUntilFinalized(f, vfs)
|
cache.PinUntilFinalized(f, vfs)
|
||||||
|
|
||||||
|
// Refresh the dircache if required
|
||||||
|
if vfs.Opt.Refresh {
|
||||||
|
go vfs.refresh()
|
||||||
|
}
|
||||||
|
|
||||||
// This can take some time so do it after the Pin
|
// This can take some time so do it after the Pin
|
||||||
vfs.SetCacheMode(vfs.Opt.CacheMode)
|
vfs.SetCacheMode(vfs.Opt.CacheMode)
|
||||||
|
|
||||||
return vfs
|
return vfs
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// refresh the directory cache for all directories
|
||||||
|
func (vfs *VFS) refresh() {
|
||||||
|
fs.Debugf(vfs.f, "Refreshing VFS directory cache")
|
||||||
|
err := vfs.root.readDirTree()
|
||||||
|
if err != nil {
|
||||||
|
fs.Errorf(vfs.f, "Error refreshing VFS directory cache: %v", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Stats returns info about the VFS
|
// Stats returns info about the VFS
|
||||||
func (vfs *VFS) Stats() (out rc.Params) {
|
func (vfs *VFS) Stats() (out rc.Params) {
|
||||||
out = make(rc.Params)
|
out = make(rc.Params)
|
||||||
|
@ -15,6 +15,7 @@ type Options struct {
|
|||||||
ReadOnly bool // if set VFS is read only
|
ReadOnly bool // if set VFS is read only
|
||||||
NoModTime bool // don't read mod times for files
|
NoModTime bool // don't read mod times for files
|
||||||
DirCacheTime time.Duration // how long to consider directory listing cache valid
|
DirCacheTime time.Duration // how long to consider directory listing cache valid
|
||||||
|
Refresh bool // refreshes the directory listing recursively on start
|
||||||
PollInterval time.Duration
|
PollInterval time.Duration
|
||||||
Umask int
|
Umask int
|
||||||
UID uint32
|
UID uint32
|
||||||
@ -44,6 +45,7 @@ var DefaultOpt = Options{
|
|||||||
NoChecksum: false,
|
NoChecksum: false,
|
||||||
NoSeek: false,
|
NoSeek: false,
|
||||||
DirCacheTime: 5 * 60 * time.Second,
|
DirCacheTime: 5 * 60 * time.Second,
|
||||||
|
Refresh: false,
|
||||||
PollInterval: time.Minute,
|
PollInterval: time.Minute,
|
||||||
ReadOnly: false,
|
ReadOnly: false,
|
||||||
Umask: 0,
|
Umask: 0,
|
||||||
|
@ -22,6 +22,7 @@ func AddFlags(flagSet *pflag.FlagSet) {
|
|||||||
flags.BoolVarP(flagSet, &Opt.NoChecksum, "no-checksum", "", Opt.NoChecksum, "Don't compare checksums on up/download", "VFS")
|
flags.BoolVarP(flagSet, &Opt.NoChecksum, "no-checksum", "", Opt.NoChecksum, "Don't compare checksums on up/download", "VFS")
|
||||||
flags.BoolVarP(flagSet, &Opt.NoSeek, "no-seek", "", Opt.NoSeek, "Don't allow seeking in files", "VFS")
|
flags.BoolVarP(flagSet, &Opt.NoSeek, "no-seek", "", Opt.NoSeek, "Don't allow seeking in files", "VFS")
|
||||||
flags.DurationVarP(flagSet, &Opt.DirCacheTime, "dir-cache-time", "", Opt.DirCacheTime, "Time to cache directory entries for", "VFS")
|
flags.DurationVarP(flagSet, &Opt.DirCacheTime, "dir-cache-time", "", Opt.DirCacheTime, "Time to cache directory entries for", "VFS")
|
||||||
|
flags.BoolVarP(flagSet, &Opt.Refresh, "vfs-refresh", "", Opt.Refresh, "Refreshes the directory cache recursively on start", "VFS")
|
||||||
flags.DurationVarP(flagSet, &Opt.PollInterval, "poll-interval", "", Opt.PollInterval, "Time to wait between polling for changes, must be smaller than dir-cache-time and only on supported remotes (set 0 to disable)", "VFS")
|
flags.DurationVarP(flagSet, &Opt.PollInterval, "poll-interval", "", Opt.PollInterval, "Time to wait between polling for changes, must be smaller than dir-cache-time and only on supported remotes (set 0 to disable)", "VFS")
|
||||||
flags.BoolVarP(flagSet, &Opt.ReadOnly, "read-only", "", Opt.ReadOnly, "Only allow read-only access", "VFS")
|
flags.BoolVarP(flagSet, &Opt.ReadOnly, "read-only", "", Opt.ReadOnly, "Only allow read-only access", "VFS")
|
||||||
flags.FVarP(flagSet, &Opt.CacheMode, "vfs-cache-mode", "", "Cache mode off|minimal|writes|full", "VFS")
|
flags.FVarP(flagSet, &Opt.CacheMode, "vfs-cache-mode", "", "Cache mode off|minimal|writes|full", "VFS")
|
||||||
|
Loading…
Reference in New Issue
Block a user