mountlib

package
v1.68.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 8, 2024 License: MIT Imports: 28 Imported by: 21

Documentation

Overview

Package mountlib provides the mount command.

Index

Constants

View Source
const (
	MaxLeafSize = 1024 // don't pass file names longer than this
)

Global constants

Variables

View Source
var CanCheckMountReady = true

CanCheckMountReady is set if CheckMountReady is functional

View Source
var OptionsInfo = fs.Options{{
	Name:    "debug_fuse",
	Default: false,
	Help:    "Debug the FUSE internals - needs -v",
	Groups:  "Mount",
}, {
	Name:    "attr_timeout",
	Default: fs.Duration(1 * time.Second),
	Help:    "Time for which file/directory attributes are cached",
	Groups:  "Mount",
}, {
	Name:     "option",
	Default:  []string{},
	Help:     "Option for libfuse/WinFsp (repeat if required)",
	Groups:   "Mount",
	ShortOpt: "o",
}, {
	Name:    "fuse_flag",
	Default: []string{},
	Help:    "Flags or arguments to be passed direct to libfuse/WinFsp (repeat if required)",
	Groups:  "Mount",
}, {
	Name:    "daemon",
	Default: false,
	Help:    "Run mount in background and exit parent process (as background output is suppressed, use --log-file with --log-format=pid,... to monitor) (not supported on Windows)",
	Groups:  "Mount",
}, {
	Name: "daemon_timeout",
	Default: func() fs.Duration {
		if runtime.GOOS == "darwin" {

			return fs.Duration(10 * time.Minute)
		}
		return 0
	}(),
	Help:   "Time limit for rclone to respond to kernel (not supported on Windows)",
	Groups: "Mount",
}, {
	Name:    "default_permissions",
	Default: false,
	Help:    "Makes kernel enforce access control based on the file mode (not supported on Windows)",
	Groups:  "Mount",
}, {
	Name:    "allow_non_empty",
	Default: false,
	Help:    "Allow mounting over a non-empty directory (not supported on Windows)",
	Groups:  "Mount",
}, {
	Name:    "allow_root",
	Default: false,
	Help:    "Allow access to root user (not supported on Windows)",
	Groups:  "Mount",
}, {
	Name:    "allow_other",
	Default: false,
	Help:    "Allow access to other users (not supported on Windows)",
	Groups:  "Mount",
}, {
	Name:    "async_read",
	Default: true,
	Help:    "Use asynchronous reads (not supported on Windows)",
	Groups:  "Mount",
}, {
	Name:    "max_read_ahead",
	Default: fs.SizeSuffix(128 * 1024),
	Help:    "The number of bytes that can be prefetched for sequential reads (not supported on Windows)",
	Groups:  "Mount",
}, {
	Name:    "write_back_cache",
	Default: false,
	Help:    "Makes kernel buffer writes before sending them to rclone (without this, writethrough caching is used) (not supported on Windows)",
	Groups:  "Mount",
}, {
	Name:    "devname",
	Default: "",
	Help:    "Set the device name - default is remote:path",
	Groups:  "Mount",
}, {
	Name:    "mount_case_insensitive",
	Default: fs.Tristate{},
	Help:    "Tell the OS the mount is case insensitive (true) or sensitive (false) regardless of the backend (auto)",
	Groups:  "Mount",
}, {
	Name:    "direct_io",
	Default: false,
	Help:    "Use Direct IO, disables caching of data",
	Groups:  "Mount",
}, {
	Name:    "volname",
	Default: "",
	Help:    "Set the volume name (supported on Windows and OSX only)",
	Groups:  "Mount",
}, {
	Name:    "noappledouble",
	Default: true,
	Help:    "Ignore Apple Double (._) and .DS_Store files (supported on OSX only)",
	Groups:  "Mount",
}, {
	Name:    "noapplexattr",
	Default: false,
	Help:    "Ignore all \"com.apple.*\" extended attributes (supported on OSX only)",
	Groups:  "Mount",
}, {
	Name:    "network_mode",
	Default: false,
	Help:    "Mount as remote network drive, instead of fixed disk drive (supported on Windows only)",
	Groups:  "Mount",
}, {
	Name: "daemon_wait",
	Default: func() fs.Duration {
		switch runtime.GOOS {
		case "linux":

			return fs.Duration(60 * time.Second)
		case "darwin", "openbsd", "freebsd", "netbsd":

			return fs.Duration(5 * time.Second)
		}
		return 0
	}(),
	Help:   "Time to wait for ready mount from daemon (maximum time on Linux, constant sleep time on OSX/BSD) (not supported on Windows)",
	Groups: "Mount",
}}

OptionsInfo describes the Options in use

Functions

func AddFlags added in v1.53.0

func AddFlags(flagSet *pflag.FlagSet)

AddFlags adds the non filing system specific flags to the command

func AddRc added in v1.52.0

func AddRc(mountUtilName string, mountFunction MountFn)

AddRc adds mount and unmount functionality to rc

func CheckAllowNonEmpty added in v1.62.0

func CheckAllowNonEmpty(mountpoint string, opt *Options) error

CheckAllowNonEmpty checks --allow-non-empty flag, and if not used verifies that mountpoint is empty.

