English | 日本語
XeFM はシームレスな SFTP(SSH File Transfer Protocol)対応を備えていて、リモートサーバー上のファイルを、ローカルのディレクトリのようにブラウズ、検索、管理できます。XeFM はサーバーごとに 1 つの SSH 接続を開いて、すべての操作をその上で実行し、標準的なファイル操作をすべてサポートします。
~/.ssh/config の SSH の設定(省略可能ですが推奨)ssh コマンド — OpenSSH クライアントです。macOS と Linux には入っています。Windows では、Windows に組み込まれた OpenSSH クライアントが使えるほか、PATH にあるほかのクライアント(Git for Windows、MSYS2、Cygwin)も使えます。標準的な SSH の URL 形式で SFTP の場所に移動します。
ssh://hostname/path/to/directory
ssh://user@hostname/path/to/directory
ssh://hostname:port/path/to/directory
例:
ssh://myserver/home/user/projects
ssh://admin@192.168.1.100/var/log
ssh://server.example.com:2222/opt/data
方法 1:Jump to Path ダイアログ
jump_to_path)を開きますssh://hostname/path を入力します方法 2:お気に入り
~/.xefm/config.py で、SFTP のパスをお気に入りに追加しますfavorites)を開きます方法 3:コマンドライン
python3 -m xefm --left ssh://server/path --right ~/local/path
接続を簡単にするために、~/.ssh/config を作成または編集します。
Host myserver
HostName server.example.com
User myusername
Port 22
IdentityFile ~/.ssh/id_rsa
Host devbox
HostName 192.168.1.100
User developer
Port 2222
Host prod-*
User admin
IdentityFile ~/.ssh/prod_key
StrictHostKeyChecking yes
利点:
ssh://myserver/path のような短い名前を使えますSSH 鍵を生成する(まだ持っていない場合):
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
鍵をサーバーにコピーする:
ssh-copy-id user@hostname
接続をテストする:
ssh user@hostname
SSH 鍵による認証が動作すれば、XeFM は自動的にそれを使います。
標準的なファイル操作は、すべて SFTP のパスで動作します。
copy_files):ローカルとリモートの間でファイル/ディレクトリをコピーしますmove_files):リモートサーバー上でファイル/ディレクトリを移動しますdelete_files):リモートのファイル/ディレクトリを削除しますrename):リモートのファイル/ディレクトリをリネームしますcreate_directory):リモートサーバー上にディレクトリを作成しますview_file):リモートのテキストファイルをシンタックスハイライト付きで表示しますどれも File メニューにあります。キーはキーマッププリセットによって異なります。キーマッププリセットを参照してください。
XeFM は、異なる種類のストレージの間の操作をシームレスに扱います。
ローカル ↔ SFTP:
Copy: ~/local/file → ssh://server/remote/path
Move: ssh://server/data → ~/backup/
SFTP ↔ S3:
Copy: ssh://server/logs → s3://bucket/archive/
Move: s3://bucket/data → ssh://server/processing/
SFTP ↔ アーカイブ:
Copy: ssh://server/file.txt → local-archive.zip
Extract: ssh://server/archive.tar.gz → ~/extracted/
ファイル名検索(find_files):
*.py、test_*.txt内容検索(find_in_files):
検索の例:
*.log # Find all log files
config.* # Find config files with any extension
test_.*\.py # Find Python test files
XeFM には、SFTP の操作のための最適化がいくつか入っています。
リモートのテキストファイルを、完全なシンタックスハイライト付きで表示できます。
Enter を押すか File → View File(view_file)を使って、ビューアーを開きますisearch)Esc を押してビューアーを閉じます対応する形式: Python、JavaScript、JSON、YAML、Markdown、シェルスクリプトのほか、pygments がインストールされていれば 20 種類以上。
~/.xefm/config.py に追加します。
# SFTP cache TTL for successful results (seconds)
SSH_CACHE_TTL = 30
# SFTP cache TTL for cached errors (seconds)
SSH_CACHE_ERROR_TTL = 300
よく使う SFTP のパスをお気に入りに追加します。
FAVORITES = [
{'name': 'Local Projects', 'path': '~/projects'},
{'name': 'Dev Server', 'path': 'ssh://devbox/var/www'},
{'name': 'Production Logs', 'path': 'ssh://prod-web1/var/log/nginx'},
{'name': 'Backup Server', 'path': 'ssh://backup/mnt/backups'},
{'name': 'S3 Bucket', 'path': 's3://my-bucket/data'},
]
Go → Go to Favorite…(favorites)で開きます。リストは設定だけから作られるので、どれかを選ぶまで、これらのどこにも接続は開かれません。
XeFM はサーバーごとに 1 つの ssh(sftp コマンドが実行するのと同じ ssh <server> -s sftp)を実行し、すべての操作をその上で送ります。SSH の接続共有(ControlMaster)には依存しないので、Windows に組み込まれた OpenSSH でも動作します。~/.ssh/config にあるそのホストの設定(HostName、User、ProxyJump、ProxyCommand、鍵)は、ssh そのものと同じように適用されます。そこで設定したポートフォワーディングは、XeFM の接続では使われません。
複数のファイルを選択して、一括で操作できます。
toggle_select_down)toggle_select_files)copy_files、削除は delete_files など)進捗バーは、どちらの方向でも実際にバイトが転送されるのに合わせて進むので、遅延の大きい回線での遅い転送が 0% で止まっているようには見えません。ESC を押すとキャンセルできます。転送はバックグラウンドで最後まで続くことなく 0.5 秒ほどで止まり、途中まで転送したファイルは削除されます。
例:複数のディレクトリをバックアップする
1. Navigate to ssh://server/data
2. Open ~/backup in the other pane
3. Select the directories
4. Copy them across (`copy_files`)
5. Press Enter to confirm
subshell を実行すると、SFTP の環境変数が設定されたサブシェルモードに入ります。
# Environment variables available:
echo $XEFM_LEFT_DIR # May be ssh://server/path
echo $XEFM_RIGHT_DIR # May be local path
echo $XEFM_THIS_DIR # Current pane (SFTP or local)
# Use with standard tools:
scp $XEFM_THIS_DIR/file.txt user@other:/path/
rsync -av $XEFM_THIS_DIR/ backup/
exit と入力すると XeFM に戻ります。
問題:「Connection refused」または「Connection timeout」
解決方法:
ssh user@hostname問題:「Permission denied (publickey)」
解決方法:
ssh-add -lssh-copy-id user@hostname問題:「Host key verification failed」
解決方法:
ssh user@hostnamessh-keygen -R hostname~/.ssh/known_hosts を更新します問題:ディレクトリの一覧が遅い
解決方法:
ping hostname~/.ssh/config に追加します:
Compression yes
CompressionLevel 6
問題:検索が遅い
解決方法:
問題:ディレクトリの一覧が更新されない
解決方法:
問題:削除したファイルが表示されたままになる
解決方法:
chmod 600 ~/.ssh/id_rsaアクセス権を変更するには:
# Run subshell (Tools → Subshell Here) to enter the sub-shell
chmod 755 $XEFM_THIS_DIR/script.sh
exit
高度な操作には:
# Use sub-shell with standard tools
rsync -av --progress $XEFM_THIS_DIR/ backup/
tar czf archive.tar.gz $XEFM_THIS_DIR/*
1. Left pane: ~/projects/website (local)
2. Right pane: ssh://webserver/var/www/html
3. Select the updated files in the left pane
4. Copy them across (`copy_files`)
5. Confirm overwrite
6. Watch progress bar
1. Left pane: ssh://server/var/log
2. Right pane: ~/logs/backup
3. Search for logs (`find_files`), pattern: *.log
4. Select every file in the results (`toggle_select_files`)
5. Copy them across (`copy_files`)
6. Files copied to local backup
1. Navigate to: ssh://server/tmp
2. Search for old files (`find_files`), pattern: *.tmp
3. Review results
4. Select the files to delete
5. Delete them (`delete_files`)
6. Confirm deletion
1. Left pane: ~/local/config
2. Right pane: ssh://server/etc/app
3. Run an external diff tool (`programs`)
4. Select "Beyond Compare" or "diff"
5. Review differences
実装の詳細とアーキテクチャについては、次を参照してください。