日本語 man コマンド類 (ja-man-1.1j_5) と日本語 man ドキュメント (ja-man-doc-5.4 (5.4-RELEASE 用) など) をインストールすると、以下のような man コマンド閲覧、キーワード検索が コンソールからできるようになります。
4.11-RELEASE-K, 5.4-RELEASE-K, 5.5-RELEASE-K, 6.0-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K, 12.1-RELEASE-K は、 プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K から 12.3-RELEASE-K, 13.0-RELEASE-K から 13.2-RELEASE-K は、全翻訳済み)
13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。
Table of Contents
ARCHIVE_WRITE_DISK(3) FreeBSD ライブラリ関数マニュアル ARCHIVE_WRITE_DISK(3) 名称 archive_write_disk_new, archive_write_disk_set_options, archive_write_disk_set_skip_file, archive_write_disk_set_group_lookup, archive_write_disk_set_standard_lookup, archive_write_disk_set_user_lookup -- ディスクにオブジェクトを作成するた めの関数 ライブラリ ストリーミングアーカイブライブラリ (libarchive, -larchive) 書式 #include <archive.h> struct archive * archive_write_disk_new(void); int archive_write_disk_set_options(struct archive *, int flags); int archive_write_disk_set_skip_file(struct archive *, dev_t, ino_t); int archive_write_disk_set_group_lookup(struct archive *, void *, gid_t (*)(void *, const char *gname, gid_t gid), void (*cleanup)(void *)); int archive_write_disk_set_standard_lookup(struct archive *); int archive_write_disk_set_user_lookup(struct archive *, void *, uid_t (*)(void *, const char *uname, uid_t uid), void (*cleanup)(void *)); 解説 これらの関数は、struct archive_entry 記述からディスクにオブジェクトを作成 するための完全な API を提供します。それらは、archive_read() インタフェー スを使用してアーカイブからオブジェクトを抽出するとき、最も自然に使用され ます。一般的なプロセスは、アーカイブから struct archive_entry オブジェク トを読み込んで、次に、archive_write_disk() ファミリ関数を使用して作成され る struct archive オブジェクトにそれらのオブジェクトを書き込みます。この インタフェースは、ストリーミングアーカイブにオブジェクトを書き込むために 使用される archive_write() インタフェースと意図的によく似せています。 archive_write_disk_new() ディスクにオブジェクト書き込むために適当な struct archive オブ ジェクトを割り付けて、初期化します。 archive_write_disk_set_skip_file() 上書きされるべきでないファイルのデバイスとと i ノード番号を記録し ます。これは、抽出のプロセスが、読み込まれているオブジェクトから アーカイブを上書きしないことを保証するために通常使用されます。こ のケーパビリティは、技術的に不要ですが、実際には、著しい性能の最 適化が行えます。 archive_write_disk_set_options() オプションフールドは、次の値の 1 つ以上のビット単位の論理和 (OR) で構成されます: ARCHIVE_EXTRACT_OWNER ユーザとグループ ID は、復元されたファイルで設定されるべ きです。デフォルトで、ユーザとグループ ID は、復元されま せん。 ARCHIVE_EXTRACT_PERM (SGID、SUID とスティッキビットを含んで) すべてのパーミッ ションは、現在の umask に従わないで指定されるように正確に 復元されるべきです。ディスク上のオブジェクトのユーザとグ ループ ID が正しい場合にだけ、SUID と SGID ビットを復元で きることに注意してください。ARCHIVE_EXTRACT_OWNER が指定 されないなら、SUID と SGID ビットは、ディスク上に新たに作 成されたオブジェクトのデフォルトユーザとグループ ID が、 アーカイブエントリで指定されたものに偶然適合する場合にだ け復元されます。デフォルトでは、umask に従って、基本的な パーミッションだけが復元されます。 ARCHIVE_EXTRACT_TIME タイムスタンプ (mtime、ctime と atime) は、復元されるべき です。デフォルトでは、それらは、無視されます。atime の復 元は、現在サポートされていないことに注意してください。 ARCHIVE_EXTRACT_NO_OVERWRITE ディスク上に存在するファイルは、上書きされません。デフォ ルトでは、既存の通常のファイルは、切り詰められるか、上書 きされます。既存のディレクトリは、それらの更新されたパー ミッションとなります。他の以前から存在するオブジェクト は、アンリンク (削除) され、最初から再作成されます。 ARCHIVE_EXTRACT_UNLINK ディスクに存在するファイルは、それらを作成する試みの前に アンリンク (削除) されます。ある場合には、これは、著しい 性能改良となることを実証できます。デフォルトで、既存の ファイルは、切り詰められ、再書き込みされますが、ファイル は、再作成されません。特に、デフォルトの振る舞いは、既存 のハードリンクを切りません。 ARCHIVE_EXTRACT_ACL ACL を復元することを試みます。デフォルトで、拡張 ACL は、 無視されます。 ARCHIVE_EXTRACT_FFLAGS 拡張ファイルフラグを復元するすることを試みます。デフォル トで、ファイルフラグは、無視されます。 ARCHIVE_EXTRACT_XATTR POSIX.1e 拡張属性を復元することを試みます。デフォルトで、 それらは、無視されます。 ARCHIVE_EXTRACT_SECURE_SYMLINKS 最終的な位置がディスク上のシンボリックリンクによって変更 される任意のオブジェクトを抽出することを拒否します。これ は、カレントディレクトリの外にファイルを抽出する (故意に かそうでない) アーカイブによって引き起こされたさまざまな 危害に対して保護することに役立つことを目的としています。 デフォルトでは、このチェックを実行しません。このオプショ ンと共に ARCHIVE_EXTRACT_UNLINK が指定されるなら、ライブ ラリは、見つかった中間的なシンボリックリンクを削除し、そ のようなシンボリックリンクを削除することができない場合に だけ、エラーを返します。 ARCHIVE_EXTRACT_SECURE_NODOTDOT その中のどこかに .. 要素を含むパスを抽出することを拒否し ます。デフォルトは、そのようなパスを拒否しません。.. で終 わるパスは、このフラグにかかわらず、常にエラーを引き起こ すことに注意してください。 ARCHIVE_EXTRACT_SECURE_NOABSOLUTEPATHS 絶対パスを抽出することを拒絶します。デフォルトは、そのよ うなパスを拒絶しないことです。 ARCHIVE_EXTRACT_SPARSE NUL バイトのブロックのデータをスキャンし、ホールでそれら を再作成を試みます。アーカイブ形式がそれらをサポートする か、または使用するかどうかと無関係にこれは、スパースファ イルをもたらします。 ARCHIVE_EXTRACT_CLEAR_NOCHANGE_FFLAGS それを置き換えることに先立ってファイルシステムオブジェク トを削除する前に、その除去を防止するプラットフォーム特有 のファイルフラグをクリアします。 archive_write_disk_set_group_lookup(), archive_write_disk_set_user_lookup() struct archive_entry オブジェクトは、ユーザとグループを識別するた めに使用することができる名前と ID の両方を含んでいます。これらの 名前と ID は、ファイル自体の所有権について記述し、ACL リストの中 にも現れます。デフォルトで、ライブラリは、ID を使用して、名前を無 視しますが、ユーザとグループ検索関数に登録することによって、これ を上書きすることができます。登録するために、利用者は、名前と ID の両方を受け付ける検索関数を提供し、適切な ID を返さなければなり ません。また、利用者は、プライベートデータ構造体とそのデータのク リーンアップ関数への void * ポインタを提供します。クリーンアップ 関数は、struct archive オブジェクトが破壊されるとき、呼び出されま す。 archive_write_disk_set_standard_lookup() この便利な関数は、ユーザとグループ検索関数の標準セットをインス トールします。これらの関数は、名前を検索することができないなら、 ID をデフォルトとする、名前を ID に変換するための getpwnam(3) と getgrnam(3) を使用します。また、これらの関数は、getpwnam(3) と getgrnam(3) への呼び出しの数を削減するために簡単なメモリキャッ シュを実装しています。 struct archive オブジェクトとライブラリの総合的な設計に関する詳しい情報 は、libarchive(3) 概観で見つけることができます。また、これらの関数の多く は、archive_write(3) の下で文書化されています。 戻り値 ほとんどの関数は、成功すれば、ARCHIVE_OK (0) を返し、エラーでは、いくつか の 0 でないエラーコードの 1 つを返します。特有のエラーコードは、次の通り です: 再試行されるなら成功するかもしれない操作のための ARCHIVE_RETRY、さ らなる操作を防止しない通常でない状態のための ARCHIVE_WARN、と残っている操 作を不可能にする重大な誤りのための ARCHIVE_FATAL です。 archive_write_disk_new() は、新しく割り付けられた struct archive オブジェ クトへのポインタを返します。 archive_write_data() は、実際に書き込まれたバイト数のカウントを返し、エ ラーで -1 返します。 エラー 詳細のエラーコードとテキスト形式の記述は、archive_errno() と archive_error_string() 関数で利用可能です。 関連項目 archive_read(3), archive_write(3), tar(1), libarchive(3) 歴史 libarchive ライブラリは、FreeBSD 5.3 ではじめて登場しました。 archive_write_disk インタフェースは、libarchive 2.0 に追加され、 FreeBSD 6.3 ではじめて登場しました。 作者 libarchive ライブラリは、Tim Kientzle <kientzle@acm.org> によって書かれま した。 バグ ディレクトリは、実際には、2 つの異なったフェーズで展開されます。ディレク トリは、archive_write_header() の間に作成されますが、最終のパーミッション は、archive_write_close() まで設定されません。このような分離は、正しく ファイルを含む書き込み不可能なディレクトリのようなきわどい事例を操作する ために必要ですが、予期しなかった結果を引き起こすかもしれません。特に、 ディレクトリのパーミッションは、アーカイブがクローズされるまで、完全に復 元されるわけではありません。archive_read_extract() への呼び出し、または archive_read_close() を呼び出す前にカレントディレクトリを変更するために chdir(2) を使用するなら、利用者は、パーミッションを設定する論理を混乱し て、その結果として、ディレクトリのパーミッションが不正確に復元されます。 ライブラリは、フルパスの接頭辞を作成して、カレントディレクトリを変更する することによって PATH_MAX より長いファイル名でオブジェクトを作成すること を試みます。現在、この論理は、スコープ (範囲) で制限されています: 固定し たパスは、そのようなオブジェクトでは、正しく動作しません、そして、シンボ リックリンクセキュリティチェックオプションは、大変長いパス名のサポートを 無効にします。 パス aa/../bb を復元することは、それぞれの中間的ディレクトリを作成しま す。特に、ディレクトリ aa は、最終的なオブジェクト bb と同様に作成されま す。理論的には、単一の要求で全体のディレクトリの階層構造を作成するために これを利用することができます。もちろん、ARCHIVE_EXTRACT_NODOTDOT オプショ ンが指定されるなら、これは、動作しません。 暗黙のディレクトリは、現在の umask に従って常に作成されます。明白なオブ ジェクトは、現在の umask が無視される場合で、ARCHIVE_EXTRACT_PERM が指定 されない場合だけ、現在の umask に従って作成されます。 SGID と SUID ビットは、正しいユーザとグループが設定されている場合にだけ復 元されます。ARCHIVE_EXTRACT_OWNER が指定されないなら、所有権を設定するこ とを試みを行いません。この場合は、SGID と SUID ビットは、最終的なオブジェ クトのユーザとグループがたまたまエントリで指定されたものに適合する場合に だけ、復元されます。 ``標準'' のユーザ ID とグループ ID 検索関数は、getgrnam(3) と getpwnam(3) が特別のアプリケーションには、時々大き過ぎるので、デフォルトではありませ ん。現在の設計によって、アプリケーションの作者は、適切なときに、よりコン パクトな実装を使用できます。 ディレクトリ階層構造を歩き回り、アーカイブエントリのオブジェクトを返す、 対応する archive_read_disk インタフェースがあるべきです。 FreeBSD 11.2 February 28, 2017 FreeBSD 11.2