func CheckMountEmpty added in v1.56.0

func CheckMountEmpty(mountpoint string) error

CheckMountEmpty checks if folder is not already a mountpoint. On Linux we use the OS-specific /proc/self/mountinfo API so the check won't access the path. Directories marked as "mounted" by autofs are considered not mounted.

func CheckMountReady added in v1.57.0

func CheckMountReady(mountpoint string) error

CheckMountReady checks whether mountpoint is mounted by rclone. Only mounts with type "rclone" or "fuse.rclone" count.

func CheckOverlap added in v1.62.0

func CheckOverlap(f fs.Fs, mountpoint string) error

CheckOverlap checks that root doesn't overlap with a mountpoint

func ClipBlocks

func ClipBlocks(b *uint64)

ClipBlocks clips the blocks pointed to the OS max

func NewMountCommand

func NewMountCommand(commandName string, hidden bool, mount MountFn) *cobra.Command

NewMountCommand makes a mount command with the given name and Mount function

func NotifyOnSigHup added in v1.56.0

func NotifyOnSigHup(sighupChan chan os.Signal)

NotifyOnSigHup makes SIGHUP notify given channel on supported systems

func WaitMountReady added in v1.57.0

func WaitMountReady(mountpoint string, timeout time.Duration, daemon *os.Process) (err error)

WaitMountReady waits until mountpoint is mounted by rclone.

If the mount daemon dies prematurely it will notice too.

Types

type MountFn added in v1.52.0

type MountFn func(VFS *vfs.VFS, mountpoint string, opt *Options) (<-chan error, func() error, error)

MountFn is called to mount the file system

func ResolveMountMethod added in v1.56.0

func ResolveMountMethod(mountType string) (string, MountFn)

ResolveMountMethod returns mount function by name

type MountInfo added in v1.53.0

type MountInfo struct {
	Fs         string    `json:"Fs"`
	MountPoint string    `json:"MountPoint"`
	MountedOn  time.Time `json:"MountedOn"`
}

MountInfo is a transitional structure for json marshaling

type MountPoint added in v1.56.0

type MountPoint struct {
	MountPoint string
	MountedOn  time.Time
	MountOpt   Options
	VFSOpt     vfscommon.Options
	Fs         fs.Fs
	VFS        *vfs.VFS
	MountFn    MountFn
	UnmountFn  UnmountFn
	ErrChan    <-chan error
}

MountPoint represents a mount with options and runtime state

func NewMountPoint added in v1.58.1

func NewMountPoint(mount MountFn, mountPoint string, f fs.Fs, mountOpt *Options, vfsOpt *vfscommon.Options) *MountPoint

NewMountPoint makes a new mounting structure

func (*MountPoint) Mount added in v1.56.0

func (m *MountPoint) Mount() (mountDaemon *os.Process, err error)

Mount the remote at mountpoint

func (*MountPoint) SetDeviceName added in v1.58.0

func (m *MountPoint) SetDeviceName(dev string)

SetDeviceName with sensible default

func (*MountPoint) SetVolumeName added in v1.56.0

func (m *MountPoint) SetVolumeName(vol string)

SetVolumeName with sensible default

func (*MountPoint) Unmount added in v1.56.0

func (m *MountPoint) Unmount() (err error)

Unmount the specified mountpoint

func (*MountPoint) Wait added in v1.56.0

func (m *MountPoint) Wait() error

Wait for mount end

type Options added in v1.53.0

type Options struct {
	DebugFUSE          bool          `config:"debug_fuse"`
	AllowNonEmpty      bool          `config:"allow_non_empty"`
	AllowRoot          bool          `config:"allow_root"`
	AllowOther         bool          `config:"allow_other"`
	DefaultPermissions bool          `config:"default_permissions"`
	WritebackCache     bool          `config:"write_back_cache"`
	Daemon             bool          `config:"daemon"`
	DaemonWait         fs.Duration   `config:"daemon_wait"` // time to wait for ready mount from daemon, maximum on Linux or constant on macOS/BSD
	MaxReadAhead       fs.SizeSuffix `config:"max_read_ahead"`
	ExtraOptions       []string      `config:"option"`
	ExtraFlags         []string      `config:"fuse_flag"`
	AttrTimeout        fs.Duration   `config:"attr_timeout"` // how long the kernel caches attribute for
	DeviceName         string        `config:"devname"`
	VolumeName         string        `config:"volname"`
	NoAppleDouble      bool          `config:"noappledouble"`
	NoAppleXattr       bool          `config:"noapplexattr"`
	DaemonTimeout      fs.Duration   `config:"daemon_timeout"` // OSXFUSE only
	AsyncRead          bool          `config:"async_read"`
	NetworkMode        bool          `config:"network_mode"` // Windows only
	DirectIO           bool          `config:"direct_io"`    // use Direct IO for file access
	CaseInsensitive    fs.Tristate   `config:"mount_case_insensitive"`
}

Options for creating the mount

var Opt Options

Opt contains options set by command line flags

func (*Options) SetVolumeName added in v1.56.0

func (o *Options) SetVolumeName(vol string)

SetVolumeName removes special characters from volume name if necessary

type UnmountFn added in v1.52.0

type UnmountFn func() error

UnmountFn is called to unmount the file system

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL