diary/Kojima

・jmtpfsとfuse

たまたま jmtpfs -h すると、こんなメッセージが出てきた。

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

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: EUC-JP)

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

jmtpfs options:
    -l    --listDevices         list available mtp devices and then exit
    -device=<busnum>,<devnum>   Device to mount. It not specified the first device found is used

これを見ると、iconvの機能を使って、 from_code、to_codeで異なるCHARSETを指定できそうな気配。

当初はどうやって -o from_code=... を指定するのか分からずに、 jmtpfs -o from_code.. とか、 fuseのモジュールをロードする時のオプション指定かとも思って、 modprobe fuse from_code=... みたいなことをやってみたがどちらもエラーになる。

さて、どうしたものか、、 とGoogleあたりで調べてみると-omodules=iconv,from_code=.. という書式になるらしい。 そう知った上で、改めて先のヘルプメッセージを見ると、確かに from_code=... は Module options: の節に書かれているし、 モジュールについては、-o modules=M1[:M2...] となっている。

なるほど、と思って、

$ jmtpfs ~/Mtp -omodules=iconv,from_code=UTF-8,to_code=EUC-JP

としてやると、~/MtpにNexus 7の内部ストレージがEUC-JPで見えるようになった。

$ ls ~/Mtp/
内部ストレージ/

ファイルシステムレベルで文字コードを変換しているので、 FDcloneのような機能を持たない通常のファイルマネージャでも操作できる。

jmtpfs.png

しばらく試した感じでは、ファイルを異なるディレクトリに移動させるような 処理はPC側のファイルマネージャからはうまく行かないようだけど、 データの転送と削除は問題なさそうなので、これでほぼ必要な機能は使えそうだ。

# Nexus 7側でファイルマネージャを使えばファイルの移動は問題ないので、MTPスタックレベルの問題っぽい気がする。

fuseはあまり真面目に使ったこと無かったので、 その便利さが分かったのが今回の最大の収穫かも(w


添付ファイル: filejmtpfs.png 175件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2021-12-17 (金) 16:35:42