← XeFM English | 日本語 · crftwr/xefm on GitHub · craftware

アーカイブ

English | 日本語

XeFM はアーカイブファイルを主要な機能として扱います。選択したファイルからアーカイブを作成し、展開し、その中身をその場でブラウズできます。先にディスクへ展開しなくても、普通のディレクトリと同じようにアーカイブの中へ移動できます。

ブラウズと展開:

  形式
常に対応 ZIP(.zip)、TAR(.tar)、圧縮 TAR(.tar.gz、.tgz、.tar.bz2、.tar.xz)
Python 3.14 以上 Zstandard TAR(.tar.zst、.tzst)
libarchive がある場合 7-Zip(.7z)、RAR(.rar)、ISO 9660 ディスクイメージ(.iso)、Cabinet(.cab)、cpio(.cpio)、RPM パッケージ(.rpm)

作成: 上の形式のうち .rar、.cab、.rpm 以外すべてに対応します。この 3 つは XeFM で読めても書けません。RAR を書けるのは WinRAR だけで、残りの 2 つには libarchive の書き込み機能がないためです。作成時のプロンプトでこれらの名前を入力すると、黙って .tar.gz を作るのではなく、その旨が表示されます。XeFM が作成する .7z は、7-Zip 自身が既定で書き込むのと同じ LZMA2 圧縮を使います。どの形式でもパスワードは設定できません(対応している暗号化を参照)。

表の最後の行にはシステムライブラリが必要です(下のこれらの形式が表示されない場合を参照)。それ以外は何も必要ありません。Zstandard も同様で、これは libarchive ではなく Python 自体が提供しています。

キーバインドの一覧は XeFM ユーザーガイドを参照するか、XeFM で F1 を押してください。

アーカイブの作成

  1. アーカイブにしたいファイルやディレクトリを選択します(Space で選択の切り替え、A ですべてのファイルを選択)。
  2. P を押します。
  3. アーカイブの名前を入力して確定します(使った拡張子で形式が決まります。例:.zip や .tar.gz)。

アーカイブは反対側のペインに作成されます。ディレクトリは再帰的に追加されます。既定では、作成前に XeFM が確認を求めます。

CONFIRM_ARCHIVE_CREATE = False   # default: True

アーカイブの展開

  1. 展開したいアーカイブを選択します。カーソルを 1 つに合わせるだけでもかまいません。
  2. U を押します。
  3. 展開先を確認します。

各アーカイブは、反対側のペインに作られる専用のサブディレクトリ(アーカイブ名にちなんだ名前)へ展開されます。選択項目のうちアーカイブでないもの(普通のファイルやディレクトリ)はスキップされ、いくつ飛ばしたかがログに表示されます。展開先のディレクトリがすでに存在する場合は、何かを書き込む前に確認画面でその旨が示されます。中のファイルは上書きされることがあります。

複数のアーカイブは 1 つの操作として展開されます。進捗ダイアログはまとめて 1 つで、Esc を押すとその時点で止まります(すでに展開されたものは残ります)。読めないアーカイブがあった場合は、その名前が報告され、残りのアーカイブの展開は続きます。

既定では、展開前に XeFM が確認を求めます。

CONFIRM_EXTRACT_ARCHIVE = False   # default: True

アーカイブをその場でブラウズする

展開する代わりに、アーカイブを開いて中を直接見ることもできます。

  1. アーカイブファイルにカーソルを合わせます。
  2. ENTER を押します。

アーカイブの中身は仮想ディレクトリとして表示されます。普通のディレクトリと同じように、ファイルやフォルダーが名前、サイズ、更新日時とともに並びます。パス表示には archive:// URL が示され、アーカイブのパスとその中での現在位置が # で区切られます。例:archive:///home/user/documents/backup.zip#projects/

移動

