sshfs 试用
阅读原文时间:2023年07月15日阅读:2

sshfs 是基于fuse 开发的可以像使用本地系统一样,通过ssh 协议访问远端服务器文件,有好多方便的用途

  • 数据同步

  • 数据加密访问

  • 做为共享数据卷(基于给容器使用)

    yum install -y fuse-sshfs

    sshfs --help
    usage: sshfs [user@]host:[dir] mountpoint [options]

    general options:
    -o opt,[opt…] mount options
    -h --help print help
    -V --version print version

    SSHFS options:
    -p PORT equivalent to '-o port=PORT'
    -C equivalent to '-o compression=yes'
    -F ssh_configfile specifies alternative ssh configuration file
    -1 equivalent to '-o ssh_protocol=1'
    -o reconnect reconnect to server
    -o delay_connect delay connection to server
    -o sshfs_sync synchronous writes
    -o no_readahead synchronous reads (no speculative readahead)
    -o sync_readdir synchronous readdir
    -o sshfs_debug print some debugging information
    -o cache=BOOL enable caching {yes,no} (default: yes)
    -o cache_max_size=N sets the maximum size of the cache (default: 10000)
    -o cache_timeout=N sets timeout for caches in seconds (default: 20)
    -o cache_X_timeout=N sets timeout for {stat,dir,link} cache
    -o cache_clean_interval=N
    sets the interval for automatic cleaning of the
    cache (default: 60)
    -o cache_min_clean_interval=N
    sets the interval for forced cleaning of the
    cache if full (default: 5)
    -o workaround=LIST colon separated list of workarounds
    none no workarounds enabled
    [no]rename fix renaming to existing file (default: off)
    [no]truncate fix truncate for old servers (default: off)
    [no]buflimit fix buffer fillup bug in server (default: on)
    [no]fstat fix fstat for old servers (default: off)
    -o idmap=TYPE user/group ID mapping (default: none)
    none no translation of the ID space
    user only translate UID/GID of connecting user
    file translate UIDs/GIDs contained in uidfile/gidfile
    -o uidfile=FILE file containing username:remote_uid mappings
    -o gidfile=FILE file containing groupname:remote_gid mappings
    -o nomap=TYPE with idmap=file, how to handle missing mappings
    ignore don't do any re-mapping
    error return an error (default)
    -o ssh_command=CMD execute CMD instead of 'ssh'
    -o ssh_protocol=N ssh protocol to use (default: 2)
    -o sftp_server=SERV path to sftp server or subsystem (default: sftp)
    -o directport=PORT directly connect to PORT bypassing ssh
    -o slave communicate over stdin and stdout bypassing network
    -o disable_hardlink link(2) will return with errno set to ENOSYS
    -o transform_symlinks transform absolute symlinks to relative
    -o follow_symlinks follow symlinks on the server
    -o no_check_root don't check for existence of 'dir' on server
    -o password_stdin read password from stdin (only for pam_mount!)
    -o SSHOPT=VAL ssh options (see man ssh_config)

    FUSE options:
    -d -o debug enable debug output (implies -f)
    -f foreground operation
    -s disable multi-threaded operation

    -o allow_other allow access to other users
    -o allow_root allow access to root
    -o auto_unmount auto unmount on process termination
    -o nonempty allow mounts over non-empty file/dir
    -o default_permissions enable permission checking by kernel
    -o fsname=NAME set filesystem name
    -o subtype=NAME set filesystem type
    -o large_read issue large read requests (2.4 only)
    -o max_read=N set maximum size of read requests
    
    -o hard_remove immediate removal (don't hide files)
    -o use_ino let filesystem set inode numbers
    -o readdir_ino try to fill in d_ino in readdir
    -o direct_io use direct I/O
    -o kernel_cache cache files in kernel
    -o [no]auto_cache enable caching based on modification times (off)
    -o umask=M set file permissions (octal)
    -o uid=N set file owner
    -o gid=N set file group
    -o entry_timeout=T cache timeout for names (1.0s)
    -o negative_timeout=T cache timeout for deleted names (0.0s)
    -o attr_timeout=T cache timeout for attributes (1.0s)
    -o ac_attr_timeout=T auto cache timeout for attributes (attr_timeout)
    -o noforget never forget cached inodes
    -o remember=T remember cached inodes for T seconds (0s)
    -o intr allow requests to be interrupted
    -o intr_signal=NUM signal to send on interrupt (10)
    -o modules=M1[:M2...] names of modules to push onto filesystem stack
    
    -o max_write=N set maximum size of write requests
    -o max_readahead=N set maximum readahead
    -o max_background=N set number of maximum background requests
    -o congestion_threshold=N set kernel's congestion threshold
    -o async_read perform reads asynchronously (default)
    -o sync_read perform reads synchronously
    -o atomic_o_trunc enable atomic open+truncate support
    -o big_writes enable larger than 4kB writes
    -o no_remote_lock disable remote file locking
    -o no_remote_flock disable remote file locking (BSD)
    -o no_remote_posix_lock disable remove file locking (POSIX)
    -o [no_]splice_write use splice to write to the fuse device
    -o [no_]splice_move move data while splicing to the fuse device
    -o [no_]splice_read use splice to read from the fuse device

    Module options:

    [iconv]
    -o from_code=CHARSET original encoding of file names (default: UTF-8)
    -o to_code=CHARSET new encoding of the file names (default: UTF-8)

    [subdir]
    -o subdir=DIR prepend this directory to all paths (mandatory)
    -o [no]rellinks transform absolute symlinks to relative

  • 创建挂载点 
    mkdir -p /opt/ssh

  • 挂载远端服务器 
    sshfs root@remoteserver:/opt/ /opt/ssh/ 按照提示操作即可

  • 查看挂载目录 

类似基于fuse 开发的文件系统还是比较多的,对于我们实际中的开发还是挺方便的

https://github.com/libfuse/sshfs