2016-06-02 18:09:14 -07:00
package command
2014-05-12 22:57:23 -07:00
2020-04-11 21:12:41 -07:00
import (
"os"
2020-10-10 20:09:43 -07:00
"time"
2020-04-11 21:12:41 -07:00
)
2014-05-12 22:57:23 -07:00
type MountOptions struct {
2020-02-26 16:46:01 -08:00
filer * string
filerMountRootPath * string
dir * string
2020-06-12 11:46:58 -07:00
dirAutoCreate * bool
2020-02-26 16:46:01 -08:00
collection * string
replication * string
ttlSec * int
chunkSizeLimitMB * int
2020-04-11 21:12:41 -07:00
cacheDir * string
cacheSizeMB * int64
2020-02-26 16:46:01 -08:00
dataCenter * string
allowOthers * bool
umaskString * string
2020-03-21 19:14:25 -07:00
nonempty * bool
2020-02-26 16:46:01 -08:00
outsideContainerClusterMode * bool
2020-09-03 00:07:22 -07:00
uidMap * string
gidMap * string
2014-05-12 22:57:23 -07:00
}
var (
2020-10-10 20:09:43 -07:00
mountOptions MountOptions
mountCpuProfile * string
mountMemProfile * string
mountReadRetryTime * time . Duration
2014-05-12 22:57:23 -07:00
)
func init ( ) {
cmdMount . Run = runMount // break init cycle
2015-04-16 21:11:25 +00:00
mountOptions . filer = cmdMount . Flag . String ( "filer" , "localhost:8888" , "weed filer location" )
2018-07-14 21:09:21 -07:00
mountOptions . filerMountRootPath = cmdMount . Flag . String ( "filer.path" , "/" , "mount this remote path from filer server" )
2015-05-25 23:53:45 -07:00
mountOptions . dir = cmdMount . Flag . String ( "dir" , "." , "mount weed filer to this directory" )
2020-06-12 11:46:58 -07:00
mountOptions . dirAutoCreate = cmdMount . Flag . Bool ( "dirAutoCreate" , false , "auto create the directory to mount to" )
2018-05-28 13:24:48 -07:00
mountOptions . collection = cmdMount . Flag . String ( "collection" , "" , "collection to create the files" )
2018-09-20 09:00:15 -07:00
mountOptions . replication = cmdMount . Flag . String ( "replication" , "" , "replication(e.g. 000, 001) to create to files. If empty, let filer decide." )
2018-06-11 23:13:33 -07:00
mountOptions . ttlSec = cmdMount . Flag . Int ( "ttl" , 0 , "file ttl in seconds" )
2020-04-11 21:22:52 -07:00
mountOptions . chunkSizeLimitMB = cmdMount . Flag . Int ( "chunkSizeLimitMB" , 16 , "local write buffer size, also chunk large files" )
2020-06-19 12:55:09 -07:00
mountOptions . cacheDir = cmdMount . Flag . String ( "cacheDir" , os . TempDir ( ) , "local cache directory for file chunks and meta data" )
mountOptions . cacheSizeMB = cmdMount . Flag . Int64 ( "cacheCapacityMB" , 1000 , "local file chunk cache capacity in MB (0 will disable cache)" )
2018-07-14 13:36:28 -07:00
mountOptions . dataCenter = cmdMount . Flag . String ( "dataCenter" , "" , "prefer to write to the data center" )
2019-03-10 19:45:40 -07:00
mountOptions . allowOthers = cmdMount . Flag . Bool ( "allowOthers" , true , "allows other users to access the file system" )
2019-07-24 00:03:05 -07:00
mountOptions . umaskString = cmdMount . Flag . String ( "umask" , "022" , "octal umask, e.g., 022, 0111" )
2020-03-21 19:14:25 -07:00
mountOptions . nonempty = cmdMount . Flag . Bool ( "nonempty" , false , "allows the mounting over a non-empty directory" )
2020-10-11 20:42:15 -07:00
mountOptions . outsideContainerClusterMode = cmdMount . Flag . Bool ( "outsideContainerClusterMode" , false , "allows other users to access volume servers with publicUrl" )
2020-09-03 00:07:22 -07:00
mountOptions . uidMap = cmdMount . Flag . String ( "map.uid" , "" , "map local uid to uid on filer, comma-separated <local_uid>:<filer_uid>" )
mountOptions . gidMap = cmdMount . Flag . String ( "map.gid" , "" , "map local gid to gid on filer, comma-separated <local_gid>:<filer_gid>" )
2020-10-10 20:09:43 -07:00
mountCpuProfile = cmdMount . Flag . String ( "cpuprofile" , "" , "cpu profile output file" )
mountMemProfile = cmdMount . Flag . String ( "memprofile" , "" , "memory profile output file" )
mountReadRetryTime = cmdMount . Flag . Duration ( "readRetryTime" , 6 * time . Second , "maximum read retry wait time" )
2014-05-12 22:57:23 -07:00
}
var cmdMount = & Command {
UsageLine : "mount -filer=localhost:8888 -dir=/some/dir" ,
Short : "mount weed filer to a directory as file system in userspace(FUSE)" ,
2015-04-16 21:11:25 +00:00
Long : ` mount weed filer to userspace .
2014-05-12 22:57:23 -07:00
Pre - requisites :
2015-04-16 21:11:25 +00:00
1 ) have SeaweedFS master and volume servers running
2014-05-12 22:57:23 -07:00
2 ) have a "weed filer" running
These 2 requirements can be achieved with one command "weed server -filer=true"
2018-12-29 10:31:36 -08:00
This uses github . com / seaweedfs / fuse , which enables writing FUSE file systems on
2014-05-13 11:25:48 -07:00
Linux , and OS X .
2014-05-12 22:57:23 -07:00
On OS X , it requires OSXFUSE ( http : //osxfuse.github.com/).
` ,
}