アーカイブはどのディレクトリとも同じようにブラウズできます。カーソル、ページ送り、open_item はすべてファイルシステム上と同じように動き、アーカイブのルートで go_parent を実行するとアーカイブから出ます。

例:/home/user/documents/ で backup.zip の上で ENTER を押すと archive:///home/user/documents/backup.zip# が表示され、projects/ の上で ENTER を押すとさらに奥へ進み、Backspace を 2 回押すとファイルシステムに戻ります。

アーカイブ内のファイルを表示する

ファイルにカーソルを合わせて view_file を実行します。XeFM はそのファイルを一時的な場所に展開して内蔵ビューアーで表示し(タイトルにはアーカイブの完全なパスが表示されます)、ビューアーを閉じると一時ファイルを自動で削除します。

アーカイブからファイルをコピーする

ブラウズ中のアーカイブから個別のファイルやフォルダーを取り出すには、コピーを使います。

  1. 目的のファイルまたはディレクトリを選択します(Space で選択するか、1 つの項目にカーソルを合わせるだけでもかまいません)。
  2. C を押します。
  3. コピー先のディレクトリを選びます。

選択したファイルはコピー先に展開されます。選択したディレクトリは、構造をそのまま保って再帰的に展開されます。コピー先はローカルのディレクトリでも S3 でもよく、XeFM は展開してそのままアップロードします。(アーカイブからアーカイブへのコピーには対応していません。アーカイブは読み取り専用だからです。)

ローカルへのコピーではファイルごとにバイト単位の進捗バーが表示され、大きなファイルの途中でも Esc で中断できます。書きかけのファイルは削除されます。S3 へ直接コピーする場合は、まだファイル内の進捗が表示されません。途中で止められるようにしたい場合は、まずローカルのディレクトリに展開してください。

ファイルの詳細

項目の上で I を押すと詳細が表示されます。名前、展開後と圧縮後のサイズ、圧縮率、更新日時、パーミッション、アーカイブの種類、アーカイブ内のパスです。

ソート

アーカイブの一覧は、XeFM のどこでも使えるクイックソートのアクション(quick_sort_name、quick_sort_ext、quick_sort_size、quick_sort_date)や sort ダイアログでソートできます。

ソートモードにかかわらず、ディレクトリは常に先頭に並びます。

アーカイブ内を検索する

アーカイブをブラウズ中に find_files を実行すると、ファイル名検索のダイアログが開きます。パターン(*.txt のようなワイルドカードも使えます)を入力すると、一致したファイルがアーカイブ内の完全なパスとともに一覧されます。結果の上で ENTER を押すとその場所へ移動します。検索の対象は現在のアーカイブだけで、現在位置から再帰的にたどります。大きなアーカイブでは、検索中に進捗が表示されます。

2 画面とアーカイブ

アーカイブのブラウズは XeFM の 2 つのペインと組み合わせて使えます。一方のペインでアーカイブをブラウズしながら、もう一方に普通のディレクトリ(または別のアーカイブ)を表示し、その間でファイルをコピーできます。ペイン同期のアクションはペイン間で動作し、アーカイブでも使えます。

パスワード付きアーカイブ

XeFM はパスワード付きのアーカイブも展開・ブラウズできます。ZIP は常に、7z はシステムライブラリが対応している場合に限ります(対応している暗号化を参照)。パスワードが必要になると、XeFM は伏せ字の入力欄でパスワードを尋ねます。入力した文字は • と表示され、入力欄から値をコピーしたり切り取ったりすることはできません。

パスワード付きアーカイブを展開する

  1. 暗号化されたアーカイブにカーソルを合わせ(またはほかのアーカイブと一緒に選択し)、extract_archive を実行します。
  2. いつものように展開先を確認します。
  3. XeFM がアーカイブの暗号化を検出し、パスワードを尋ねます。まとめて展開する場合は、そのアーカイブの番が来たときにプロンプトが表示されるので、暗号化されたアーカイブごとに個別に尋ねられます。
  4. パスワードを入力して Enter を押します。アーカイブは反対側のペインのサブディレクトリに展開されます。

パスワードが間違っていると、XeFM はその旨を伝えて再度尋ねます。パスワードが正しいと確認できるまではディスクに何も書き込まないので、間違ったパスワードのせいで展開しかけのフォルダーが残ることはありません。Esc を押すとキャンセルします。

パスワード付きアーカイブ内のファイルを表示する

  1. アーカイブの上で ENTER を押してブラウズします。ファイルの一覧はパスワードなしで見られます。
  2. 中のファイルを開きます(ENTER、または V で表示)。
  3. そのアーカイブのファイルを初めて開いたときに、XeFM がアーカイブのパスワードを尋ねます。
  4. パスワードを入力します。ファイルが内蔵ビューアーで開きます。

パスワードはセッションの終わりまで記憶されるので、尋ねられるのはアーカイブごとに 1 回だけです。アーカイブを展開したあとで同じアーカイブをブラウズする場合も、記憶されたパスワードが共有されます。

対応している暗号化

XeFM が復号できないアーカイブでは、入力したパスワードをすべて拒否するのではなく、「its encryption is not supported」と表示してプロンプトを出しません。TAR アーカイブ(.tar、.tar.gz、.tar.bz2、.tar.xz)が暗号化されていることはありません。

パスワードは実行中のセッションの間だけメモリに保持され、ディスクに書き込まれたりログに記録されたりすることはありません。アーカイブには UTF-8 のバイト列として渡されます(ASCII だけのパスワードは常に使えます)。

読み取り専用のブラウズ

アーカイブをその場でブラウズしているとき、その中身は読み取り専用です。ファイルのコピーによる取り出し、表示、ブラウズ、検索はできますが、ブラウズ中のアーカイブへファイルを削除・移動・コピーすることはできません。試みると XeFM が理由を説明するメッセージを表示します。アーカイブの中身を変更するには、展開し(U)、ファイルを編集して、新しいアーカイブを作成してください(P)。

そのほかの注意点:

これらの形式が表示されない場合

7z、RAR、ISO、CAB、cpio、RPM は Python だけでは扱えません。XeFM はシステムライブラリの libarchive を使います。これらのファイルの上で Enter を押したときに、中へブラウズする代わりにビューアーで開いてしまう場合や、作成時のプロンプトで .7z の名前を入力したのに .tar.gz ができてしまう場合は、XeFM が使えるライブラリを見つけられていません。(ZIP、TAR、.tar.zst は影響を受けません。これらはライブラリを一切使いません。)

F1 を押して「Archive Formats」までスクロールしてください。 この表は XeFM の起動時に作られるので、いま使っている XeFM が開ける形式と作成できる形式が正確に示され、その下の行には使用中の libarchive が表示されます。

Using libarchive 3.7.4 zlib/1.2.12 liblzma/5.4.3 bz2lib/1.0.8 — /usr/lib/libarchive.dylib

表にない形式は、ライブラリがそのために必要な部品なしでビルドされているものです。XeFM は、提示しておいてあとで失敗するのではなく、その形式を最初から外します。ライブラリが見つからなかった場合はその旨が理由とともにこの行に表示され、ログペイン(L)にも同じメッセージが出ます。対処方法:

システムのライブラリではなく特定のライブラリを使うには、XeFM を起動する前に LIBARCHIVE にその完全なパスを設定します。

export LIBARCHIVE=/opt/libarchive/lib/libarchive.so

libarchive がなくても、ほかには何も変わりません。ZIP と TAR はこれまでどおりに動き、該当するファイルは普通のファイルとして扱われるだけです。何もインストールしたくない場合は、FILE_ASSOCIATIONS のエントリでこれらのファイルを外部の展開ツールに渡すこともできます(ファイルの関連付けを参照)。

ヒント

関連項目