<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://wiki.archlinux.jp/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Funcrab</id>
	<title>ArchWiki - 利用者の投稿記録 [ja]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.archlinux.jp/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Funcrab"/>
	<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php/%E7%89%B9%E5%88%A5:%E6%8A%95%E7%A8%BF%E8%A8%98%E9%8C%B2/Funcrab"/>
	<updated>2026-05-25T23:59:12Z</updated>
	<subtitle>利用者の投稿記録</subtitle>
	<generator>MediaWiki 1.44.3</generator>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Wayland&amp;diff=24369</id>
		<title>Wayland</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Wayland&amp;diff=24369"/>
		<updated>2022-03-07T22:31:50Z</updated>

		<summary type="html">&lt;p&gt;Funcrab: /* Qt */ 環境変数 QT_QPA_PLATFORM=&amp;quot;wayland;xcb&amp;quot; の引用元URLを追加&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:グラフィカルユーザーインターフェイス]]&lt;br /&gt;
[[es:Wayland]]&lt;br /&gt;
[[en:Wayland]]&lt;br /&gt;
[[fr:Wayland]]&lt;br /&gt;
[[pt:Wayland]]&lt;br /&gt;
[[ru:Wayland]]&lt;br /&gt;
[[zh-hans:Wayland]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|Kernel Mode Setting}}&lt;br /&gt;
{{Related|Xorg}}&lt;br /&gt;
{{Related|スクリーンショットの取得#Wayland}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[https://wayland.freedesktop.org/ Wayland] はディスプレイサーバープロトコルです。[[Xorg|X Window System]] の後継となることを目指しています。[[Wikipedia:Wayland_(display_server_protocol)#Differences_between_Wayland_and_X|Wikipedia に Wayland と Xorg の比較]] が掲載されています。&lt;br /&gt;
&lt;br /&gt;
Wayland プロトコルを使用するディスプレイサーバは、[[Wikipedia:ja:コンポジット型ウィンドウマネージャ|コンポジット型ウィンドウマネージャ]] としても機能するため、&#039;&#039;&#039;コンポジタ&#039;&#039;&#039; と呼ばれます。以下に[[#コンポジタ|Wayland コンポジタのリスト]]を示します。&lt;br /&gt;
&lt;br /&gt;
レガシーな [[X11]] アプリケーションをシームレスに動かすための後方互換性として、[[#XWayland|XWayland]] を使うことができます。これは Wayland に X サーバを提供します。&lt;br /&gt;
&lt;br /&gt;
== 要件 ==&lt;br /&gt;
ほとんどの Wayland コンポジタは [[KMS]] を利用しているシステムで動作します。&lt;br /&gt;
&lt;br /&gt;
また、Wayland はただのライブラリなので、それだけでは使い物になりません。X サーバーを置き換えるには、([[Weston]] や [[Sway]] などの) コンポジタあるいは ([[GNOME]] や [[KDE]] など) デスクトップ環境が必要です。&lt;br /&gt;
&lt;br /&gt;
GPU ドライバーと Wayland コンポジタは同一のバッファ API に対応している場合に互換性があります。主要な API は2つ存在します: [[Wikipedia:Generic Buffer Management|GBM]] と [https://www.phoronix.com/scan.php?page=news_item&amp;amp;px=XDC2016-Device-Memory-API EGLStreams] です。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! バッファ API !! GPU ドライバーのサポート !! Wayland コンポジタのサポート&lt;br /&gt;
|-&lt;br /&gt;
| GBM || [[NVIDIA]] &amp;lt; 495* 以外の全てのドライバー || 全てのコンポジタ&lt;br /&gt;
|-&lt;br /&gt;
| EGLStreams || [[NVIDIA]] || [[GNOME]], [[KDE]] [[Weston#EGLstream_support_(for_proprietary_Nvidia_Driver)|Weston]] (with a third-party patch)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
: *: Nvidia &amp;gt;= 495 は EGLStreams と GBM[https://www.phoronix.com/scan.php?page=news_item&amp;amp;px=NVIDIA-495.44-Linux-Driver] の両方をサポートします。&lt;br /&gt;
&lt;br /&gt;
== コンポジタ ==&lt;br /&gt;
&lt;br /&gt;
タイル型とスタック型の違いは、[[ウィンドウマネージャ#種類]]を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== タイル型 ===&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Cagebreak]]|cage をベースに、[[ratpoison]] にインスパイアされています。|https://github.com/project-repo/cagebreak|{{AUR|cagebreak}} {{AUR|cagebreak-bin}}}}&lt;br /&gt;
* {{App|Cardboard|スクロールコンポジタ。wlroots をベースに、PaperWM にインスパイアされています。|https://gitlab.com/cardboardwm/cardboard|{{AUR|cardboard-git}}}}&lt;br /&gt;
* {{App|dwl|wlroots ベースの [[dwm]] ライクな Wayland コンポジタ。|https://github.com/djpohly/dwl|{{AUR|dwl}}}}&lt;br /&gt;
* {{App|japokwm|wlroots ベースの、レイアウト作成を中心とした動的な Wayland タイリングコンポジタ。|https://github.com/werererer/japokwm|{{AUR|japokwm-git}}}}&lt;br /&gt;
* {{App|[[Qtile]]|Python で記述および設定されたフル機能のハッキング可能なタイリングウィンドウマネージャーと Wayland コンポジタ。|https://github.com/qtile/qtile|{{Pkg|qtile}}}}&lt;br /&gt;
* {{App|river|dwm [[bspwm]] にインスパイアされた動的なタイル型 Wayland コンポジタ。|https://github.com/ifreund/river|{{AUR|river-git}}}}&lt;br /&gt;
* {{App|[[Sway]]|wlroots ベースの [[i3]] 互換 Wayland コンポジタ。|https://github.com/swaywm/sway|{{Pkg|sway}}}}&lt;br /&gt;
* {{App|[[Velox]]|swc ベースのシンプルなウィンドウマネージャです。[[dwm]] と [[xmonad]] の影響を受けています。|https://github.com/michaelforney/velox|{{AUR|velox}}}}&lt;br /&gt;
* {{App|waymonad|[[Haskell]] で書かれた xmonad にインスパイアされた Wayland コンジタ。|https://github.com/waymonad/waymonad}}&lt;br /&gt;
* {{App|newm|ラップトップとタッチパッドを念頭に置いて作成された Wayland コンポジタ|https://github.com/jbuchermn/newm/|{{AUR|newm-git}}}}&lt;br /&gt;
&lt;br /&gt;
=== スタック型 ===&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Enlightenment]]|[[Enlightenment#Enlightenment を手動で起動する]] を参照してください。詳細: [https://git.enlightenment.org/core/enlightenment.git/tree/README] [https://www.enlightenment.org/about-wayland]|https://www.enlightenment.org/|{{Pkg|enlightenment}}}}&lt;br /&gt;
* {{App|Greenfield|Web ブラウザーで実行され、リモートアプリケーションを表示できます。|https://greenfield.app/}}&lt;br /&gt;
* {{App|Grefsen|最小限のデスクトップ環境を提供する Qt/Wayland コンポジタ。|https://github.com/ec1oud/grefsen}}&lt;br /&gt;
* {{App|hikari|FreeBSD で活発に開発されている [[cwm]] にインスパイアされた wlroots ベースのコンポジタ。Linux もサポートしている。|https://hikari.acmelabs.space/|{{AUR|hikari}}}}&lt;br /&gt;
* {{App|KDE [[w:KWin|KWin]]|[[KDE#Starting Plasma]] を参照。|https://userbase.kde.org/KWin|{{Pkg|kwin}}}}&lt;br /&gt;
* {{App|Liri Shell|[[Liri]] の一部、しかし、QtQuick と QtCompositor を使って Wayland 用のコンポジタとして作られています。|https://github.com/lirios/shell|{{AUR|liri-shell-git}}}}&lt;br /&gt;
* {{App|labwc|Openbox にインスパイアされた wlroots ベースのコンポジタ。|https://github.com/johanmalm/labwc|{{AUR|labwc-git}}}}&lt;br /&gt;
* {{App|[[w:Mutter (software)|Mutter]]|[[GNOME#Starting]] を参照してください。|https://gitlab.gnome.org/GNOME/mutter|{{Pkg|mutter}}}}&lt;br /&gt;
* {{App|wayfire|[[Compiz]] にインスパイアされ、wlroots に基づく 3D コンポジタ。|https://wayfire.org/|{{AUR|wayfire}}}}&lt;br /&gt;
* {{App|[[Weston]]|Wayland コンポジタのリファレンス実装。|https://gitlab.freedesktop.org/wayland/weston|{{Pkg|weston}}}}&lt;br /&gt;
* {{App|wio|Plan 9 のリオデスクトップのルックアンドフィールを複製することを目的とする wlroots ベースのコンポジタ。|https://wio-project.org/}}&lt;br /&gt;
&lt;br /&gt;
=== その他 ===&lt;br /&gt;
&lt;br /&gt;
* {{App|Cage|キオスクのような単一のフルスクリーンアプリケーションを表示します。 |https://www.hjdskes.nl/projects/cage/|{{Pkg|cage}}}}&lt;br /&gt;
* {{App|Maze Compositor|Qt を使用して 3D 迷路ウィンドウをレンダリングします。|https://github.com/imbavirus/mazecompositor}}&lt;br /&gt;
* {{App|Motorcar|バーチャルリアリティを使用して 3D ウィンドウを探索する Wayland コンポジタ。|https://github.com/evil0sheep/motorcar}}&lt;br /&gt;
&lt;br /&gt;
上記のいくつかは [[ディスプレイマネージャ]] をサポートする場合があります。&lt;br /&gt;
それらがどのように開始されるかを {{ic|/usr/share/wayland-sessions/&#039;&#039;compositor&#039;&#039;.desktop}} を見て確認してください。&lt;br /&gt;
&lt;br /&gt;
== ディスプレイマネージャ ==&lt;br /&gt;
&lt;br /&gt;
Wayland コンポジタの実行をサポートした[[ディスプレイマネージャ]]は以下の表の通りです。種類の列にはディスプレイマネージャが Wayland 上での実行をサポートしているかどうかが示されています。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! 名前&lt;br /&gt;
! 種類&lt;br /&gt;
! 説明&lt;br /&gt;
|-&lt;br /&gt;
| [[GDM]]&lt;br /&gt;
| Wayland/X11 上で動作&lt;br /&gt;
| [[GNOME]] ディスプレイマネージャ。&lt;br /&gt;
|-&lt;br /&gt;
| {{AUR|greetd}}&lt;br /&gt;
| ログインデーモン&lt;br /&gt;
| 最小でありながら柔軟なログインデーモン。&lt;br /&gt;
|-&lt;br /&gt;
| [[LightDM]]&lt;br /&gt;
| Wayland/X11 上で動作 [https://github.com/CanonicalLtd/lightdm/commit/f4f681f7b4209a634b021ba731addec1e081e5c7]&lt;br /&gt;
| 様々なデスクトップに対応したディスプレイマネージャ。&lt;br /&gt;
|-&lt;br /&gt;
| {{AUR|Ly}}&lt;br /&gt;
| コンソール上で動作&lt;br /&gt;
| TUI ディスプレイマネージャ。&lt;br /&gt;
|-&lt;br /&gt;
| [[SDDM]]&lt;br /&gt;
| X11 上で動作 [https://github.com/sddm/sddm/pull/616]&lt;br /&gt;
| QML ベースのディスプレイマネージャ。&lt;br /&gt;
|-&lt;br /&gt;
| {{AUR|tbsm}}&lt;br /&gt;
| コンソール上で動作&lt;br /&gt;
| bash のみに依存するシンプルな CLI セッションランチャー。&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== GUI ライブラリ ==&lt;br /&gt;
[https://wayland.freedesktop.org/toolkits.html 公式ウェブサイト] も参照してください。&lt;br /&gt;
&lt;br /&gt;
=== GTK ===&lt;br /&gt;
&lt;br /&gt;
{{pkg|gtk3}} と {{pkg|gtk4}} パッケージは Wayland バックエンドが有効になっています。&lt;br /&gt;
&lt;br /&gt;
Wayland と X 両方のバックエンドが有効になっているとき、GTK+ ではデフォルトで Wayland バックエンドを使いますが、{{ic|GDK_BACKEND&amp;amp;#61;x11}} 環境変数を設定することで Xwayland を使うように上書きできます。&lt;br /&gt;
&lt;br /&gt;
=== Qt ===&lt;br /&gt;
&lt;br /&gt;
[[Qt]] 5 または 6 は Wayland をサポートしています。{{Pkg|qt5-wayland}} または   {{Pkg|qt6-wayland}} パッケージをインストールしてください。&lt;br /&gt;
&lt;br /&gt;
Wayland プラグインを使って Qt 5 アプリケーションを動作させるには、[https://wiki.qt.io/QtWayland#How_do_I_use_QtWayland.3F] にあるように、{{ic|1=-platform wayland}} を使用するか、[[環境変数]] {{ic|1=QT_QPA_PLATFORM=wayland}} をセットして下さい。一方、Wayland セッション上で [[X11]] を使用させるには、{{ic|1=QT_QPA_PLATFORM=xcb}} とセットします。&lt;br /&gt;
これは、{{AUR|zoom}} など、システムの Qt の実装を使用しない一部のプロプライエタリアプリケーションで必要になる場合があります。&lt;br /&gt;
また、{{ic|1=QT_QPA_PLATFORM=&amp;quot;wayland;xcb&amp;quot;}} を使用すると、QtがWaylandが利用できない場合、代わりにxcb (X11)プラグインを使用させることができます。[https://www.qt.io/blog/2018/05/29/whats-new-in-qt-5-11-for-the-wayland-platform-plugin]&lt;br /&gt;
&lt;br /&gt;
[[sway]] などの一部のコンポジターでは、ネイティブに実行されている Qt アプリケーションの機能が不足している場合があります。 たとえば、 [https://keepassxc.org KeepassXC] はトレイに最小化できません。 これは、アプリケーションを実行する前に {{Pkg|qt5ct}} をインストールし、 {{ic|1=QT_QPA_PLATFORMTHEME=qt5ct}} を設定することで解決できます。&lt;br /&gt;
&lt;br /&gt;
===Clutter===&lt;br /&gt;
&lt;br /&gt;
Clutter ツールキットには Wayland バックエンドがあり、Clutter を Wayland のクライアントとして動作させることが可能です。このバックエンドは {{Pkg|clutter}} パッケージで有効になっています。&lt;br /&gt;
&lt;br /&gt;
Clutter アプリを Wayland 上で動作させるには、環境変数 {{ic|CLUTTER_BACKEND&amp;amp;#61;wayland}} を設定する必要があります。&lt;br /&gt;
&lt;br /&gt;
===SDL2 ===&lt;br /&gt;
&lt;br /&gt;
SDL2 アプリケーションを Wayland 上で動作させるには、環境変数 {{ic|SDL_VIDEODRIVER&amp;amp;#61;wayland}} を設定します。&lt;br /&gt;
&lt;br /&gt;
{{Note|Wayland 未対応の古い SDL が内部に含まれたゲームでは、{{ic|1=SDL_VIDEODRIVER=wayland}} を指定すると動作が壊れる場合があります。アプリケーションを XWayland で強制的に実行するには、{{ic|1=SDL_VIDEODRIVER=x11}} を設定します。}}&lt;br /&gt;
&lt;br /&gt;
=== GLFW ===&lt;br /&gt;
&lt;br /&gt;
GLFW で Wayland バックエンドを使用するには、({{Pkg|glfw-x11}} の代わりに) {{Pkg|glfw-wayland}} パッケージをインストールしてください。&lt;br /&gt;
&lt;br /&gt;
=== GLEW ===&lt;br /&gt;
&lt;br /&gt;
{{AUR|glew-wayland}} パッケージは現在のところ、多くの GLEW ベースのアプリケーションでまだ動作しませんので、唯一の選択肢は Xwayland で {{Pkg|glew}} を使うことです。{{Bug|62713}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
===EFL===&lt;br /&gt;
&lt;br /&gt;
EFL は Wayland を完全にサポートしています。Wayland で EFL アプリケーションを動かすには、Wayland の [https://wayland.freedesktop.org/efl.html プロジェクトページ] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
=== winit ===&lt;br /&gt;
&lt;br /&gt;
[https://github.com/rust-windowing/winit Winit] は [[Rust]] で書かれたウィンドウ管理ライブラリです。デフォルトでは Wayland が X11 より優先される仕様ですが、明示的に設定することもできます。{{ic|WINIT_UNIX_BACKEND}} 環境変数の値を {{ic|x11}} や {{ic|wayland}} としてください。&lt;br /&gt;
&lt;br /&gt;
=== Electron ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|electron}} ベースのアプリケーションを Wayland でネイティブに使用するには、{{ic|${XDG_CONFIG_HOME}/electron-flags.conf}} を作成または編集して、次のオプションを追加します。&lt;br /&gt;
&lt;br /&gt;
{{hc|1=~/.config/electron-flags.conf|2=&lt;br /&gt;
--enable-features=UseOzonePlatform&lt;br /&gt;
--ozone-platform=wayland&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
古いバージョンの electron には独自の {{ic|electron-flags.conf}} ファイルが必要であることに注意してください。&#039;&#039;electron12&#039;&#039; パッケージがインストールされている場合は、次のようにします。&lt;br /&gt;
&lt;br /&gt;
 $ ln -s electron-flags.conf ~/.config/electron12-flags.conf&lt;br /&gt;
&lt;br /&gt;
{{ic|${XDG_CONFIG_HOME} }} 内にコピーしてください、または、異なる {{Pkg|electron}} バージョンで異なるランタイムオプションを使用したい場合は、別の {{ic|${XDG_CONFIG_HOME}/electron12-flags.conf}} ファイルを使用する必要があります。&lt;br /&gt;
&lt;br /&gt;
{{Tip|Electron-flags をグローバルに上書きする代わりに、[[デスクトップエントリ]] を変更するとよいでしょう。}}&lt;br /&gt;
&lt;br /&gt;
== XWayland ==&lt;br /&gt;
&lt;br /&gt;
[https://wayland.freedesktop.org/xserver.html XWayland] は、Wayland の下で実行される X サーバーです。 レガシー [[X11]] アプリケーションに下位互換性を提供します。&lt;br /&gt;
&lt;br /&gt;
これを使用するには、{{Pkg|xorg-xwayland}} パッケージを [[インストール]] します。&lt;br /&gt;
&lt;br /&gt;
XWaylandはコンポジターを介して開始されるため、選択したコンポジターを使用して、XWayland の互換性と XWayland の開始方法の説明を確認して下さい。&lt;br /&gt;
&lt;br /&gt;
{{Note|セキュリティについて: XWayland は X サーバーであるため、 Wayland のセキュリティ機能はありません。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== NVIDIA ドライバ ===&lt;br /&gt;
&lt;br /&gt;
{{Note|バージョン 470 より前の Nvidia ドライバ(例: {{aur|nvidia-390xx-dkms}}) はハードウェアアクセラレーションされた XWayland をサポートしておらず、Wayland 以外のアプリケーションで Wayland セッションのパフォーマンスが低下します。}}&lt;br /&gt;
&lt;br /&gt;
なお、[[NVIDIA#DRM kernel mode setting|DRM KMS]] を有効にする必要があります。また、お使いのディスプレイマネージャ(例: [[GDM#Wayland と独自の NVIDIA ドライバ|GDM]])の[https://us.download.nvidia.com/XFree86/Linux-x86_64/470.42.01/README/xwayland.html 公式ドキュメント]に記載されている情報も見てください。&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== Xwayland アプリケーションであることを視認する ===&lt;br /&gt;
&lt;br /&gt;
アプリケーションが Xwayland 経由で実行されているかどうかを判断するには、{{AUR|extramaus}} を使用します。&lt;br /&gt;
アプリケーションのウィンドウ上にマウスポインタを移動して、マウスポインタが赤くなる場合は、アプリケーションが Xwayland 経由で実行されています。&lt;br /&gt;
&lt;br /&gt;
または、{{pkg|xorg-xeyes}} を使用して、アプリケーションウィンドウ上でマウスポインタを移動するときに、目が動いているかどうかで確認することもできます。&lt;br /&gt;
&lt;br /&gt;
==トラブルシューティング==&lt;br /&gt;
&lt;br /&gt;
=== 色補正 ===&lt;br /&gt;
&lt;br /&gt;
[[バックライト#色補正]]を参照。&lt;br /&gt;
&lt;br /&gt;
=== 動作が遅い、表示がおかしい、クラッシュする ===&lt;br /&gt;
&lt;br /&gt;
Gnome-shell で X から Wayland に切り替えるとグラフィック表示に問題が発生することがあります。原因として Xorg ベースの gnome-shell 用に {{ic|1=CLUTTER_PAINT=disable-clipped-redraws:disable-culling}} が設定されている可能性があります。{{ic|/etc/environment}} などの rc ファイルから該当箇所を削除してみてください。&lt;br /&gt;
&lt;br /&gt;
=== Electron ベースのアプリケーションでは、ディスプレイ::0を開けません ===&lt;br /&gt;
&lt;br /&gt;
GDK_BACKEND = wayland を設定していないことを確認してください。グローバルに設定すると、 Electron アプリが機能しなくなります。&lt;br /&gt;
&lt;br /&gt;
=== リモートディスプレイ ===&lt;br /&gt;
&lt;br /&gt;
いくつか選択肢が考えられます:&lt;br /&gt;
* [[Sway]] など {{Pkg|wlroots}} ベースのコンポジタでは {{AUR|wayvnc}} VNC サーバーが利用できます。&lt;br /&gt;
* [[Weston]] には RDP バックエンドが含まれています。{{man|7|weston-rdp}} を参照してください。&lt;br /&gt;
* {{Pkg|mutter}} ベースの場合は {{Pkg|gnome-remote-desktop}} が使えます。[https://wiki.gnome.org/Projects/Mutter/RemoteDesktop 公式サイト] を参照してください。&lt;br /&gt;
* {{AUR|waypipe}} や {{AUR|waypipe-git}} は Wayland アプリケーションの透過プロキシです。[[SSH]] を組み合わせることで外部から操作できます。詳細は[https://gitlab.freedesktop.org/mstoeckl/waypipe 公式サイト]を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== ゲームやリモートデスクトップ、仮想マシンウィンドウでの入力 ===&lt;br /&gt;
&lt;br /&gt;
Xorg と異なり、Wayland では入力デバイスを独占 (グラブ) することができません。キーボードショートカットやポインタデバイスをアプリケーションウィンドウに渡すのは Wayland コンポジタの役目となっています。&lt;br /&gt;
&lt;br /&gt;
入力グラブが変わったことで以下のように既存のアプリケーションで問題が発生します:&lt;br /&gt;
* ホットキーや修飾キーがコンポジタによって認識されてしまい、リモートデスクトップや仮想マシンのウィンドウに送信されなくなります。&lt;br /&gt;
* マウスポインタがアプリケーションウィンドウに制限されなくなるため、仮想マシンやリモートデスクトップのウィンドウ内のマウスポインタの位置がホスト環境のマウスポインタとずれるようになります。&lt;br /&gt;
&lt;br /&gt;
Wayland と XWayland にプロトコル拡張を追加することで解決を図っていますが、Wayland コンポジタが拡張をサポートしている必要があり、ネイティブの Wayland クライアントの場合、ウィジェットツールキット (例: GTK, Qt) やアプリケーション自身が拡張に対応していなければなりません。X上で動作するアプリケーションの場合、対応は不要です。&lt;br /&gt;
&lt;br /&gt;
関連する拡張:&lt;br /&gt;
* [https://cgit.freedesktop.org/wayland/wayland-protocols/tree/unstable/xwayland-keyboard-grab/xwayland-keyboard-grab-unstable-v1.xml XWayland keyboard grabbing protocol] (XWayland のサポートは xorg-server 1.20 開発ツリーに追加されています [https://lists.x.org/archives/xorg-devel/2017-August/054231.html])&lt;br /&gt;
* [https://cgit.freedesktop.org/wayland/wayland-protocols/tree/unstable/keyboard-shortcuts-inhibit/keyboard-shortcuts-inhibit-unstable-v1.xml Compositor shortcuts inhibit protocol]&lt;br /&gt;
* [https://cgit.freedesktop.org/wayland/wayland-protocols/tree/unstable/relative-pointer/relative-pointer-unstable-v1.xml Relative pointer protocol]&lt;br /&gt;
* [https://cgit.freedesktop.org/wayland/wayland-protocols/tree/unstable/pointer-constraints/pointer-constraints-unstable-v1.xml Pointer constraints protocol]&lt;br /&gt;
&lt;br /&gt;
サポートしている Wayland コンポジタ:&lt;br /&gt;
* Mutter, [[GNOME]] のコンポジタ ([https://bugzilla.gnome.org/show_bug.cgi?id=783342 リリース 3.28] 以上)。&lt;br /&gt;
* {{Pkg|wlroots}} (Relative pointer protocols と Pointer constraints protocol に対応)&lt;br /&gt;
&lt;br /&gt;
サポートしているウィジェットツールキット:&lt;br /&gt;
* GTK (リリース 3.22.18 以上)。&lt;br /&gt;
&lt;br /&gt;
=== GTK テーマが動かない ===&lt;br /&gt;
&lt;br /&gt;
https://github.com/swaywm/sway/wiki/GTK-3-settings-on-Wayland を参照してください。&lt;br /&gt;
&lt;br /&gt;
==参照==&lt;br /&gt;
&lt;br /&gt;
* [https://wayland.freedesktop.org/docs/html/ Wayland オンラインドキュメント]&lt;br /&gt;
* [https://gitlab.freedesktop.org/wayland Official Wayland Git Repo]&lt;br /&gt;
* [[Fedora:How to debug Wayland problems|Fedora Wiki の Wayland のデバッグに関する記事]]&lt;br /&gt;
* [https://arewewaylandyet.com/ Are we Wayland yet?]&lt;br /&gt;
* [https://awesomeopensource.com/projects/wayland Awesome Wayland projects]&lt;br /&gt;
* [[カーソルテーマ]]&lt;br /&gt;
* [https://bbs.archlinux.org/viewtopic.php?id=107499 Arch Linux forum discussion]&lt;br /&gt;
* [https://github.com/swaywm/sway/wiki/i3-Migration-Guide#common-x11-apps-used-on-i3-with-wayland-alternatives i3 Migration Guide - Common X11 apps used on i3 with Wayland alternatives]&lt;br /&gt;
* [https://wayland.app/protocols/ Wayland Explorer - A better way to read Wayland documentation]&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|Wayland|2021-11-09|700011}}&lt;/div&gt;</summary>
		<author><name>Funcrab</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Wayland&amp;diff=24368</id>
		<title>Wayland</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Wayland&amp;diff=24368"/>
		<updated>2022-03-07T22:27:11Z</updated>

		<summary type="html">&lt;p&gt;Funcrab: /* Qt */ waylandプラグインが使えない時にxcb(X11)を使用するようにフォールバックする変数「QT_QPA_PLATFORM=&amp;quot;wayland;xcb&amp;quot;」の記述を追加&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:グラフィカルユーザーインターフェイス]]&lt;br /&gt;
[[es:Wayland]]&lt;br /&gt;
[[en:Wayland]]&lt;br /&gt;
[[fr:Wayland]]&lt;br /&gt;
[[pt:Wayland]]&lt;br /&gt;
[[ru:Wayland]]&lt;br /&gt;
[[zh-hans:Wayland]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|Kernel Mode Setting}}&lt;br /&gt;
{{Related|Xorg}}&lt;br /&gt;
{{Related|スクリーンショットの取得#Wayland}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[https://wayland.freedesktop.org/ Wayland] はディスプレイサーバープロトコルです。[[Xorg|X Window System]] の後継となることを目指しています。[[Wikipedia:Wayland_(display_server_protocol)#Differences_between_Wayland_and_X|Wikipedia に Wayland と Xorg の比較]] が掲載されています。&lt;br /&gt;
&lt;br /&gt;
Wayland プロトコルを使用するディスプレイサーバは、[[Wikipedia:ja:コンポジット型ウィンドウマネージャ|コンポジット型ウィンドウマネージャ]] としても機能するため、&#039;&#039;&#039;コンポジタ&#039;&#039;&#039; と呼ばれます。以下に[[#コンポジタ|Wayland コンポジタのリスト]]を示します。&lt;br /&gt;
&lt;br /&gt;
レガシーな [[X11]] アプリケーションをシームレスに動かすための後方互換性として、[[#XWayland|XWayland]] を使うことができます。これは Wayland に X サーバを提供します。&lt;br /&gt;
&lt;br /&gt;
== 要件 ==&lt;br /&gt;
ほとんどの Wayland コンポジタは [[KMS]] を利用しているシステムで動作します。&lt;br /&gt;
&lt;br /&gt;
また、Wayland はただのライブラリなので、それだけでは使い物になりません。X サーバーを置き換えるには、([[Weston]] や [[Sway]] などの) コンポジタあるいは ([[GNOME]] や [[KDE]] など) デスクトップ環境が必要です。&lt;br /&gt;
&lt;br /&gt;
GPU ドライバーと Wayland コンポジタは同一のバッファ API に対応している場合に互換性があります。主要な API は2つ存在します: [[Wikipedia:Generic Buffer Management|GBM]] と [https://www.phoronix.com/scan.php?page=news_item&amp;amp;px=XDC2016-Device-Memory-API EGLStreams] です。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! バッファ API !! GPU ドライバーのサポート !! Wayland コンポジタのサポート&lt;br /&gt;
|-&lt;br /&gt;
| GBM || [[NVIDIA]] &amp;lt; 495* 以外の全てのドライバー || 全てのコンポジタ&lt;br /&gt;
|-&lt;br /&gt;
| EGLStreams || [[NVIDIA]] || [[GNOME]], [[KDE]] [[Weston#EGLstream_support_(for_proprietary_Nvidia_Driver)|Weston]] (with a third-party patch)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
: *: Nvidia &amp;gt;= 495 は EGLStreams と GBM[https://www.phoronix.com/scan.php?page=news_item&amp;amp;px=NVIDIA-495.44-Linux-Driver] の両方をサポートします。&lt;br /&gt;
&lt;br /&gt;
== コンポジタ ==&lt;br /&gt;
&lt;br /&gt;
タイル型とスタック型の違いは、[[ウィンドウマネージャ#種類]]を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== タイル型 ===&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Cagebreak]]|cage をベースに、[[ratpoison]] にインスパイアされています。|https://github.com/project-repo/cagebreak|{{AUR|cagebreak}} {{AUR|cagebreak-bin}}}}&lt;br /&gt;
* {{App|Cardboard|スクロールコンポジタ。wlroots をベースに、PaperWM にインスパイアされています。|https://gitlab.com/cardboardwm/cardboard|{{AUR|cardboard-git}}}}&lt;br /&gt;
* {{App|dwl|wlroots ベースの [[dwm]] ライクな Wayland コンポジタ。|https://github.com/djpohly/dwl|{{AUR|dwl}}}}&lt;br /&gt;
* {{App|japokwm|wlroots ベースの、レイアウト作成を中心とした動的な Wayland タイリングコンポジタ。|https://github.com/werererer/japokwm|{{AUR|japokwm-git}}}}&lt;br /&gt;
* {{App|[[Qtile]]|Python で記述および設定されたフル機能のハッキング可能なタイリングウィンドウマネージャーと Wayland コンポジタ。|https://github.com/qtile/qtile|{{Pkg|qtile}}}}&lt;br /&gt;
* {{App|river|dwm [[bspwm]] にインスパイアされた動的なタイル型 Wayland コンポジタ。|https://github.com/ifreund/river|{{AUR|river-git}}}}&lt;br /&gt;
* {{App|[[Sway]]|wlroots ベースの [[i3]] 互換 Wayland コンポジタ。|https://github.com/swaywm/sway|{{Pkg|sway}}}}&lt;br /&gt;
* {{App|[[Velox]]|swc ベースのシンプルなウィンドウマネージャです。[[dwm]] と [[xmonad]] の影響を受けています。|https://github.com/michaelforney/velox|{{AUR|velox}}}}&lt;br /&gt;
* {{App|waymonad|[[Haskell]] で書かれた xmonad にインスパイアされた Wayland コンジタ。|https://github.com/waymonad/waymonad}}&lt;br /&gt;
* {{App|newm|ラップトップとタッチパッドを念頭に置いて作成された Wayland コンポジタ|https://github.com/jbuchermn/newm/|{{AUR|newm-git}}}}&lt;br /&gt;
&lt;br /&gt;
=== スタック型 ===&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Enlightenment]]|[[Enlightenment#Enlightenment を手動で起動する]] を参照してください。詳細: [https://git.enlightenment.org/core/enlightenment.git/tree/README] [https://www.enlightenment.org/about-wayland]|https://www.enlightenment.org/|{{Pkg|enlightenment}}}}&lt;br /&gt;
* {{App|Greenfield|Web ブラウザーで実行され、リモートアプリケーションを表示できます。|https://greenfield.app/}}&lt;br /&gt;
* {{App|Grefsen|最小限のデスクトップ環境を提供する Qt/Wayland コンポジタ。|https://github.com/ec1oud/grefsen}}&lt;br /&gt;
* {{App|hikari|FreeBSD で活発に開発されている [[cwm]] にインスパイアされた wlroots ベースのコンポジタ。Linux もサポートしている。|https://hikari.acmelabs.space/|{{AUR|hikari}}}}&lt;br /&gt;
* {{App|KDE [[w:KWin|KWin]]|[[KDE#Starting Plasma]] を参照。|https://userbase.kde.org/KWin|{{Pkg|kwin}}}}&lt;br /&gt;
* {{App|Liri Shell|[[Liri]] の一部、しかし、QtQuick と QtCompositor を使って Wayland 用のコンポジタとして作られています。|https://github.com/lirios/shell|{{AUR|liri-shell-git}}}}&lt;br /&gt;
* {{App|labwc|Openbox にインスパイアされた wlroots ベースのコンポジタ。|https://github.com/johanmalm/labwc|{{AUR|labwc-git}}}}&lt;br /&gt;
* {{App|[[w:Mutter (software)|Mutter]]|[[GNOME#Starting]] を参照してください。|https://gitlab.gnome.org/GNOME/mutter|{{Pkg|mutter}}}}&lt;br /&gt;
* {{App|wayfire|[[Compiz]] にインスパイアされ、wlroots に基づく 3D コンポジタ。|https://wayfire.org/|{{AUR|wayfire}}}}&lt;br /&gt;
* {{App|[[Weston]]|Wayland コンポジタのリファレンス実装。|https://gitlab.freedesktop.org/wayland/weston|{{Pkg|weston}}}}&lt;br /&gt;
* {{App|wio|Plan 9 のリオデスクトップのルックアンドフィールを複製することを目的とする wlroots ベースのコンポジタ。|https://wio-project.org/}}&lt;br /&gt;
&lt;br /&gt;
=== その他 ===&lt;br /&gt;
&lt;br /&gt;
* {{App|Cage|キオスクのような単一のフルスクリーンアプリケーションを表示します。 |https://www.hjdskes.nl/projects/cage/|{{Pkg|cage}}}}&lt;br /&gt;
* {{App|Maze Compositor|Qt を使用して 3D 迷路ウィンドウをレンダリングします。|https://github.com/imbavirus/mazecompositor}}&lt;br /&gt;
* {{App|Motorcar|バーチャルリアリティを使用して 3D ウィンドウを探索する Wayland コンポジタ。|https://github.com/evil0sheep/motorcar}}&lt;br /&gt;
&lt;br /&gt;
上記のいくつかは [[ディスプレイマネージャ]] をサポートする場合があります。&lt;br /&gt;
それらがどのように開始されるかを {{ic|/usr/share/wayland-sessions/&#039;&#039;compositor&#039;&#039;.desktop}} を見て確認してください。&lt;br /&gt;
&lt;br /&gt;
== ディスプレイマネージャ ==&lt;br /&gt;
&lt;br /&gt;
Wayland コンポジタの実行をサポートした[[ディスプレイマネージャ]]は以下の表の通りです。種類の列にはディスプレイマネージャが Wayland 上での実行をサポートしているかどうかが示されています。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! 名前&lt;br /&gt;
! 種類&lt;br /&gt;
! 説明&lt;br /&gt;
|-&lt;br /&gt;
| [[GDM]]&lt;br /&gt;
| Wayland/X11 上で動作&lt;br /&gt;
| [[GNOME]] ディスプレイマネージャ。&lt;br /&gt;
|-&lt;br /&gt;
| {{AUR|greetd}}&lt;br /&gt;
| ログインデーモン&lt;br /&gt;
| 最小でありながら柔軟なログインデーモン。&lt;br /&gt;
|-&lt;br /&gt;
| [[LightDM]]&lt;br /&gt;
| Wayland/X11 上で動作 [https://github.com/CanonicalLtd/lightdm/commit/f4f681f7b4209a634b021ba731addec1e081e5c7]&lt;br /&gt;
| 様々なデスクトップに対応したディスプレイマネージャ。&lt;br /&gt;
|-&lt;br /&gt;
| {{AUR|Ly}}&lt;br /&gt;
| コンソール上で動作&lt;br /&gt;
| TUI ディスプレイマネージャ。&lt;br /&gt;
|-&lt;br /&gt;
| [[SDDM]]&lt;br /&gt;
| X11 上で動作 [https://github.com/sddm/sddm/pull/616]&lt;br /&gt;
| QML ベースのディスプレイマネージャ。&lt;br /&gt;
|-&lt;br /&gt;
| {{AUR|tbsm}}&lt;br /&gt;
| コンソール上で動作&lt;br /&gt;
| bash のみに依存するシンプルな CLI セッションランチャー。&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== GUI ライブラリ ==&lt;br /&gt;
[https://wayland.freedesktop.org/toolkits.html 公式ウェブサイト] も参照してください。&lt;br /&gt;
&lt;br /&gt;
=== GTK ===&lt;br /&gt;
&lt;br /&gt;
{{pkg|gtk3}} と {{pkg|gtk4}} パッケージは Wayland バックエンドが有効になっています。&lt;br /&gt;
&lt;br /&gt;
Wayland と X 両方のバックエンドが有効になっているとき、GTK+ ではデフォルトで Wayland バックエンドを使いますが、{{ic|GDK_BACKEND&amp;amp;#61;x11}} 環境変数を設定することで Xwayland を使うように上書きできます。&lt;br /&gt;
&lt;br /&gt;
=== Qt ===&lt;br /&gt;
&lt;br /&gt;
[[Qt]] 5 または 6 は Wayland をサポートしています。{{Pkg|qt5-wayland}} または   {{Pkg|qt6-wayland}} パッケージをインストールしてください。&lt;br /&gt;
&lt;br /&gt;
Wayland プラグインを使って Qt 5 アプリケーションを動作させるには、[https://wiki.qt.io/QtWayland#How_do_I_use_QtWayland.3F] にあるように、{{ic|1=-platform wayland}} を使用するか、[[環境変数]] {{ic|1=QT_QPA_PLATFORM=wayland}} をセットして下さい。一方、Wayland セッション上で [[X11]] を使用させるには、{{ic|1=QT_QPA_PLATFORM=xcb}} とセットします。&lt;br /&gt;
これは、{{AUR|zoom}} など、システムの Qt の実装を使用しない一部のプロプライエタリアプリケーションで必要になる場合があります。&lt;br /&gt;
また、{{ic|1=QT_QPA_PLATFORM=&amp;quot;wayland;xcb&amp;quot;}} を使用すると、QtがWaylandが利用できない場合、代わりにxcb (X11)プラグインを使用させることができます。&lt;br /&gt;
&lt;br /&gt;
[[sway]] などの一部のコンポジターでは、ネイティブに実行されている Qt アプリケーションの機能が不足している場合があります。 たとえば、 [https://keepassxc.org KeepassXC] はトレイに最小化できません。 これは、アプリケーションを実行する前に {{Pkg|qt5ct}} をインストールし、 {{ic|1=QT_QPA_PLATFORMTHEME=qt5ct}} を設定することで解決できます。&lt;br /&gt;
&lt;br /&gt;
===Clutter===&lt;br /&gt;
&lt;br /&gt;
Clutter ツールキットには Wayland バックエンドがあり、Clutter を Wayland のクライアントとして動作させることが可能です。このバックエンドは {{Pkg|clutter}} パッケージで有効になっています。&lt;br /&gt;
&lt;br /&gt;
Clutter アプリを Wayland 上で動作させるには、環境変数 {{ic|CLUTTER_BACKEND&amp;amp;#61;wayland}} を設定する必要があります。&lt;br /&gt;
&lt;br /&gt;
===SDL2 ===&lt;br /&gt;
&lt;br /&gt;
SDL2 アプリケーションを Wayland 上で動作させるには、環境変数 {{ic|SDL_VIDEODRIVER&amp;amp;#61;wayland}} を設定します。&lt;br /&gt;
&lt;br /&gt;
{{Note|Wayland 未対応の古い SDL が内部に含まれたゲームでは、{{ic|1=SDL_VIDEODRIVER=wayland}} を指定すると動作が壊れる場合があります。アプリケーションを XWayland で強制的に実行するには、{{ic|1=SDL_VIDEODRIVER=x11}} を設定します。}}&lt;br /&gt;
&lt;br /&gt;
=== GLFW ===&lt;br /&gt;
&lt;br /&gt;
GLFW で Wayland バックエンドを使用するには、({{Pkg|glfw-x11}} の代わりに) {{Pkg|glfw-wayland}} パッケージをインストールしてください。&lt;br /&gt;
&lt;br /&gt;
=== GLEW ===&lt;br /&gt;
&lt;br /&gt;
{{AUR|glew-wayland}} パッケージは現在のところ、多くの GLEW ベースのアプリケーションでまだ動作しませんので、唯一の選択肢は Xwayland で {{Pkg|glew}} を使うことです。{{Bug|62713}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
===EFL===&lt;br /&gt;
&lt;br /&gt;
EFL は Wayland を完全にサポートしています。Wayland で EFL アプリケーションを動かすには、Wayland の [https://wayland.freedesktop.org/efl.html プロジェクトページ] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
=== winit ===&lt;br /&gt;
&lt;br /&gt;
[https://github.com/rust-windowing/winit Winit] は [[Rust]] で書かれたウィンドウ管理ライブラリです。デフォルトでは Wayland が X11 より優先される仕様ですが、明示的に設定することもできます。{{ic|WINIT_UNIX_BACKEND}} 環境変数の値を {{ic|x11}} や {{ic|wayland}} としてください。&lt;br /&gt;
&lt;br /&gt;
=== Electron ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|electron}} ベースのアプリケーションを Wayland でネイティブに使用するには、{{ic|${XDG_CONFIG_HOME}/electron-flags.conf}} を作成または編集して、次のオプションを追加します。&lt;br /&gt;
&lt;br /&gt;
{{hc|1=~/.config/electron-flags.conf|2=&lt;br /&gt;
--enable-features=UseOzonePlatform&lt;br /&gt;
--ozone-platform=wayland&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
古いバージョンの electron には独自の {{ic|electron-flags.conf}} ファイルが必要であることに注意してください。&#039;&#039;electron12&#039;&#039; パッケージがインストールされている場合は、次のようにします。&lt;br /&gt;
&lt;br /&gt;
 $ ln -s electron-flags.conf ~/.config/electron12-flags.conf&lt;br /&gt;
&lt;br /&gt;
{{ic|${XDG_CONFIG_HOME} }} 内にコピーしてください、または、異なる {{Pkg|electron}} バージョンで異なるランタイムオプションを使用したい場合は、別の {{ic|${XDG_CONFIG_HOME}/electron12-flags.conf}} ファイルを使用する必要があります。&lt;br /&gt;
&lt;br /&gt;
{{Tip|Electron-flags をグローバルに上書きする代わりに、[[デスクトップエントリ]] を変更するとよいでしょう。}}&lt;br /&gt;
&lt;br /&gt;
== XWayland ==&lt;br /&gt;
&lt;br /&gt;
[https://wayland.freedesktop.org/xserver.html XWayland] は、Wayland の下で実行される X サーバーです。 レガシー [[X11]] アプリケーションに下位互換性を提供します。&lt;br /&gt;
&lt;br /&gt;
これを使用するには、{{Pkg|xorg-xwayland}} パッケージを [[インストール]] します。&lt;br /&gt;
&lt;br /&gt;
XWaylandはコンポジターを介して開始されるため、選択したコンポジターを使用して、XWayland の互換性と XWayland の開始方法の説明を確認して下さい。&lt;br /&gt;
&lt;br /&gt;
{{Note|セキュリティについて: XWayland は X サーバーであるため、 Wayland のセキュリティ機能はありません。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== NVIDIA ドライバ ===&lt;br /&gt;
&lt;br /&gt;
{{Note|バージョン 470 より前の Nvidia ドライバ(例: {{aur|nvidia-390xx-dkms}}) はハードウェアアクセラレーションされた XWayland をサポートしておらず、Wayland 以外のアプリケーションで Wayland セッションのパフォーマンスが低下します。}}&lt;br /&gt;
&lt;br /&gt;
なお、[[NVIDIA#DRM kernel mode setting|DRM KMS]] を有効にする必要があります。また、お使いのディスプレイマネージャ(例: [[GDM#Wayland と独自の NVIDIA ドライバ|GDM]])の[https://us.download.nvidia.com/XFree86/Linux-x86_64/470.42.01/README/xwayland.html 公式ドキュメント]に記載されている情報も見てください。&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== Xwayland アプリケーションであることを視認する ===&lt;br /&gt;
&lt;br /&gt;
アプリケーションが Xwayland 経由で実行されているかどうかを判断するには、{{AUR|extramaus}} を使用します。&lt;br /&gt;
アプリケーションのウィンドウ上にマウスポインタを移動して、マウスポインタが赤くなる場合は、アプリケーションが Xwayland 経由で実行されています。&lt;br /&gt;
&lt;br /&gt;
または、{{pkg|xorg-xeyes}} を使用して、アプリケーションウィンドウ上でマウスポインタを移動するときに、目が動いているかどうかで確認することもできます。&lt;br /&gt;
&lt;br /&gt;
==トラブルシューティング==&lt;br /&gt;
&lt;br /&gt;
=== 色補正 ===&lt;br /&gt;
&lt;br /&gt;
[[バックライト#色補正]]を参照。&lt;br /&gt;
&lt;br /&gt;
=== 動作が遅い、表示がおかしい、クラッシュする ===&lt;br /&gt;
&lt;br /&gt;
Gnome-shell で X から Wayland に切り替えるとグラフィック表示に問題が発生することがあります。原因として Xorg ベースの gnome-shell 用に {{ic|1=CLUTTER_PAINT=disable-clipped-redraws:disable-culling}} が設定されている可能性があります。{{ic|/etc/environment}} などの rc ファイルから該当箇所を削除してみてください。&lt;br /&gt;
&lt;br /&gt;
=== Electron ベースのアプリケーションでは、ディスプレイ::0を開けません ===&lt;br /&gt;
&lt;br /&gt;
GDK_BACKEND = wayland を設定していないことを確認してください。グローバルに設定すると、 Electron アプリが機能しなくなります。&lt;br /&gt;
&lt;br /&gt;
=== リモートディスプレイ ===&lt;br /&gt;
&lt;br /&gt;
いくつか選択肢が考えられます:&lt;br /&gt;
* [[Sway]] など {{Pkg|wlroots}} ベースのコンポジタでは {{AUR|wayvnc}} VNC サーバーが利用できます。&lt;br /&gt;
* [[Weston]] には RDP バックエンドが含まれています。{{man|7|weston-rdp}} を参照してください。&lt;br /&gt;
* {{Pkg|mutter}} ベースの場合は {{Pkg|gnome-remote-desktop}} が使えます。[https://wiki.gnome.org/Projects/Mutter/RemoteDesktop 公式サイト] を参照してください。&lt;br /&gt;
* {{AUR|waypipe}} や {{AUR|waypipe-git}} は Wayland アプリケーションの透過プロキシです。[[SSH]] を組み合わせることで外部から操作できます。詳細は[https://gitlab.freedesktop.org/mstoeckl/waypipe 公式サイト]を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== ゲームやリモートデスクトップ、仮想マシンウィンドウでの入力 ===&lt;br /&gt;
&lt;br /&gt;
Xorg と異なり、Wayland では入力デバイスを独占 (グラブ) することができません。キーボードショートカットやポインタデバイスをアプリケーションウィンドウに渡すのは Wayland コンポジタの役目となっています。&lt;br /&gt;
&lt;br /&gt;
入力グラブが変わったことで以下のように既存のアプリケーションで問題が発生します:&lt;br /&gt;
* ホットキーや修飾キーがコンポジタによって認識されてしまい、リモートデスクトップや仮想マシンのウィンドウに送信されなくなります。&lt;br /&gt;
* マウスポインタがアプリケーションウィンドウに制限されなくなるため、仮想マシンやリモートデスクトップのウィンドウ内のマウスポインタの位置がホスト環境のマウスポインタとずれるようになります。&lt;br /&gt;
&lt;br /&gt;
Wayland と XWayland にプロトコル拡張を追加することで解決を図っていますが、Wayland コンポジタが拡張をサポートしている必要があり、ネイティブの Wayland クライアントの場合、ウィジェットツールキット (例: GTK, Qt) やアプリケーション自身が拡張に対応していなければなりません。X上で動作するアプリケーションの場合、対応は不要です。&lt;br /&gt;
&lt;br /&gt;
関連する拡張:&lt;br /&gt;
* [https://cgit.freedesktop.org/wayland/wayland-protocols/tree/unstable/xwayland-keyboard-grab/xwayland-keyboard-grab-unstable-v1.xml XWayland keyboard grabbing protocol] (XWayland のサポートは xorg-server 1.20 開発ツリーに追加されています [https://lists.x.org/archives/xorg-devel/2017-August/054231.html])&lt;br /&gt;
* [https://cgit.freedesktop.org/wayland/wayland-protocols/tree/unstable/keyboard-shortcuts-inhibit/keyboard-shortcuts-inhibit-unstable-v1.xml Compositor shortcuts inhibit protocol]&lt;br /&gt;
* [https://cgit.freedesktop.org/wayland/wayland-protocols/tree/unstable/relative-pointer/relative-pointer-unstable-v1.xml Relative pointer protocol]&lt;br /&gt;
* [https://cgit.freedesktop.org/wayland/wayland-protocols/tree/unstable/pointer-constraints/pointer-constraints-unstable-v1.xml Pointer constraints protocol]&lt;br /&gt;
&lt;br /&gt;
サポートしている Wayland コンポジタ:&lt;br /&gt;
* Mutter, [[GNOME]] のコンポジタ ([https://bugzilla.gnome.org/show_bug.cgi?id=783342 リリース 3.28] 以上)。&lt;br /&gt;
* {{Pkg|wlroots}} (Relative pointer protocols と Pointer constraints protocol に対応)&lt;br /&gt;
&lt;br /&gt;
サポートしているウィジェットツールキット:&lt;br /&gt;
* GTK (リリース 3.22.18 以上)。&lt;br /&gt;
&lt;br /&gt;
=== GTK テーマが動かない ===&lt;br /&gt;
&lt;br /&gt;
https://github.com/swaywm/sway/wiki/GTK-3-settings-on-Wayland を参照してください。&lt;br /&gt;
&lt;br /&gt;
==参照==&lt;br /&gt;
&lt;br /&gt;
* [https://wayland.freedesktop.org/docs/html/ Wayland オンラインドキュメント]&lt;br /&gt;
* [https://gitlab.freedesktop.org/wayland Official Wayland Git Repo]&lt;br /&gt;
* [[Fedora:How to debug Wayland problems|Fedora Wiki の Wayland のデバッグに関する記事]]&lt;br /&gt;
* [https://arewewaylandyet.com/ Are we Wayland yet?]&lt;br /&gt;
* [https://awesomeopensource.com/projects/wayland Awesome Wayland projects]&lt;br /&gt;
* [[カーソルテーマ]]&lt;br /&gt;
* [https://bbs.archlinux.org/viewtopic.php?id=107499 Arch Linux forum discussion]&lt;br /&gt;
* [https://github.com/swaywm/sway/wiki/i3-Migration-Guide#common-x11-apps-used-on-i3-with-wayland-alternatives i3 Migration Guide - Common X11 apps used on i3 with Wayland alternatives]&lt;br /&gt;
* [https://wayland.app/protocols/ Wayland Explorer - A better way to read Wayland documentation]&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|Wayland|2021-11-09|700011}}&lt;/div&gt;</summary>
		<author><name>Funcrab</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Snapper&amp;diff=23253</id>
		<title>Snapper</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Snapper&amp;diff=23253"/>
		<updated>2022-01-16T04:39:21Z</updated>

		<summary type="html">&lt;p&gt;Funcrab: /* {{ic|/}} を {{ic|@}} のスナップショットに復元 */ mountコマンド例のデバイス部分を斜体に変更&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ファイルシステム]]&lt;br /&gt;
[[en:Snapper]]&lt;br /&gt;
[[zh-hans:Snapper]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|Btrfs}}&lt;br /&gt;
{{Related|mkinitcpio}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[http://snapper.io Snapper] は openSUSE の Arvin Schnell によって作られた、[[Btrfs]] のサブボリュームと [[LVM]] のボリュームのスナップショットの管理を助けるツールです。スナップショットを作成して比較したり、前のスナップショットに戻したり、自動スナップショットが行えます。&lt;br /&gt;
&lt;br /&gt;
==インストール==&lt;br /&gt;
安定版は {{Pkg|snapper}} パッケージからインストールできます。開発版は {{AUR|snapper-git}} パッケージで利用可能です。&lt;br /&gt;
&lt;br /&gt;
GUI は {{AUR|snapper-gui-git}} パッケージでインストールすることができます。&lt;br /&gt;
&lt;br /&gt;
==新しい設定の作成==&lt;br /&gt;
&lt;br /&gt;
Btrfs サブボリュームで Snapper の設定を作成する前に、あらかじめサブボリュームが作成されている必要があります。サブボリュームが存在しない場合、Snapper の設定をするまえに[[Btrfs#サブボリュームを作成する|サブボリュームを作成]]してください。&lt;br /&gt;
&lt;br /&gt;
Btrfs サブボリュームが {{ic|&#039;&#039;/path/to/subvolume&#039;&#039;}} に存在していて、{{ic|&#039;&#039;config&#039;&#039;}} という名前で新しく Snapper の設定を作るには:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; create-config &#039;&#039;/path/to/subvolume&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
上記のコマンドを実行すると:&lt;br /&gt;
*{{ic|/etc/snapper/config-templates}} にあるデフォルトのテンプレートに基づいて {{ic|/etc/snapper/configs/&#039;&#039;config&#039;&#039;}} に設定ファイルが作成されます。&lt;br /&gt;
*{{ic|&#039;&#039;/path/to/subvolume&#039;&#039;/.snapshots}} にサブボリュームが作成されてスナップショットが保存されます。スナップショットのパスは {{ic|&#039;&#039;/path/to/subvolume&#039;&#039;/.snapshots/&#039;&#039;#&#039;&#039;/snapshot}} になります ({{ic|&#039;&#039;#&#039;&#039;}} はスナップショット番号です)。&lt;br /&gt;
*{{ic|/etc/conf.d/snapper}} の {{ic|SNAPPER_CONFIGS}} に {{ic|&#039;&#039;config&#039;&#039;}} が追加されます。&lt;br /&gt;
&lt;br /&gt;
例えば、{{ic|/}} にマウントされたサブボリュームの設定ファイルを作成する場合:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c root create-config /&lt;br /&gt;
&lt;br /&gt;
この時点で、設定は有効になっています。[[cron]] デーモンが動作している場合、snapper は[[#自動タイムラインスナップショット|自動タイムラインスナップショット]]を作成します。[[cron]] デーモンを使っていない場合、systemd サービスとタイマーを使用する必要があります。[[#有効化/無効化]]を見てください。&lt;br /&gt;
&lt;br /&gt;
設定について詳しくは {{ic|snapper-configs}} の [[man ページ]]を参照。&lt;br /&gt;
&lt;br /&gt;
== スナップショットの作成 ==&lt;br /&gt;
&lt;br /&gt;
=== 自動タイムラインスナップショット ===&lt;br /&gt;
&lt;br /&gt;
Snapper では毎時・毎日・毎月・毎年に保存するスナップショットの数を設定できるスナップショットタイムラインを作成することができます。デフォルトでは1時間毎にスナップショットが取得されます。そして1日1回、タイムラインのクリーンアップアルゴリズムによって&amp;quot;古くなって要らなくなった&amp;quot;スナップショットを削除します。&lt;br /&gt;
&lt;br /&gt;
==== 有効化/無効化 ====&lt;br /&gt;
&lt;br /&gt;
[[cron]] デーモンが動作している場合、自動タイムラインスナップショットは自動的に起動します。無効化するには、サブボリュームに存在する設定ファイルを編集して以下を設定してください:&lt;br /&gt;
&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;TIMELINE_CREATE=&amp;quot;no&amp;quot;&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
[[cron]] デーモンを使っていない場合、パッケージに含まれている systemd ユニットを使うことができます。{{ic|snapper-timeline.timer}} を[[起動]]・[[有効化]]することで自動タイムラインスナップショットが開始されます。さらに、{{ic|snapper-cleanup.timer}} を[[起動]]・[[有効化]]すると定期的に古いスナップショットが消去されます。&lt;br /&gt;
&lt;br /&gt;
{{Note|cron デーモンと有効化された systemd ユニットがともに動作すると、重複したスナップショットが作成される結果になる場合があります。systemd ユニットを使いつつ cron 側を無効にできるかもしれない一つの手法に、[[pacman]] の [[pacman#インストールさせないファイルを設定|NoExtract]] および [[pacman#アップグレードさせないファイルを設定|NoUpgrade]] を使い、snapper のパッケージの cron ファイルをインストールしない方法があります。[https://unix.stackexchange.com/questions/425570/snapper-has-recently-started-performing-duplicate-snapshots-each-hour] を見てください。}}&lt;br /&gt;
&lt;br /&gt;
==== スナップショットのリミットの設定 ====&lt;br /&gt;
&lt;br /&gt;
デフォルト設定では、毎時間10個、毎日10個、毎月10個、毎年10個のスナップショットが保存されます。{{ic|/}} など頻繁にサブボリュームに変更を加える場合は、この設定を変更したほうが良いでしょう。[[#ドライブの負担を抑える]]を見て下さい。&lt;br /&gt;
&lt;br /&gt;
以下は、5時間、毎日7個のスナップショットだけを維持して、毎月・毎年は保存しない設定の例です:&lt;br /&gt;
{{hc|head=/etc/snapper/configs/&#039;&#039;config&#039;&#039;|output=&lt;br /&gt;
TIMELINE_MIN_AGE=&amp;quot;1800&amp;quot;&lt;br /&gt;
TIMELINE_LIMIT_HOURLY=&amp;quot;5&amp;quot;&lt;br /&gt;
TIMELINE_LIMIT_DAILY=&amp;quot;7&amp;quot;&lt;br /&gt;
TIMELINE_LIMIT_WEEKLY=&amp;quot;0&amp;quot;&lt;br /&gt;
TIMELINE_LIMIT_MONTHLY=&amp;quot;0&amp;quot;&lt;br /&gt;
TIMELINE_LIMIT_YEARLY=&amp;quot;0&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== スナップショットとクリーンアップの頻度を変更する ====&lt;br /&gt;
&lt;br /&gt;
systemd タイマーを使っている場合、タイマーを[[Systemd#ユニットファイルの編集|編集]]してスナップショットの頻度を変更できます。&lt;br /&gt;
&lt;br /&gt;
例えば、{{ic|snapper-timeline.timer}} を編集して以下のようにすることで5分毎にスナップショットが作成されます:&lt;br /&gt;
&lt;br /&gt;
 [Timer]&lt;br /&gt;
 OnCalendar=&lt;br /&gt;
 OnCalendar=*:0/5&lt;br /&gt;
&lt;br /&gt;
{{Note|設定パラメータ {{ic|TIMELINE_LIMIT_HOURLY}} は上記の設定に関連付けられています。上の例では5分毎にスナップショットが作成されるようになります。}}&lt;br /&gt;
&lt;br /&gt;
{{ic|snapper-cleanup.timer}} を編集するときは {{ic|OnUnitActiveSec}} を変更してください。1時間毎に古いスナップショットを消去するには、以下を追加:&lt;br /&gt;
&lt;br /&gt;
 [Timer]&lt;br /&gt;
 OnUnitActiveSec=1h&lt;br /&gt;
&lt;br /&gt;
詳しくは [[Systemd/タイマー]]や [[Systemd#ドロップインファイル]]を参照。&lt;br /&gt;
&lt;br /&gt;
=== 手動スナップショット ===&lt;br /&gt;
&lt;br /&gt;
==== シンプルなスナップショット ====&lt;br /&gt;
&lt;br /&gt;
デフォルトでは Snapper は他のスナップショットと特別な関係を持たない、単純なスナップショットを作成します。&lt;br /&gt;
&lt;br /&gt;
手動でサブボリュームのスナップショットを作成するには、以下のコマンドを実行:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; create --description &#039;&#039;desc&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
上記のコマンドはクリーンアップアルゴリズムを使用しないため、スナップショットは明示的に[[#スナップショットの削除|削除]]するまでずっと残り続けます。&lt;br /&gt;
&lt;br /&gt;
クリーンアップアルゴリズムを設定するには {{ic|create}} の後に {{ic|-c}} フラグを使用して {{ic|number}}, {{ic|timeline}}, {{ic|pre}}, {{ic|post}} のどれかを選択してください。{{ic|number}} は設定ファイルで指定された番号にあわせて定期的にスナップショットを削除します。例えば、{{ic|number}} アルゴリズムを使用するスナップショットを作成するには:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; create -c number&lt;br /&gt;
&lt;br /&gt;
{{ic|timeline}} スナップショットについては[[#自動タイムラインスナップショット|自動タイムラインスナップショット]]を、{{ic|pre}} と {{ic|post}} については[[#事前事後のスナップショット|事前事後のスナップショット]]を見てください。&lt;br /&gt;
&lt;br /&gt;
==== 事前事後のスナップショット ====&lt;br /&gt;
&lt;br /&gt;
シンプルなスナップショットだけでなく、Snapper では事前事後のスナップショットを作成できます。事前 (&#039;&#039;pre&#039;&#039;) スナップショットには必ず対応する事後 (&#039;&#039;post&#039;&#039;) スナップショットが存在します。このペアによってシステムに変更を加える前後のスナップショットを作成することができます。&lt;br /&gt;
&lt;br /&gt;
事前事後のスナップショットを作成するには、まず事前スナップショットを作成:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; create -t pre -p&lt;br /&gt;
&lt;br /&gt;
上記のコマンドでスナップショット番号が出力されます。&lt;br /&gt;
&lt;br /&gt;
それからシステムに何らかの変更を加えます (例えば新しいプログラムをインストールしたり、ソフトウェアをアップグレードするなど)。&lt;br /&gt;
&lt;br /&gt;
次に事後のスナップショットを作成:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; create -t post --pre-number &#039;&#039;#&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|&#039;&#039;#&#039;&#039;}} は事前スナップショットの番号に置き換えてください。&lt;br /&gt;
&lt;br /&gt;
{{ic|create}} に {{ic|--command}} フラグを指定して、コマンドをラップすることもできます:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; create --command &#039;&#039;cmd&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|&#039;&#039;cmd&#039;&#039;}} は事前事後のスナップショットを作成する間に実行したいコマンドに置き換えてください。&lt;br /&gt;
&lt;br /&gt;
[[#pacman のトランザクションをスナップショットで記録|pacman のトランザクションをスナップショットで記録]]も見てください。&lt;br /&gt;
&lt;br /&gt;
=== 起動時にスナップショットを作成 ===&lt;br /&gt;
&lt;br /&gt;
snapper で {{ic|root}} 設定のスナップショットを作成するには {{ic|snapper-boot.timer}} を[[有効化]]してください。&lt;br /&gt;
&lt;br /&gt;
== スナップショットの確認 ==&lt;br /&gt;
&lt;br /&gt;
作成されたスナップショットを確認するには:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; list&lt;br /&gt;
&lt;br /&gt;
== 設定の確認 ==&lt;br /&gt;
&lt;br /&gt;
全ての[[#新しい設定の作成|設定]]を確認するには:&lt;br /&gt;
&lt;br /&gt;
 # snapper list-configs&lt;br /&gt;
&lt;br /&gt;
== スナップショットの削除 ==&lt;br /&gt;
&lt;br /&gt;
スナップショット番号 {{ic|&#039;&#039;#&#039;&#039;}} を削除するには:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; delete &#039;&#039;#&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
一度に複数のスナップショットを削除できます。例えば、root 設定の65と70のスナップショットを削除するには:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c root delete 65 70&lt;br /&gt;
&lt;br /&gt;
{{Note|事前スナップショットを削除した場合、事後スナップショットも一緒に削除してください。逆も然りです。}}&lt;br /&gt;
&lt;br /&gt;
==root 以外のユーザーでアクセス==&lt;br /&gt;
設定は root ユーザーによって作成され、デフォルトでは、root だけが設定を確認したり変更できます。&lt;br /&gt;
&lt;br /&gt;
特定のユーザーからもスナップショットを確認できるようにしたいときは、{{ic|/etc/snapper/configs/&#039;&#039;config&#039;&#039;}} ファイルの {{ic|ALLOW_USERS}} の値を変更してください。そうすれば通常ユーザーでも {{ic|snapper -c &#039;&#039;config&#039;&#039;list}} を実行できるようになります。&lt;br /&gt;
&lt;br /&gt;
さらに、ユーザーを使って {{ic|.snapshots}} ディレクトリを閲覧できるようにしたい、それでいてディレクトリの所有者は root のままにしておきたいということが考えられます。そのような場合、使用したいユーザーが属しているグループに、グループ所有者を変更してください。例えば {{ic|users}}　を使う場合:&lt;br /&gt;
&lt;br /&gt;
 # chmod a+rx .snapshots&lt;br /&gt;
 # chown :users .snapshots&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== pacman のトランザクションをスナップショットで記録 ===&lt;br /&gt;
&lt;br /&gt;
pacman の操作時に自動的にスナップショットを作成するためのパッケージが複数存在します:&lt;br /&gt;
&lt;br /&gt;
* {{App|pacupg|Btrfs のスナップショットでパッケージと AUR のアップグレードを記録して、簡単にロールバックできるようにするスクリプト。|https://github.com/crossroads1112/bin/tree/master/pacupg|{{AUR|pacupg}}}}&lt;br /&gt;
* {{App|snap-pac|openSUSE の YaST のように自動的に[[#事前事後のスナップショット|事前事後のスナップショット]]を作成します。[[Pacman#フック]]を使用しています。|https://github.com/wesbarnett/snap-pac|{{Pkg|snap-pac}}}}&lt;br /&gt;
* {{App|snap-pac-grub|{{pkg|snap-pac}} でスナップショットが作成された後に {{Pkg|grub-btrfs}} 用に GRUB エントリを更新します。[[Pacman#フック]]を使用します。||{{aur|snap-pac-grub}}}}&lt;br /&gt;
* {{App|snp|シェルコマンドの実行前後に snapper でスナップショットを取るラッパー。例: {{ic|$ snp pacman -Syu}}|https://gist.github.com/erikw/5229436|}}&lt;br /&gt;
&lt;br /&gt;
=== boot パーティションのバックアップ ===&lt;br /&gt;
&lt;br /&gt;
{{ic|/boot}} パーティションが btrfs ファイルシステム上に存在しない場合 (例: [[ESP]])、snapper でバックアップすることはできません。フックを使用してカーネルのアップデート時に boot パーティションを自動的に btrfs ファイルシステムにコピーさせることはできます。{{Pkg|snap-pac}} でも上手くバックアップされます。&lt;br /&gt;
{{hc|1=/etc/pacman.d/hooks/50-bootbackup.hook|2=&lt;br /&gt;
[Trigger]&lt;br /&gt;
Operation = Upgrade&lt;br /&gt;
Operation = Install&lt;br /&gt;
Operation = Remove&lt;br /&gt;
Type = Path&lt;br /&gt;
Target = usr/lib/modules/*/vmlinuz&lt;br /&gt;
&lt;br /&gt;
[Action]&lt;br /&gt;
Depends = rsync&lt;br /&gt;
Description = Backing up /boot...&lt;br /&gt;
When = PostTransaction&lt;br /&gt;
Exec = /usr/bin/rsync -a --delete /boot /.bootbackup&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== 外部ドライブに差分バックアップ ===&lt;br /&gt;
&lt;br /&gt;
以下のパッケージは {{ic|btrfs send}} と {{ic|btrfs receive}} を使用して外部ドライブにバックアップを差分で送信します:&lt;br /&gt;
&lt;br /&gt;
* {{App|buttersink|Btrfs スナップショットの rsync のようなもので、スナップショットの差分だけを送信することで自動的に同期を最適化します。|https://github.com/AmesCornish/buttersink.git|{{AUR|buttersink-git}}}}&lt;br /&gt;
* {{App|snap-sync|snapper スナップショットを使用して外部ドライブにバックアップします。|https://github.com/wesbarnett/snap-sync.git|{{Pkg|snap-sync}}}}&lt;br /&gt;
* {{App|snapsync|snapper 用の同期ツール。|https://github.com/doudou/snapsync|{{AUR|ruby-snapsync}}}}&lt;br /&gt;
&lt;br /&gt;
===推奨ファイルシステムレイアウト===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Note|1=以下のレイアウトは &#039;&#039;&#039;{{ic|snapper rollback}} を使用することは想定していません&#039;&#039;&#039;が、[[#/ を @ のスナップショットに復元|/ を @ のスナップショットに復元]]した時の問題を軽減します。[https://bbs.archlinux.org/viewtopic.php?id=194491 フォーラムスレッド] を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
以下は {{ic|/}} を簡単に復元できるようにするための推奨ファイルシステムレイアウトです。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ ファイルシステムレイアウト&lt;br /&gt;
! サブボリューム !! マウントポイント&lt;br /&gt;
|-&lt;br /&gt;
| @ || /&lt;br /&gt;
|-&lt;br /&gt;
| @home || /home&lt;br /&gt;
|-&lt;br /&gt;
| @snapshots || /.snapshots&lt;br /&gt;
|-&lt;br /&gt;
| @var_log || /var/log&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 subvolid=5&lt;br /&gt;
   |&lt;br /&gt;
   ├── @ -|&lt;br /&gt;
   |     含まれるディレクトリ:&lt;br /&gt;
   |       ├── /usr&lt;br /&gt;
   |       ├── /bin&lt;br /&gt;
   |       ├── /.snapshots&lt;br /&gt;
   |       ├── ...&lt;br /&gt;
   |&lt;br /&gt;
   ├── @home&lt;br /&gt;
   ├── @snapshots&lt;br /&gt;
   ├── @var_log&lt;br /&gt;
   └── @...&lt;br /&gt;
&lt;br /&gt;
{{ic|/.snapshots}} は {{ic|@snapshots}} のマウントポイントです。{{ic|@...}} は {{ic|/}} にマウントするサブボリューム ({{ic|@}}) とは別に保存したいサブボリュームになります。{{ic|/}} のスナップショットを作成するとき、他のサブボリュームはスナップショットに含まれません。ただし、別の snapper 設定を作成することで他のサブボリュームもスナップショットで記録できます。システムを {{ic|/}} のスナップショットの時点まで戻したいと思ったときに、他のサブボリュームには影響が及びません。&lt;br /&gt;
&lt;br /&gt;
例えば、{{ic|/}} をスナップショット時に戻したいが {{ic|/home}} は最新の状態のままにしたい場合、サブボリュームを作成して {{ic|/home}} にマウントしてください。詳しくは [[Btrfs#サブボリュームをマウントする]]を参照。&lt;br /&gt;
&lt;br /&gt;
上記のレイアウトは snapper ユーティリティで定期的に {{ic|/}} のスナップショットが作成できるのと同時に、起動できなくなった場合に Arch のライブ CD から {{ic|/}} を簡単に復元することができます。&lt;br /&gt;
&lt;br /&gt;
その場合、初期設定をしたら snapper に特別な設定をする必要はありません。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* サブボリュームが {{ic|@}} 下に入れ子になっていても、{{ic|/}} のスナップショットには含まれません。{{ic|/}} にマウントしているサブボリュームのスナップショットを保存したい場合は snapper でサブボリュームの設定を行ってください。&lt;br /&gt;
* [[Btrfs#スワップファイル|Btrfs の制限]]により、スナップショットされたボリュームは[[スワップ#スワップファイル|スワップファイル]]を含むことができません。スワップファイルを別のサブボリュームに置くか、[[スワップ#スワップパーティション|スワップパーティション]]を作成してください。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
====snapper の設定とマウントポイント====&lt;br /&gt;
&lt;br /&gt;
{{ic|/.snapshots}} がマウントされていないこと、フォルダとして存在しないことを確認してください:&lt;br /&gt;
 # umount /.snapshots&lt;br /&gt;
 # rm -r /.snapshots&lt;br /&gt;
&lt;br /&gt;
それから {{ic|/}} の[[#新しい設定の作成|新しい設定を作成]]します。&lt;br /&gt;
&lt;br /&gt;
そして {{ic|@snapshots}} を {{ic|/.snapshots}} に[[マウント]]してください。例えば、ファイルシステムが {{ic|/dev/sda1}} に存在する場合:&lt;br /&gt;
 # mount -o subvol=@snapshots /dev/sda1 /.snapshots&lt;br /&gt;
マウントを永続化させるには、[[fstab]] にエントリを作成します。&lt;br /&gt;
&lt;br /&gt;
もしくは fstab エントリが既に存在する場合、スナップショットのサブボリュームを再マウントします:&lt;br /&gt;
 # mount -a&lt;br /&gt;
&lt;br /&gt;
フォルダには {{ic|750}} の[[ファイルのパーミッションと属性#数字を使う方法|パーミッション]]を設定してください。&lt;br /&gt;
&lt;br /&gt;
snapper が作成するスナップショットは全て {{ic|@}} サブボリュームの外に保存されるため、snapper のスナップショットを削除しなくても {{ic|@}} を簡単に置き換えることができます。&lt;br /&gt;
&lt;br /&gt;
===={{ic|/}} を {{ic|@}} のスナップショットに復元 ====&lt;br /&gt;
&lt;br /&gt;
snapper のスナップショットを使って {{ic|/}} をリストアしたくなったら、まずは Arch Linux のライブ USB/CD を起動します。&lt;br /&gt;
&lt;br /&gt;
トップレベルのサブボリューム (subvolid=5) を[[マウント]]してください。{{ic|subvolid}} マウントフラグは省略します。&#039;&#039;/dev/sda2&#039;&#039; をマウントする例：&lt;br /&gt;
&lt;br /&gt;
 # mount -o subvolid=5 &#039;&#039;/dev/sda2&#039;&#039; /mnt&lt;br /&gt;
&lt;br /&gt;
{{ic|/mnt/@snapshots/*/info.xml}} から復元したいスナップショットを確認します:&lt;br /&gt;
{{Tip|{{ic|less}} を使ってファイルを確認できます:&lt;br /&gt;
 # cat /mnt/@snapshots/*/info.xml {{!}} less&lt;br /&gt;
次のページを見たいときは {{ic|space}} を、終了するときは {{ic|q}} を使用します。}}&lt;br /&gt;
&lt;br /&gt;
{{ic|&amp;lt;description&amp;gt;}} タグと {{ic|&amp;lt;date&amp;gt;}} タグを見て、リストアしたいスナップショットが確認できたら、{{ic|&amp;lt;num&amp;gt;}} の番号をメモしてください。&lt;br /&gt;
&lt;br /&gt;
そして {{ic|@}} を他の場所 (例: {{ic|/@.broken}}) にして現在のシステムのコピーを保存します。もしくは {{ic|btrfs subvolume delete}} で {{ic|@}} を削除します。&lt;br /&gt;
&lt;br /&gt;
読み取り専用のスナップショットから読み書き可能なスナップショットを作成:&lt;br /&gt;
&lt;br /&gt;
 # btrfs subvol snapshot /mnt/@snapshots/&#039;&#039;#&#039;&#039;/snapshot /mnt/@&lt;br /&gt;
&lt;br /&gt;
{{ic|&#039;&#039;#&#039;&#039;}} は復元したい snapper のスナップショットの番号に置き換えてください。これで {{ic|/}} は前の状態に戻ります。再起動してください。&lt;br /&gt;
&lt;br /&gt;
===スナップショットからファイルを削除===&lt;br /&gt;
&lt;br /&gt;
過去のスナップショットから特定のファイルやフォルダを削除したい場合、[https://pypi.python.org/pypi/snapperS snapperS] というスクリプトが存在します。&lt;br /&gt;
&lt;br /&gt;
スクリプトを使わずにファイルを削除したい場合、以下のコマンドを実行して [https://unix.stackexchange.com/a/149933/3587 スナップショットのサブボリュームを読み書き可能] にする必要があります:&lt;br /&gt;
&lt;br /&gt;
 # btrfs property set /path/to/.snapshots/&amp;lt;snapshot_num&amp;gt;/snapshot ro false&lt;br /&gt;
&lt;br /&gt;
{{ic|1=ro=false}} となっていることを確認:&lt;br /&gt;
&lt;br /&gt;
{{hc|# btrfs property get /path/to/.snapshots/&amp;lt;snapshot_num&amp;gt;/snapshot|2=ro=false}}&lt;br /&gt;
&lt;br /&gt;
これで {{ic|/path/to/.snapshots/&amp;lt;snapshot_num&amp;gt;/snapshot}} のファイルは通常通りに編集することが可能になります。&lt;br /&gt;
&lt;br /&gt;
=== ドライブの負担を抑える ===&lt;br /&gt;
&lt;br /&gt;
頻繁に変更が加わるファイルシステム (例えば多数のシステムアップデートが行われる {{ic|/}} など) で長期間にわたって頻繁にスナップショットを取得すると動作がかなり遅くなることがあります。以下のようにすることで遅くなるのを回避できます:&lt;br /&gt;
* スナップショットを作成する価値がない {{ic|/var/cache/pacman/pkg}}, {{ic|/var/abs}}, {{ic|/var/tmp}}, {{ic|/srv}} などのサブボリュームを[[Btrfs#サブボリュームを作成する|作成]]する。&lt;br /&gt;
* [[#自動タイムラインスナップショット|自動タイムラインスナップショット]]を使う場合に、毎時・毎日・毎周・毎年のスナップショットのデフォルト設定を変更する。&lt;br /&gt;
&lt;br /&gt;
==== updatedb ====&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、{{ic|updatedb}} は snapper によって作成された {{ic|.snapshots}} ディレクトリのインデックスも作成してしまい、スナップショットが大量にある場合、深刻な遅延が発生したりメモリが異常に消費される原因になります。以下のように設定ファイルを編集することでインデックスを作成しないように {{ic|updatedb}} を設定できます:&lt;br /&gt;
{{hc|/etc/updatedb.conf|2=PRUNENAMES = &amp;quot;.snapshots&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
=== ログファイルの保持 ===&lt;br /&gt;
&lt;br /&gt;
{{ic|/var/log}} のサブボリュームを作成して {{ic|/}} のスナップショットに含まれないようにすることを推奨します。{{ic|/}} のスナップショットを復元したときにログファイルまで前の状態に戻ってしまうことがなくなり、トラブルシューティングが楽になります。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
===Snapper のログ===&lt;br /&gt;
Snapper は全ての活動を {{ic|/var/log/snapper.log}} に書き出します。何か問題が発生しているように感じたら真っ先にこのファイルをチェックしてください。&lt;br /&gt;
&lt;br /&gt;
毎時・毎日・毎週のスナップショットに問題がある場合、おそらく cronie サービス (もしくはその他の cron デーモン) が動いていなかったのが原因だということが多くあります。&lt;br /&gt;
&lt;br /&gt;
===IO エラー===&lt;br /&gt;
スナップショットを作成しようとすると IO エラーが表示される場合、スナップショットを作成しようとしたサブボリュームと関連付けられている [https://bbs.archlinux.org/viewtopic.php?id=164404 .snapshots] ディレクトリもサブボリュームになっていることを確認してください。&lt;br /&gt;
&lt;br /&gt;
また、{{ic|.snapshots}} の所有者が root になっていない可能性もあります ({{ic|/var/log/snapper.log}} に {{ic|Btrfs.cc(openInfosDir):219 - .snapshots must have owner root}} というエラーが出力されます)。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
* [http://snapper.io/ Snapper ホームページ]&lt;br /&gt;
* [https://en.opensuse.org/Portal:Snapper openSUSE Snapper ポータル]&lt;br /&gt;
* [https://btrfs.wiki.kernel.org/index.php/Main_Page Btrfs ホームページ]&lt;br /&gt;
* [https://www.linux.com/news/enterprise/systems-management/878490-snapper-suses-ultimate-btrfs-snapshot-manager/ Linux.com: Snapper: SUSE&#039;s Ultimate Btrfs Snapshot Manager]&lt;/div&gt;</summary>
		<author><name>Funcrab</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Snapper&amp;diff=23252</id>
		<title>Snapper</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Snapper&amp;diff=23252"/>
		<updated>2022-01-16T04:20:48Z</updated>

		<summary type="html">&lt;p&gt;Funcrab: /* {{ic|/}} を {{ic|@}} のスナップショットに復元 */ mountコマンド例を追加&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ファイルシステム]]&lt;br /&gt;
[[en:Snapper]]&lt;br /&gt;
[[zh-hans:Snapper]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|Btrfs}}&lt;br /&gt;
{{Related|mkinitcpio}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[http://snapper.io Snapper] は openSUSE の Arvin Schnell によって作られた、[[Btrfs]] のサブボリュームと [[LVM]] のボリュームのスナップショットの管理を助けるツールです。スナップショットを作成して比較したり、前のスナップショットに戻したり、自動スナップショットが行えます。&lt;br /&gt;
&lt;br /&gt;
==インストール==&lt;br /&gt;
安定版は {{Pkg|snapper}} パッケージからインストールできます。開発版は {{AUR|snapper-git}} パッケージで利用可能です。&lt;br /&gt;
&lt;br /&gt;
GUI は {{AUR|snapper-gui-git}} パッケージでインストールすることができます。&lt;br /&gt;
&lt;br /&gt;
==新しい設定の作成==&lt;br /&gt;
&lt;br /&gt;
Btrfs サブボリュームで Snapper の設定を作成する前に、あらかじめサブボリュームが作成されている必要があります。サブボリュームが存在しない場合、Snapper の設定をするまえに[[Btrfs#サブボリュームを作成する|サブボリュームを作成]]してください。&lt;br /&gt;
&lt;br /&gt;
Btrfs サブボリュームが {{ic|&#039;&#039;/path/to/subvolume&#039;&#039;}} に存在していて、{{ic|&#039;&#039;config&#039;&#039;}} という名前で新しく Snapper の設定を作るには:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; create-config &#039;&#039;/path/to/subvolume&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
上記のコマンドを実行すると:&lt;br /&gt;
*{{ic|/etc/snapper/config-templates}} にあるデフォルトのテンプレートに基づいて {{ic|/etc/snapper/configs/&#039;&#039;config&#039;&#039;}} に設定ファイルが作成されます。&lt;br /&gt;
*{{ic|&#039;&#039;/path/to/subvolume&#039;&#039;/.snapshots}} にサブボリュームが作成されてスナップショットが保存されます。スナップショットのパスは {{ic|&#039;&#039;/path/to/subvolume&#039;&#039;/.snapshots/&#039;&#039;#&#039;&#039;/snapshot}} になります ({{ic|&#039;&#039;#&#039;&#039;}} はスナップショット番号です)。&lt;br /&gt;
*{{ic|/etc/conf.d/snapper}} の {{ic|SNAPPER_CONFIGS}} に {{ic|&#039;&#039;config&#039;&#039;}} が追加されます。&lt;br /&gt;
&lt;br /&gt;
例えば、{{ic|/}} にマウントされたサブボリュームの設定ファイルを作成する場合:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c root create-config /&lt;br /&gt;
&lt;br /&gt;
この時点で、設定は有効になっています。[[cron]] デーモンが動作している場合、snapper は[[#自動タイムラインスナップショット|自動タイムラインスナップショット]]を作成します。[[cron]] デーモンを使っていない場合、systemd サービスとタイマーを使用する必要があります。[[#有効化/無効化]]を見てください。&lt;br /&gt;
&lt;br /&gt;
設定について詳しくは {{ic|snapper-configs}} の [[man ページ]]を参照。&lt;br /&gt;
&lt;br /&gt;
== スナップショットの作成 ==&lt;br /&gt;
&lt;br /&gt;
=== 自動タイムラインスナップショット ===&lt;br /&gt;
&lt;br /&gt;
Snapper では毎時・毎日・毎月・毎年に保存するスナップショットの数を設定できるスナップショットタイムラインを作成することができます。デフォルトでは1時間毎にスナップショットが取得されます。そして1日1回、タイムラインのクリーンアップアルゴリズムによって&amp;quot;古くなって要らなくなった&amp;quot;スナップショットを削除します。&lt;br /&gt;
&lt;br /&gt;
==== 有効化/無効化 ====&lt;br /&gt;
&lt;br /&gt;
[[cron]] デーモンが動作している場合、自動タイムラインスナップショットは自動的に起動します。無効化するには、サブボリュームに存在する設定ファイルを編集して以下を設定してください:&lt;br /&gt;
&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;TIMELINE_CREATE=&amp;quot;no&amp;quot;&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
[[cron]] デーモンを使っていない場合、パッケージに含まれている systemd ユニットを使うことができます。{{ic|snapper-timeline.timer}} を[[起動]]・[[有効化]]することで自動タイムラインスナップショットが開始されます。さらに、{{ic|snapper-cleanup.timer}} を[[起動]]・[[有効化]]すると定期的に古いスナップショットが消去されます。&lt;br /&gt;
&lt;br /&gt;
{{Note|cron デーモンと有効化された systemd ユニットがともに動作すると、重複したスナップショットが作成される結果になる場合があります。systemd ユニットを使いつつ cron 側を無効にできるかもしれない一つの手法に、[[pacman]] の [[pacman#インストールさせないファイルを設定|NoExtract]] および [[pacman#アップグレードさせないファイルを設定|NoUpgrade]] を使い、snapper のパッケージの cron ファイルをインストールしない方法があります。[https://unix.stackexchange.com/questions/425570/snapper-has-recently-started-performing-duplicate-snapshots-each-hour] を見てください。}}&lt;br /&gt;
&lt;br /&gt;
==== スナップショットのリミットの設定 ====&lt;br /&gt;
&lt;br /&gt;
デフォルト設定では、毎時間10個、毎日10個、毎月10個、毎年10個のスナップショットが保存されます。{{ic|/}} など頻繁にサブボリュームに変更を加える場合は、この設定を変更したほうが良いでしょう。[[#ドライブの負担を抑える]]を見て下さい。&lt;br /&gt;
&lt;br /&gt;
以下は、5時間、毎日7個のスナップショットだけを維持して、毎月・毎年は保存しない設定の例です:&lt;br /&gt;
{{hc|head=/etc/snapper/configs/&#039;&#039;config&#039;&#039;|output=&lt;br /&gt;
TIMELINE_MIN_AGE=&amp;quot;1800&amp;quot;&lt;br /&gt;
TIMELINE_LIMIT_HOURLY=&amp;quot;5&amp;quot;&lt;br /&gt;
TIMELINE_LIMIT_DAILY=&amp;quot;7&amp;quot;&lt;br /&gt;
TIMELINE_LIMIT_WEEKLY=&amp;quot;0&amp;quot;&lt;br /&gt;
TIMELINE_LIMIT_MONTHLY=&amp;quot;0&amp;quot;&lt;br /&gt;
TIMELINE_LIMIT_YEARLY=&amp;quot;0&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== スナップショットとクリーンアップの頻度を変更する ====&lt;br /&gt;
&lt;br /&gt;
systemd タイマーを使っている場合、タイマーを[[Systemd#ユニットファイルの編集|編集]]してスナップショットの頻度を変更できます。&lt;br /&gt;
&lt;br /&gt;
例えば、{{ic|snapper-timeline.timer}} を編集して以下のようにすることで5分毎にスナップショットが作成されます:&lt;br /&gt;
&lt;br /&gt;
 [Timer]&lt;br /&gt;
 OnCalendar=&lt;br /&gt;
 OnCalendar=*:0/5&lt;br /&gt;
&lt;br /&gt;
{{Note|設定パラメータ {{ic|TIMELINE_LIMIT_HOURLY}} は上記の設定に関連付けられています。上の例では5分毎にスナップショットが作成されるようになります。}}&lt;br /&gt;
&lt;br /&gt;
{{ic|snapper-cleanup.timer}} を編集するときは {{ic|OnUnitActiveSec}} を変更してください。1時間毎に古いスナップショットを消去するには、以下を追加:&lt;br /&gt;
&lt;br /&gt;
 [Timer]&lt;br /&gt;
 OnUnitActiveSec=1h&lt;br /&gt;
&lt;br /&gt;
詳しくは [[Systemd/タイマー]]や [[Systemd#ドロップインファイル]]を参照。&lt;br /&gt;
&lt;br /&gt;
=== 手動スナップショット ===&lt;br /&gt;
&lt;br /&gt;
==== シンプルなスナップショット ====&lt;br /&gt;
&lt;br /&gt;
デフォルトでは Snapper は他のスナップショットと特別な関係を持たない、単純なスナップショットを作成します。&lt;br /&gt;
&lt;br /&gt;
手動でサブボリュームのスナップショットを作成するには、以下のコマンドを実行:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; create --description &#039;&#039;desc&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
上記のコマンドはクリーンアップアルゴリズムを使用しないため、スナップショットは明示的に[[#スナップショットの削除|削除]]するまでずっと残り続けます。&lt;br /&gt;
&lt;br /&gt;
クリーンアップアルゴリズムを設定するには {{ic|create}} の後に {{ic|-c}} フラグを使用して {{ic|number}}, {{ic|timeline}}, {{ic|pre}}, {{ic|post}} のどれかを選択してください。{{ic|number}} は設定ファイルで指定された番号にあわせて定期的にスナップショットを削除します。例えば、{{ic|number}} アルゴリズムを使用するスナップショットを作成するには:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; create -c number&lt;br /&gt;
&lt;br /&gt;
{{ic|timeline}} スナップショットについては[[#自動タイムラインスナップショット|自動タイムラインスナップショット]]を、{{ic|pre}} と {{ic|post}} については[[#事前事後のスナップショット|事前事後のスナップショット]]を見てください。&lt;br /&gt;
&lt;br /&gt;
==== 事前事後のスナップショット ====&lt;br /&gt;
&lt;br /&gt;
シンプルなスナップショットだけでなく、Snapper では事前事後のスナップショットを作成できます。事前 (&#039;&#039;pre&#039;&#039;) スナップショットには必ず対応する事後 (&#039;&#039;post&#039;&#039;) スナップショットが存在します。このペアによってシステムに変更を加える前後のスナップショットを作成することができます。&lt;br /&gt;
&lt;br /&gt;
事前事後のスナップショットを作成するには、まず事前スナップショットを作成:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; create -t pre -p&lt;br /&gt;
&lt;br /&gt;
上記のコマンドでスナップショット番号が出力されます。&lt;br /&gt;
&lt;br /&gt;
それからシステムに何らかの変更を加えます (例えば新しいプログラムをインストールしたり、ソフトウェアをアップグレードするなど)。&lt;br /&gt;
&lt;br /&gt;
次に事後のスナップショットを作成:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; create -t post --pre-number &#039;&#039;#&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|&#039;&#039;#&#039;&#039;}} は事前スナップショットの番号に置き換えてください。&lt;br /&gt;
&lt;br /&gt;
{{ic|create}} に {{ic|--command}} フラグを指定して、コマンドをラップすることもできます:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; create --command &#039;&#039;cmd&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|&#039;&#039;cmd&#039;&#039;}} は事前事後のスナップショットを作成する間に実行したいコマンドに置き換えてください。&lt;br /&gt;
&lt;br /&gt;
[[#pacman のトランザクションをスナップショットで記録|pacman のトランザクションをスナップショットで記録]]も見てください。&lt;br /&gt;
&lt;br /&gt;
=== 起動時にスナップショットを作成 ===&lt;br /&gt;
&lt;br /&gt;
snapper で {{ic|root}} 設定のスナップショットを作成するには {{ic|snapper-boot.timer}} を[[有効化]]してください。&lt;br /&gt;
&lt;br /&gt;
== スナップショットの確認 ==&lt;br /&gt;
&lt;br /&gt;
作成されたスナップショットを確認するには:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; list&lt;br /&gt;
&lt;br /&gt;
== 設定の確認 ==&lt;br /&gt;
&lt;br /&gt;
全ての[[#新しい設定の作成|設定]]を確認するには:&lt;br /&gt;
&lt;br /&gt;
 # snapper list-configs&lt;br /&gt;
&lt;br /&gt;
== スナップショットの削除 ==&lt;br /&gt;
&lt;br /&gt;
スナップショット番号 {{ic|&#039;&#039;#&#039;&#039;}} を削除するには:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; delete &#039;&#039;#&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
一度に複数のスナップショットを削除できます。例えば、root 設定の65と70のスナップショットを削除するには:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c root delete 65 70&lt;br /&gt;
&lt;br /&gt;
{{Note|事前スナップショットを削除した場合、事後スナップショットも一緒に削除してください。逆も然りです。}}&lt;br /&gt;
&lt;br /&gt;
==root 以外のユーザーでアクセス==&lt;br /&gt;
設定は root ユーザーによって作成され、デフォルトでは、root だけが設定を確認したり変更できます。&lt;br /&gt;
&lt;br /&gt;
特定のユーザーからもスナップショットを確認できるようにしたいときは、{{ic|/etc/snapper/configs/&#039;&#039;config&#039;&#039;}} ファイルの {{ic|ALLOW_USERS}} の値を変更してください。そうすれば通常ユーザーでも {{ic|snapper -c &#039;&#039;config&#039;&#039;list}} を実行できるようになります。&lt;br /&gt;
&lt;br /&gt;
さらに、ユーザーを使って {{ic|.snapshots}} ディレクトリを閲覧できるようにしたい、それでいてディレクトリの所有者は root のままにしておきたいということが考えられます。そのような場合、使用したいユーザーが属しているグループに、グループ所有者を変更してください。例えば {{ic|users}}　を使う場合:&lt;br /&gt;
&lt;br /&gt;
 # chmod a+rx .snapshots&lt;br /&gt;
 # chown :users .snapshots&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== pacman のトランザクションをスナップショットで記録 ===&lt;br /&gt;
&lt;br /&gt;
pacman の操作時に自動的にスナップショットを作成するためのパッケージが複数存在します:&lt;br /&gt;
&lt;br /&gt;
* {{App|pacupg|Btrfs のスナップショットでパッケージと AUR のアップグレードを記録して、簡単にロールバックできるようにするスクリプト。|https://github.com/crossroads1112/bin/tree/master/pacupg|{{AUR|pacupg}}}}&lt;br /&gt;
* {{App|snap-pac|openSUSE の YaST のように自動的に[[#事前事後のスナップショット|事前事後のスナップショット]]を作成します。[[Pacman#フック]]を使用しています。|https://github.com/wesbarnett/snap-pac|{{Pkg|snap-pac}}}}&lt;br /&gt;
* {{App|snap-pac-grub|{{pkg|snap-pac}} でスナップショットが作成された後に {{Pkg|grub-btrfs}} 用に GRUB エントリを更新します。[[Pacman#フック]]を使用します。||{{aur|snap-pac-grub}}}}&lt;br /&gt;
* {{App|snp|シェルコマンドの実行前後に snapper でスナップショットを取るラッパー。例: {{ic|$ snp pacman -Syu}}|https://gist.github.com/erikw/5229436|}}&lt;br /&gt;
&lt;br /&gt;
=== boot パーティションのバックアップ ===&lt;br /&gt;
&lt;br /&gt;
{{ic|/boot}} パーティションが btrfs ファイルシステム上に存在しない場合 (例: [[ESP]])、snapper でバックアップすることはできません。フックを使用してカーネルのアップデート時に boot パーティションを自動的に btrfs ファイルシステムにコピーさせることはできます。{{Pkg|snap-pac}} でも上手くバックアップされます。&lt;br /&gt;
{{hc|1=/etc/pacman.d/hooks/50-bootbackup.hook|2=&lt;br /&gt;
[Trigger]&lt;br /&gt;
Operation = Upgrade&lt;br /&gt;
Operation = Install&lt;br /&gt;
Operation = Remove&lt;br /&gt;
Type = Path&lt;br /&gt;
Target = usr/lib/modules/*/vmlinuz&lt;br /&gt;
&lt;br /&gt;
[Action]&lt;br /&gt;
Depends = rsync&lt;br /&gt;
Description = Backing up /boot...&lt;br /&gt;
When = PostTransaction&lt;br /&gt;
Exec = /usr/bin/rsync -a --delete /boot /.bootbackup&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== 外部ドライブに差分バックアップ ===&lt;br /&gt;
&lt;br /&gt;
以下のパッケージは {{ic|btrfs send}} と {{ic|btrfs receive}} を使用して外部ドライブにバックアップを差分で送信します:&lt;br /&gt;
&lt;br /&gt;
* {{App|buttersink|Btrfs スナップショットの rsync のようなもので、スナップショットの差分だけを送信することで自動的に同期を最適化します。|https://github.com/AmesCornish/buttersink.git|{{AUR|buttersink-git}}}}&lt;br /&gt;
* {{App|snap-sync|snapper スナップショットを使用して外部ドライブにバックアップします。|https://github.com/wesbarnett/snap-sync.git|{{Pkg|snap-sync}}}}&lt;br /&gt;
* {{App|snapsync|snapper 用の同期ツール。|https://github.com/doudou/snapsync|{{AUR|ruby-snapsync}}}}&lt;br /&gt;
&lt;br /&gt;
===推奨ファイルシステムレイアウト===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Note|1=以下のレイアウトは &#039;&#039;&#039;{{ic|snapper rollback}} を使用することは想定していません&#039;&#039;&#039;が、[[#/ を @ のスナップショットに復元|/ を @ のスナップショットに復元]]した時の問題を軽減します。[https://bbs.archlinux.org/viewtopic.php?id=194491 フォーラムスレッド] を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
以下は {{ic|/}} を簡単に復元できるようにするための推奨ファイルシステムレイアウトです。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ ファイルシステムレイアウト&lt;br /&gt;
! サブボリューム !! マウントポイント&lt;br /&gt;
|-&lt;br /&gt;
| @ || /&lt;br /&gt;
|-&lt;br /&gt;
| @home || /home&lt;br /&gt;
|-&lt;br /&gt;
| @snapshots || /.snapshots&lt;br /&gt;
|-&lt;br /&gt;
| @var_log || /var/log&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 subvolid=5&lt;br /&gt;
   |&lt;br /&gt;
   ├── @ -|&lt;br /&gt;
   |     含まれるディレクトリ:&lt;br /&gt;
   |       ├── /usr&lt;br /&gt;
   |       ├── /bin&lt;br /&gt;
   |       ├── /.snapshots&lt;br /&gt;
   |       ├── ...&lt;br /&gt;
   |&lt;br /&gt;
   ├── @home&lt;br /&gt;
   ├── @snapshots&lt;br /&gt;
   ├── @var_log&lt;br /&gt;
   └── @...&lt;br /&gt;
&lt;br /&gt;
{{ic|/.snapshots}} は {{ic|@snapshots}} のマウントポイントです。{{ic|@...}} は {{ic|/}} にマウントするサブボリューム ({{ic|@}}) とは別に保存したいサブボリュームになります。{{ic|/}} のスナップショットを作成するとき、他のサブボリュームはスナップショットに含まれません。ただし、別の snapper 設定を作成することで他のサブボリュームもスナップショットで記録できます。システムを {{ic|/}} のスナップショットの時点まで戻したいと思ったときに、他のサブボリュームには影響が及びません。&lt;br /&gt;
&lt;br /&gt;
例えば、{{ic|/}} をスナップショット時に戻したいが {{ic|/home}} は最新の状態のままにしたい場合、サブボリュームを作成して {{ic|/home}} にマウントしてください。詳しくは [[Btrfs#サブボリュームをマウントする]]を参照。&lt;br /&gt;
&lt;br /&gt;
上記のレイアウトは snapper ユーティリティで定期的に {{ic|/}} のスナップショットが作成できるのと同時に、起動できなくなった場合に Arch のライブ CD から {{ic|/}} を簡単に復元することができます。&lt;br /&gt;
&lt;br /&gt;
その場合、初期設定をしたら snapper に特別な設定をする必要はありません。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* サブボリュームが {{ic|@}} 下に入れ子になっていても、{{ic|/}} のスナップショットには含まれません。{{ic|/}} にマウントしているサブボリュームのスナップショットを保存したい場合は snapper でサブボリュームの設定を行ってください。&lt;br /&gt;
* [[Btrfs#スワップファイル|Btrfs の制限]]により、スナップショットされたボリュームは[[スワップ#スワップファイル|スワップファイル]]を含むことができません。スワップファイルを別のサブボリュームに置くか、[[スワップ#スワップパーティション|スワップパーティション]]を作成してください。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
====snapper の設定とマウントポイント====&lt;br /&gt;
&lt;br /&gt;
{{ic|/.snapshots}} がマウントされていないこと、フォルダとして存在しないことを確認してください:&lt;br /&gt;
 # umount /.snapshots&lt;br /&gt;
 # rm -r /.snapshots&lt;br /&gt;
&lt;br /&gt;
それから {{ic|/}} の[[#新しい設定の作成|新しい設定を作成]]します。&lt;br /&gt;
&lt;br /&gt;
そして {{ic|@snapshots}} を {{ic|/.snapshots}} に[[マウント]]してください。例えば、ファイルシステムが {{ic|/dev/sda1}} に存在する場合:&lt;br /&gt;
 # mount -o subvol=@snapshots /dev/sda1 /.snapshots&lt;br /&gt;
マウントを永続化させるには、[[fstab]] にエントリを作成します。&lt;br /&gt;
&lt;br /&gt;
もしくは fstab エントリが既に存在する場合、スナップショットのサブボリュームを再マウントします:&lt;br /&gt;
 # mount -a&lt;br /&gt;
&lt;br /&gt;
フォルダには {{ic|750}} の[[ファイルのパーミッションと属性#数字を使う方法|パーミッション]]を設定してください。&lt;br /&gt;
&lt;br /&gt;
snapper が作成するスナップショットは全て {{ic|@}} サブボリュームの外に保存されるため、snapper のスナップショットを削除しなくても {{ic|@}} を簡単に置き換えることができます。&lt;br /&gt;
&lt;br /&gt;
===={{ic|/}} を {{ic|@}} のスナップショットに復元 ====&lt;br /&gt;
&lt;br /&gt;
snapper のスナップショットを使って {{ic|/}} をリストアしたくなったら、まずは Arch Linux のライブ USB/CD を起動します。&lt;br /&gt;
&lt;br /&gt;
トップレベルのサブボリューム (subvolid=5) を[[マウント]]してください。{{ic|subvolid}} マウントフラグは省略します。/dev/sda2 をマウントする例：&lt;br /&gt;
&lt;br /&gt;
 # mount -o subvolid=5 /dev/sda2 /mnt&lt;br /&gt;
&lt;br /&gt;
{{ic|/mnt/@snapshots/*/info.xml}} から復元したいスナップショットを確認します:&lt;br /&gt;
{{Tip|{{ic|less}} を使ってファイルを確認できます:&lt;br /&gt;
 # cat /mnt/@snapshots/*/info.xml {{!}} less&lt;br /&gt;
次のページを見たいときは {{ic|space}} を、終了するときは {{ic|q}} を使用します。}}&lt;br /&gt;
&lt;br /&gt;
{{ic|&amp;lt;description&amp;gt;}} タグと {{ic|&amp;lt;date&amp;gt;}} タグを見て、リストアしたいスナップショットが確認できたら、{{ic|&amp;lt;num&amp;gt;}} の番号をメモしてください。&lt;br /&gt;
&lt;br /&gt;
そして {{ic|@}} を他の場所 (例: {{ic|/@.broken}}) にして現在のシステムのコピーを保存します。もしくは {{ic|btrfs subvolume delete}} で {{ic|@}} を削除します。&lt;br /&gt;
&lt;br /&gt;
読み取り専用のスナップショットから読み書き可能なスナップショットを作成:&lt;br /&gt;
&lt;br /&gt;
 # btrfs subvol snapshot /mnt/@snapshots/&#039;&#039;#&#039;&#039;/snapshot /mnt/@&lt;br /&gt;
&lt;br /&gt;
{{ic|&#039;&#039;#&#039;&#039;}} は復元したい snapper のスナップショットの番号に置き換えてください。これで {{ic|/}} は前の状態に戻ります。再起動してください。&lt;br /&gt;
&lt;br /&gt;
===スナップショットからファイルを削除===&lt;br /&gt;
&lt;br /&gt;
過去のスナップショットから特定のファイルやフォルダを削除したい場合、[https://pypi.python.org/pypi/snapperS snapperS] というスクリプトが存在します。&lt;br /&gt;
&lt;br /&gt;
スクリプトを使わずにファイルを削除したい場合、以下のコマンドを実行して [https://unix.stackexchange.com/a/149933/3587 スナップショットのサブボリュームを読み書き可能] にする必要があります:&lt;br /&gt;
&lt;br /&gt;
 # btrfs property set /path/to/.snapshots/&amp;lt;snapshot_num&amp;gt;/snapshot ro false&lt;br /&gt;
&lt;br /&gt;
{{ic|1=ro=false}} となっていることを確認:&lt;br /&gt;
&lt;br /&gt;
{{hc|# btrfs property get /path/to/.snapshots/&amp;lt;snapshot_num&amp;gt;/snapshot|2=ro=false}}&lt;br /&gt;
&lt;br /&gt;
これで {{ic|/path/to/.snapshots/&amp;lt;snapshot_num&amp;gt;/snapshot}} のファイルは通常通りに編集することが可能になります。&lt;br /&gt;
&lt;br /&gt;
=== ドライブの負担を抑える ===&lt;br /&gt;
&lt;br /&gt;
頻繁に変更が加わるファイルシステム (例えば多数のシステムアップデートが行われる {{ic|/}} など) で長期間にわたって頻繁にスナップショットを取得すると動作がかなり遅くなることがあります。以下のようにすることで遅くなるのを回避できます:&lt;br /&gt;
* スナップショットを作成する価値がない {{ic|/var/cache/pacman/pkg}}, {{ic|/var/abs}}, {{ic|/var/tmp}}, {{ic|/srv}} などのサブボリュームを[[Btrfs#サブボリュームを作成する|作成]]する。&lt;br /&gt;
* [[#自動タイムラインスナップショット|自動タイムラインスナップショット]]を使う場合に、毎時・毎日・毎周・毎年のスナップショットのデフォルト設定を変更する。&lt;br /&gt;
&lt;br /&gt;
==== updatedb ====&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、{{ic|updatedb}} は snapper によって作成された {{ic|.snapshots}} ディレクトリのインデックスも作成してしまい、スナップショットが大量にある場合、深刻な遅延が発生したりメモリが異常に消費される原因になります。以下のように設定ファイルを編集することでインデックスを作成しないように {{ic|updatedb}} を設定できます:&lt;br /&gt;
{{hc|/etc/updatedb.conf|2=PRUNENAMES = &amp;quot;.snapshots&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
=== ログファイルの保持 ===&lt;br /&gt;
&lt;br /&gt;
{{ic|/var/log}} のサブボリュームを作成して {{ic|/}} のスナップショットに含まれないようにすることを推奨します。{{ic|/}} のスナップショットを復元したときにログファイルまで前の状態に戻ってしまうことがなくなり、トラブルシューティングが楽になります。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
===Snapper のログ===&lt;br /&gt;
Snapper は全ての活動を {{ic|/var/log/snapper.log}} に書き出します。何か問題が発生しているように感じたら真っ先にこのファイルをチェックしてください。&lt;br /&gt;
&lt;br /&gt;
毎時・毎日・毎週のスナップショットに問題がある場合、おそらく cronie サービス (もしくはその他の cron デーモン) が動いていなかったのが原因だということが多くあります。&lt;br /&gt;
&lt;br /&gt;
===IO エラー===&lt;br /&gt;
スナップショットを作成しようとすると IO エラーが表示される場合、スナップショットを作成しようとしたサブボリュームと関連付けられている [https://bbs.archlinux.org/viewtopic.php?id=164404 .snapshots] ディレクトリもサブボリュームになっていることを確認してください。&lt;br /&gt;
&lt;br /&gt;
また、{{ic|.snapshots}} の所有者が root になっていない可能性もあります ({{ic|/var/log/snapper.log}} に {{ic|Btrfs.cc(openInfosDir):219 - .snapshots must have owner root}} というエラーが出力されます)。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
* [http://snapper.io/ Snapper ホームページ]&lt;br /&gt;
* [https://en.opensuse.org/Portal:Snapper openSUSE Snapper ポータル]&lt;br /&gt;
* [https://btrfs.wiki.kernel.org/index.php/Main_Page Btrfs ホームページ]&lt;br /&gt;
* [https://www.linux.com/news/enterprise/systems-management/878490-snapper-suses-ultimate-btrfs-snapshot-manager/ Linux.com: Snapper: SUSE&#039;s Ultimate Btrfs Snapshot Manager]&lt;/div&gt;</summary>
		<author><name>Funcrab</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Wayland&amp;diff=23218</id>
		<title>Wayland</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Wayland&amp;diff=23218"/>
		<updated>2022-01-14T15:43:06Z</updated>

		<summary type="html">&lt;p&gt;Funcrab: /* winit */ 誤字訂正（XINIT⇒WINIT）&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:グラフィカルユーザーインターフェイス]]&lt;br /&gt;
[[es:Wayland]]&lt;br /&gt;
[[en:Wayland]]&lt;br /&gt;
[[fr:Wayland]]&lt;br /&gt;
[[pt:Wayland]]&lt;br /&gt;
[[ru:Wayland]]&lt;br /&gt;
[[zh-hans:Wayland]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|Kernel Mode Setting}}&lt;br /&gt;
{{Related|Xorg}}&lt;br /&gt;
{{Related|スクリーンショットの取得#Wayland}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[https://wayland.freedesktop.org/ Wayland] はディスプレイサーバープロトコルです。[[Xorg|X Window System]] の後継となることを目指しています。[[Wikipedia:Wayland_(display_server_protocol)#Differences_between_Wayland_and_X|Wikipedia に Wayland と Xorg の比較]] が掲載されています。&lt;br /&gt;
&lt;br /&gt;
Wayland プロトコルを使用するディスプレイサーバは、[[Wikipedia:ja:コンポジット型ウィンドウマネージャ|コンポジット型ウィンドウマネージャ]] としても機能するため、&#039;&#039;&#039;コンポジタ&#039;&#039;&#039; と呼ばれます。以下に[[#コンポジタ|Wayland コンポジタのリスト]]を示します。&lt;br /&gt;
&lt;br /&gt;
レガシーな [[X11]] アプリケーションをシームレスに動かすための後方互換性として、[[#XWayland|XWayland]] を使うことができます。これは Wayland に X サーバを提供します。&lt;br /&gt;
&lt;br /&gt;
== 要件 ==&lt;br /&gt;
ほとんどの Wayland コンポジタは [[KMS]] を利用しているシステムで動作します。&lt;br /&gt;
&lt;br /&gt;
また、Wayland はただのライブラリなので、それだけでは使い物になりません。X サーバーを置き換えるには、([[Weston]] や [[Sway]] などの) コンポジタあるいは ([[GNOME]] や [[KDE]] など) デスクトップ環境が必要です。&lt;br /&gt;
&lt;br /&gt;
GPU ドライバーと Wayland コンポジタは同一のバッファ API に対応している場合に互換性があります。主要な API は2つ存在します: [[Wikipedia:Generic Buffer Management|GBM]] と [https://www.phoronix.com/scan.php?page=news_item&amp;amp;px=XDC2016-Device-Memory-API EGLStreams] です。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! バッファ API !! GPU ドライバーのサポート !! Wayland コンポジタのサポート&lt;br /&gt;
|-&lt;br /&gt;
| GBM || [[NVIDIA]] &amp;lt; 495* 以外の全てのドライバー || 全てのコンポジタ&lt;br /&gt;
|-&lt;br /&gt;
| EGLStreams || [[NVIDIA]] || [[GNOME]], [[KDE]] [[Weston#EGLstream_support_(for_proprietary_Nvidia_Driver)|Weston]] (with a third-party patch)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
: *: Nvidia &amp;gt;= 495 は EGLStreams と GBM[https://www.phoronix.com/scan.php?page=news_item&amp;amp;px=NVIDIA-495.44-Linux-Driver] の両方をサポートします。&lt;br /&gt;
&lt;br /&gt;
== コンポジタ ==&lt;br /&gt;
&lt;br /&gt;
タイル型とスタック型の違いは、[[ウィンドウマネージャ#種類]]を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== タイル型 ===&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Cagebreak]]|cage をベースに、[[ratpoison]] にインスパイアされています。|https://github.com/project-repo/cagebreak|{{AUR|cagebreak}} {{AUR|cagebreak-bin}}}}&lt;br /&gt;
* {{App|Cardboard|スクロールコンポジタ。wlroots をベースに、PaperWM にインスパイアされています。|https://gitlab.com/cardboardwm/cardboard|{{AUR|cardboard-git}}}}&lt;br /&gt;
* {{App|dwl|wlroots ベースの [[dwm]] ライクな Wayland コンポジタ。|https://github.com/djpohly/dwl|{{AUR|dwl}}}}&lt;br /&gt;
* {{App|japokwm|wlroots ベースの、レイアウト作成を中心とした動的な Wayland タイリングコンポジタ。|https://github.com/werererer/japokwm|{{AUR|japokwm-git}}}}&lt;br /&gt;
* {{App|[[Qtile]]|Python で記述および設定されたフル機能のハッキング可能なタイリングウィンドウマネージャーと Wayland コンポジタ。|https://github.com/qtile/qtile|{{Pkg|qtile}}}}&lt;br /&gt;
* {{App|river|dwm [[bspwm]] にインスパイアされた動的なタイル型 Wayland コンポジタ。|https://github.com/ifreund/river|{{AUR|river-git}}}}&lt;br /&gt;
* {{App|[[Sway]]|wlroots ベースの [[i3]] 互換 Wayland コンポジタ。|https://github.com/swaywm/sway|{{Pkg|sway}}}}&lt;br /&gt;
* {{App|[[Velox]]|swc ベースのシンプルなウィンドウマネージャです。[[dwm]] と [[xmonad]] の影響を受けています。|https://github.com/michaelforney/velox|{{AUR|velox}}}}&lt;br /&gt;
* {{App|waymonad|[[Haskell]] で書かれた xmonad にインスパイアされた Wayland コンジタ。|https://github.com/waymonad/waymonad}}&lt;br /&gt;
* {{App|newm|ラップトップとタッチパッドを念頭に置いて作成された Wayland コンポジタ|https://github.com/jbuchermn/newm/|{{AUR|newm-git}}}}&lt;br /&gt;
&lt;br /&gt;
=== スタック型 ===&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Enlightenment]]|[[Enlightenment#Enlightenment を手動で起動する]] を参照してください。詳細: [https://git.enlightenment.org/core/enlightenment.git/tree/README] [https://www.enlightenment.org/about-wayland]|https://www.enlightenment.org/|{{Pkg|enlightenment}}}}&lt;br /&gt;
* {{App|Greenfield|Web ブラウザーで実行され、リモートアプリケーションを表示できます。|https://greenfield.app/}}&lt;br /&gt;
* {{App|Grefsen|最小限のデスクトップ環境を提供する Qt/Wayland コンポジタ。|https://github.com/ec1oud/grefsen}}&lt;br /&gt;
* {{App|hikari|FreeBSD で活発に開発されている [[cwm]] にインスパイアされた wlroots ベースのコンポジタ。Linux もサポートしている。|https://hikari.acmelabs.space/|{{AUR|hikari}}}}&lt;br /&gt;
* {{App|KDE [[w:KWin|KWin]]|[[KDE#Starting Plasma]] を参照。|https://userbase.kde.org/KWin|{{Pkg|kwin}}}}&lt;br /&gt;
* {{App|Liri Shell|[[Liri]] の一部、しかし、QtQuick と QtCompositor を使って Wayland 用のコンポジタとして作られています。|https://github.com/lirios/shell|{{AUR|liri-shell-git}}}}&lt;br /&gt;
* {{App|labwc|Openbox にインスパイアされた wlroots ベースのコンポジタ。|https://github.com/johanmalm/labwc|{{AUR|labwc-git}}}}&lt;br /&gt;
* {{App|[[w:Mutter (software)|Mutter]]|[[GNOME#Starting]] を参照してください。|https://gitlab.gnome.org/GNOME/mutter|{{Pkg|mutter}}}}&lt;br /&gt;
* {{App|wayfire|[[Compiz]] にインスパイアされ、wlroots に基づく 3D コンポジタ。|https://wayfire.org/|{{AUR|wayfire}}}}&lt;br /&gt;
* {{App|[[Weston]]|Wayland コンポジタのリファレンス実装。|https://gitlab.freedesktop.org/wayland/weston|{{Pkg|weston}}}}&lt;br /&gt;
* {{App|wio|Plan 9 のリオデスクトップのルックアンドフィールを複製することを目的とする wlroots ベースのコンポジタ。|https://wio-project.org/}}&lt;br /&gt;
&lt;br /&gt;
=== その他 ===&lt;br /&gt;
&lt;br /&gt;
* {{App|Cage|キオスクのような単一のフルスクリーンアプリケーションを表示します。 |https://www.hjdskes.nl/projects/cage/|{{Pkg|cage}}}}&lt;br /&gt;
* {{App|Maze Compositor|Qt を使用して 3D 迷路ウィンドウをレンダリングします。|https://github.com/imbavirus/mazecompositor}}&lt;br /&gt;
* {{App|Motorcar|バーチャルリアリティを使用して 3D ウィンドウを探索する Wayland コンポジタ。|https://github.com/evil0sheep/motorcar}}&lt;br /&gt;
&lt;br /&gt;
上記のいくつかは [[ディスプレイマネージャ]] をサポートする場合があります。&lt;br /&gt;
それらがどのように開始されるかを {{ic|/usr/share/wayland-sessions/&#039;&#039;compositor&#039;&#039;.desktop}} を見て確認してください。&lt;br /&gt;
&lt;br /&gt;
== ディスプレイマネージャ ==&lt;br /&gt;
&lt;br /&gt;
Wayland コンポジタの実行をサポートした[[ディスプレイマネージャ]]は以下の表の通りです。種類の列にはディスプレイマネージャが Wayland 上での実行をサポートしているかどうかが示されています。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! 名前&lt;br /&gt;
! 種類&lt;br /&gt;
! 説明&lt;br /&gt;
|-&lt;br /&gt;
| [[GDM]]&lt;br /&gt;
| Wayland/X11 上で動作&lt;br /&gt;
| [[GNOME]] ディスプレイマネージャ。&lt;br /&gt;
|-&lt;br /&gt;
| {{AUR|greetd}}&lt;br /&gt;
| ログインデーモン&lt;br /&gt;
| 最小でありながら柔軟なログインデーモン。&lt;br /&gt;
|-&lt;br /&gt;
| [[LightDM]]&lt;br /&gt;
| Wayland/X11 上で動作 [https://github.com/CanonicalLtd/lightdm/commit/f4f681f7b4209a634b021ba731addec1e081e5c7]&lt;br /&gt;
| 様々なデスクトップに対応したディスプレイマネージャ。&lt;br /&gt;
|-&lt;br /&gt;
| {{AUR|Ly}}&lt;br /&gt;
| コンソール上で動作&lt;br /&gt;
| TUI ディスプレイマネージャ。&lt;br /&gt;
|-&lt;br /&gt;
| [[SDDM]]&lt;br /&gt;
| X11 上で動作 [https://github.com/sddm/sddm/pull/616]&lt;br /&gt;
| QML ベースのディスプレイマネージャ。&lt;br /&gt;
|-&lt;br /&gt;
| {{AUR|tbsm}}&lt;br /&gt;
| コンソール上で動作&lt;br /&gt;
| bash のみに依存するシンプルな CLI セッションランチャー。&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== GUI ライブラリ ==&lt;br /&gt;
[https://wayland.freedesktop.org/toolkits.html 公式ウェブサイト] も参照してください。&lt;br /&gt;
&lt;br /&gt;
=== GTK ===&lt;br /&gt;
&lt;br /&gt;
{{pkg|gtk3}} と {{pkg|gtk4}} パッケージは Wayland バックエンドが有効になっています。&lt;br /&gt;
&lt;br /&gt;
Wayland と X 両方のバックエンドが有効になっているとき、GTK+ ではデフォルトで Wayland バックエンドを使いますが、{{ic|GDK_BACKEND&amp;amp;#61;x11}} 環境変数を設定することで Xwayland を使うように上書きできます。&lt;br /&gt;
&lt;br /&gt;
=== Qt ===&lt;br /&gt;
&lt;br /&gt;
[[Qt]] 5 または 6 は Wayland をサポートしています。{{Pkg|qt5-wayland}} または   {{Pkg|qt6-wayland}} パッケージをインストールしてください。&lt;br /&gt;
&lt;br /&gt;
Wayland プラグインを使って Qt 5 アプリケーションを動作させるには、[https://wiki.qt.io/QtWayland#How_do_I_use_QtWayland.3F] にあるように、{{ic|1=-platform wayland}} を使用するか、[[環境変数]] {{ic|1=QT_QPA_PLATFORM=wayland}} をセットして下さい。一方、Wayland セッション上で [[X11]] を使用させるには、{{ic|1=QT_QPA_PLATFORM=xcb}} とセットします。&lt;br /&gt;
これは、{{AUR|zoom}} など、システムの Qt の実装を使用しない一部のプロプライエタリアプリケーションで必要になる場合があります。&lt;br /&gt;
&lt;br /&gt;
[[sway]] などの一部のコンポジターでは、ネイティブに実行されている Qt アプリケーションの機能が不足している場合があります。 たとえば、 [https://keepassxc.org KeepassXC] はトレイに最小化できません。 これは、アプリケーションを実行する前に {{Pkg|qt5ct}} をインストールし、 {{ic|1=QT_QPA_PLATFORMTHEME=qt5ct}} を設定することで解決できます。&lt;br /&gt;
&lt;br /&gt;
===Clutter===&lt;br /&gt;
&lt;br /&gt;
Clutter ツールキットには Wayland バックエンドがあり、Clutter を Wayland のクライアントとして動作させることが可能です。このバックエンドは {{Pkg|clutter}} パッケージで有効になっています。&lt;br /&gt;
&lt;br /&gt;
Clutter アプリを Wayland 上で動作させるには、環境変数 {{ic|CLUTTER_BACKEND&amp;amp;#61;wayland}} を設定する必要があります。&lt;br /&gt;
&lt;br /&gt;
===SDL2 ===&lt;br /&gt;
&lt;br /&gt;
SDL2 アプリケーションを Wayland 上で動作させるには、環境変数 {{ic|SDL_VIDEODRIVER&amp;amp;#61;wayland}} を設定します。&lt;br /&gt;
&lt;br /&gt;
{{Note|Wayland 未対応の古い SDL が内部に含まれたゲームでは、{{ic|1=SDL_VIDEODRIVER=wayland}} を指定すると動作が壊れる場合があります。アプリケーションを XWayland で強制的に実行するには、{{ic|1=SDL_VIDEODRIVER=x11}} を設定します。}}&lt;br /&gt;
&lt;br /&gt;
=== GLFW ===&lt;br /&gt;
&lt;br /&gt;
GLFW で Wayland バックエンドを使用するには、({{Pkg|glfw-x11}} の代わりに) {{Pkg|glfw-wayland}} パッケージをインストールしてください。&lt;br /&gt;
&lt;br /&gt;
=== GLEW ===&lt;br /&gt;
&lt;br /&gt;
{{AUR|glew-wayland}} パッケージは現在のところ、多くの GLEW ベースのアプリケーションでまだ動作しませんので、唯一の選択肢は Xwayland で {{Pkg|glew}} を使うことです。{{Bug|62713}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
===EFL===&lt;br /&gt;
&lt;br /&gt;
EFL は Wayland を完全にサポートしています。Wayland で EFL アプリケーションを動かすには、Wayland の [https://wayland.freedesktop.org/efl.html プロジェクトページ] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
=== winit ===&lt;br /&gt;
&lt;br /&gt;
[https://github.com/rust-windowing/winit Winit] は [[Rust]] で書かれたウィンドウ管理ライブラリです。デフォルトでは Wayland が X11 より優先される仕様ですが、明示的に設定することもできます。{{ic|WINIT_UNIX_BACKEND}} 環境変数の値を {{ic|x11}} や {{ic|wayland}} としてください。&lt;br /&gt;
&lt;br /&gt;
=== Electron ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|electron}} ベースのアプリケーションを Wayland でネイティブに使用するには、{{ic|${XDG_CONFIG_HOME}/electron-flags.conf}} を作成または編集して、次のオプションを追加します。&lt;br /&gt;
&lt;br /&gt;
{{hc|1=~/.config/electron-flags.conf|2=&lt;br /&gt;
--enable-features=UseOzonePlatform&lt;br /&gt;
--ozone-platform=wayland&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
古いバージョンの electron には独自の {{ic|electron-flags.conf}} ファイルが必要であることに注意してください。&#039;&#039;electron12&#039;&#039; パッケージがインストールされている場合は、次のようにします。&lt;br /&gt;
&lt;br /&gt;
 $ ln -s electron-flags.conf ~/.config/electron12-flags.conf&lt;br /&gt;
&lt;br /&gt;
{{ic|${XDG_CONFIG_HOME} }} 内にコピーしてください、または、異なる {{Pkg|electron}} バージョンで異なるランタイムオプションを使用したい場合は、別の {{ic|${XDG_CONFIG_HOME}/electron12-flags.conf}} ファイルを使用する必要があります。&lt;br /&gt;
&lt;br /&gt;
{{Tip|Electron-flags をグローバルに上書きする代わりに、[[デスクトップエントリ]] を変更するとよいでしょう。}}&lt;br /&gt;
&lt;br /&gt;
== XWayland ==&lt;br /&gt;
&lt;br /&gt;
[https://wayland.freedesktop.org/xserver.html XWayland] は、Wayland の下で実行される X サーバーです。 レガシー [[X11]] アプリケーションに下位互換性を提供します。&lt;br /&gt;
&lt;br /&gt;
これを使用するには、{{Pkg|xorg-xwayland}} パッケージを [[インストール]] します。&lt;br /&gt;
&lt;br /&gt;
XWaylandはコンポジターを介して開始されるため、選択したコンポジターを使用して、XWayland の互換性と XWayland の開始方法の説明を確認して下さい。&lt;br /&gt;
&lt;br /&gt;
{{Note|セキュリティについて: XWayland は X サーバーであるため、 Wayland のセキュリティ機能はありません。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== NVIDIA ドライバ ===&lt;br /&gt;
&lt;br /&gt;
{{Note|バージョン 470 より前の Nvidia ドライバ(例: {{aur|nvidia-390xx-dkms}}) はハードウェアアクセラレーションされた XWayland をサポートしておらず、Wayland 以外のアプリケーションで Wayland セッションのパフォーマンスが低下します。}}&lt;br /&gt;
&lt;br /&gt;
なお、[[NVIDIA#DRM kernel mode setting|DRM KMS]] を有効にする必要があります。また、お使いのディスプレイマネージャ(例: [[GDM#Wayland と独自の NVIDIA ドライバ|GDM]])の[https://us.download.nvidia.com/XFree86/Linux-x86_64/470.42.01/README/xwayland.html 公式ドキュメント]に記載されている情報も見てください。&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== Xwayland アプリケーションであることを視認する ===&lt;br /&gt;
&lt;br /&gt;
アプリケーションが Xwayland 経由で実行されているかどうかを判断するには、{{AUR|extramaus}} を使用します。&lt;br /&gt;
アプリケーションのウィンドウ上にマウスポインタを移動して、マウスポインタが赤くなる場合は、アプリケーションが Xwayland 経由で実行されています。&lt;br /&gt;
&lt;br /&gt;
または、{{pkg|xorg-xeyes}} を使用して、アプリケーションウィンドウ上でマウスポインタを移動するときに、目が動いているかどうかで確認することもできます。&lt;br /&gt;
&lt;br /&gt;
==トラブルシューティング==&lt;br /&gt;
&lt;br /&gt;
=== 色補正 ===&lt;br /&gt;
&lt;br /&gt;
[[バックライト#色補正]]を参照。&lt;br /&gt;
&lt;br /&gt;
=== 動作が遅い、表示がおかしい、クラッシュする ===&lt;br /&gt;
&lt;br /&gt;
Gnome-shell で X から Wayland に切り替えるとグラフィック表示に問題が発生することがあります。原因として Xorg ベースの gnome-shell 用に {{ic|1=CLUTTER_PAINT=disable-clipped-redraws:disable-culling}} が設定されている可能性があります。{{ic|/etc/environment}} などの rc ファイルから該当箇所を削除してみてください。&lt;br /&gt;
&lt;br /&gt;
=== Electron ベースのアプリケーションでは、ディスプレイ::0を開けません ===&lt;br /&gt;
&lt;br /&gt;
GDK_BACKEND = wayland を設定していないことを確認してください。グローバルに設定すると、 Electron アプリが機能しなくなります。&lt;br /&gt;
&lt;br /&gt;
=== リモートディスプレイ ===&lt;br /&gt;
&lt;br /&gt;
いくつか選択肢が考えられます:&lt;br /&gt;
* [[Sway]] など {{Pkg|wlroots}} ベースのコンポジタでは {{AUR|wayvnc}} VNC サーバーが利用できます。&lt;br /&gt;
* [[Weston]] には RDP バックエンドが含まれています。{{man|7|weston-rdp}} を参照してください。&lt;br /&gt;
* {{Pkg|mutter}} ベースの場合は {{Pkg|gnome-remote-desktop}} が使えます。[https://wiki.gnome.org/Projects/Mutter/RemoteDesktop 公式サイト] を参照してください。&lt;br /&gt;
* {{AUR|waypipe}} や {{AUR|waypipe-git}} は Wayland アプリケーションの透過プロキシです。[[SSH]] を組み合わせることで外部から操作できます。詳細は[https://gitlab.freedesktop.org/mstoeckl/waypipe 公式サイト]を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== ゲームやリモートデスクトップ、仮想マシンウィンドウでの入力 ===&lt;br /&gt;
&lt;br /&gt;
Xorg と異なり、Wayland では入力デバイスを独占 (グラブ) することができません。キーボードショートカットやポインタデバイスをアプリケーションウィンドウに渡すのは Wayland コンポジタの役目となっています。&lt;br /&gt;
&lt;br /&gt;
入力グラブが変わったことで以下のように既存のアプリケーションで問題が発生します:&lt;br /&gt;
* ホットキーや修飾キーがコンポジタによって認識されてしまい、リモートデスクトップや仮想マシンのウィンドウに送信されなくなります。&lt;br /&gt;
* マウスポインタがアプリケーションウィンドウに制限されなくなるため、仮想マシンやリモートデスクトップのウィンドウ内のマウスポインタの位置がホスト環境のマウスポインタとずれるようになります。&lt;br /&gt;
&lt;br /&gt;
Wayland と XWayland にプロトコル拡張を追加することで解決を図っていますが、Wayland コンポジタが拡張をサポートしている必要があり、ネイティブの Wayland クライアントの場合、ウィジェットツールキット (例: GTK, Qt) やアプリケーション自身が拡張に対応していなければなりません。X上で動作するアプリケーションの場合、対応は不要です。&lt;br /&gt;
&lt;br /&gt;
関連する拡張:&lt;br /&gt;
* [https://cgit.freedesktop.org/wayland/wayland-protocols/tree/unstable/xwayland-keyboard-grab/xwayland-keyboard-grab-unstable-v1.xml XWayland keyboard grabbing protocol] (XWayland のサポートは xorg-server 1.20 開発ツリーに追加されています [https://lists.x.org/archives/xorg-devel/2017-August/054231.html])&lt;br /&gt;
* [https://cgit.freedesktop.org/wayland/wayland-protocols/tree/unstable/keyboard-shortcuts-inhibit/keyboard-shortcuts-inhibit-unstable-v1.xml Compositor shortcuts inhibit protocol]&lt;br /&gt;
* [https://cgit.freedesktop.org/wayland/wayland-protocols/tree/unstable/relative-pointer/relative-pointer-unstable-v1.xml Relative pointer protocol]&lt;br /&gt;
* [https://cgit.freedesktop.org/wayland/wayland-protocols/tree/unstable/pointer-constraints/pointer-constraints-unstable-v1.xml Pointer constraints protocol]&lt;br /&gt;
&lt;br /&gt;
サポートしている Wayland コンポジタ:&lt;br /&gt;
* Mutter, [[GNOME]] のコンポジタ ([https://bugzilla.gnome.org/show_bug.cgi?id=783342 リリース 3.28] 以上)。&lt;br /&gt;
* {{Pkg|wlroots}} (Relative pointer protocols と Pointer constraints protocol に対応)&lt;br /&gt;
&lt;br /&gt;
サポートしているウィジェットツールキット:&lt;br /&gt;
* GTK (リリース 3.22.18 以上)。&lt;br /&gt;
&lt;br /&gt;
=== GTK テーマが動かない ===&lt;br /&gt;
&lt;br /&gt;
https://github.com/swaywm/sway/wiki/GTK-3-settings-on-Wayland を参照してください。&lt;br /&gt;
&lt;br /&gt;
==参照==&lt;br /&gt;
&lt;br /&gt;
* [https://wayland.freedesktop.org/docs/html/ Wayland オンラインドキュメント]&lt;br /&gt;
* [https://gitlab.freedesktop.org/wayland Official Wayland Git Repo]&lt;br /&gt;
* [[Fedora:How to debug Wayland problems|Fedora Wiki の Wayland のデバッグに関する記事]]&lt;br /&gt;
* [https://arewewaylandyet.com/ Are we Wayland yet?]&lt;br /&gt;
* [https://awesomeopensource.com/projects/wayland Awesome Wayland projects]&lt;br /&gt;
* [[カーソルテーマ]]&lt;br /&gt;
* [https://bbs.archlinux.org/viewtopic.php?id=107499 Arch Linux forum discussion]&lt;br /&gt;
* [https://github.com/swaywm/sway/wiki/i3-Migration-Guide#common-x11-apps-used-on-i3-with-wayland-alternatives i3 Migration Guide - Common X11 apps used on i3 with Wayland alternatives]&lt;br /&gt;
* [https://wayland.app/protocols/ Wayland Explorer - A better way to read Wayland documentation]&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|Wayland|2021-11-09|700011}}&lt;/div&gt;</summary>
		<author><name>Funcrab</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Snapper&amp;diff=23110</id>
		<title>Snapper</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Snapper&amp;diff=23110"/>
		<updated>2022-01-11T03:49:38Z</updated>

		<summary type="html">&lt;p&gt;Funcrab: lessのgg（最初に戻る）よりもq（exit）の方が実用的なので変更&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ファイルシステム]]&lt;br /&gt;
[[en:Snapper]]&lt;br /&gt;
[[zh-hans:Snapper]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|Btrfs}}&lt;br /&gt;
{{Related|mkinitcpio}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[http://snapper.io Snapper] は openSUSE の Arvin Schnell によって作られた、[[Btrfs]] のサブボリュームと [[LVM]] のボリュームのスナップショットの管理を助けるツールです。スナップショットを作成して比較したり、前のスナップショットに戻したり、自動スナップショットが行えます。&lt;br /&gt;
&lt;br /&gt;
==インストール==&lt;br /&gt;
安定版は {{Pkg|snapper}} パッケージからインストールできます。開発版は {{AUR|snapper-git}} パッケージで利用可能です。&lt;br /&gt;
&lt;br /&gt;
GUI は {{AUR|snapper-gui-git}} パッケージでインストールすることができます。&lt;br /&gt;
&lt;br /&gt;
==新しい設定の作成==&lt;br /&gt;
&lt;br /&gt;
Btrfs サブボリュームで Snapper の設定を作成する前に、あらかじめサブボリュームが作成されている必要があります。サブボリュームが存在しない場合、Snapper の設定をするまえに[[Btrfs#サブボリュームを作成する|サブボリュームを作成]]してください。&lt;br /&gt;
&lt;br /&gt;
Btrfs サブボリュームが {{ic|&#039;&#039;/path/to/subvolume&#039;&#039;}} に存在していて、{{ic|&#039;&#039;config&#039;&#039;}} という名前で新しく Snapper の設定を作るには:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; create-config &#039;&#039;/path/to/subvolume&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
上記のコマンドを実行すると:&lt;br /&gt;
*{{ic|/etc/snapper/config-templates}} にあるデフォルトのテンプレートに基づいて {{ic|/etc/snapper/configs/&#039;&#039;config&#039;&#039;}} に設定ファイルが作成されます。&lt;br /&gt;
*{{ic|&#039;&#039;/path/to/subvolume&#039;&#039;/.snapshots}} にサブボリュームが作成されてスナップショットが保存されます。スナップショットのパスは {{ic|&#039;&#039;/path/to/subvolume&#039;&#039;/.snapshots/&#039;&#039;#&#039;&#039;/snapshot}} になります ({{ic|&#039;&#039;#&#039;&#039;}} はスナップショット番号です)。&lt;br /&gt;
*{{ic|/etc/conf.d/snapper}} の {{ic|SNAPPER_CONFIGS}} に {{ic|&#039;&#039;config&#039;&#039;}} が追加されます。&lt;br /&gt;
&lt;br /&gt;
例えば、{{ic|/}} にマウントされたサブボリュームの設定ファイルを作成する場合:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c root create-config /&lt;br /&gt;
&lt;br /&gt;
この時点で、設定は有効になっています。[[cron]] デーモンが動作している場合、snapper は[[#自動タイムラインスナップショット|自動タイムラインスナップショット]]を作成します。[[cron]] デーモンを使っていない場合、systemd サービスとタイマーを使用する必要があります。[[#有効化/無効化]]を見てください。&lt;br /&gt;
&lt;br /&gt;
設定について詳しくは {{ic|snapper-configs}} の [[man ページ]]を参照。&lt;br /&gt;
&lt;br /&gt;
== スナップショットの作成 ==&lt;br /&gt;
&lt;br /&gt;
=== 自動タイムラインスナップショット ===&lt;br /&gt;
&lt;br /&gt;
Snapper では毎時・毎日・毎月・毎年に保存するスナップショットの数を設定できるスナップショットタイムラインを作成することができます。デフォルトでは1時間毎にスナップショットが取得されます。そして1日1回、タイムラインのクリーンアップアルゴリズムによって&amp;quot;古くなって要らなくなった&amp;quot;スナップショットを削除します。&lt;br /&gt;
&lt;br /&gt;
==== 有効化/無効化 ====&lt;br /&gt;
&lt;br /&gt;
[[cron]] デーモンが動作している場合、自動タイムラインスナップショットは自動的に起動します。無効化するには、サブボリュームに存在する設定ファイルを編集して以下を設定してください:&lt;br /&gt;
&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;TIMELINE_CREATE=&amp;quot;no&amp;quot;&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
[[cron]] デーモンを使っていない場合、パッケージに含まれている systemd ユニットを使うことができます。{{ic|snapper-timeline.timer}} を[[起動]]・[[有効化]]することで自動タイムラインスナップショットが開始されます。さらに、{{ic|snapper-cleanup.timer}} を[[起動]]・[[有効化]]すると定期的に古いスナップショットが消去されます。&lt;br /&gt;
&lt;br /&gt;
{{Note|cron デーモンと有効化された systemd ユニットがともに動作すると、重複したスナップショットが作成される結果になる場合があります。systemd ユニットを使いつつ cron 側を無効にできるかもしれない一つの手法に、[[pacman]] の [[pacman#インストールさせないファイルを設定|NoExtract]] および [[pacman#アップグレードさせないファイルを設定|NoUpgrade]] を使い、snapper のパッケージの cron ファイルをインストールしない方法があります。[https://unix.stackexchange.com/questions/425570/snapper-has-recently-started-performing-duplicate-snapshots-each-hour] を見てください。}}&lt;br /&gt;
&lt;br /&gt;
==== スナップショットのリミットの設定 ====&lt;br /&gt;
&lt;br /&gt;
デフォルト設定では、毎時間10個、毎日10個、毎月10個、毎年10個のスナップショットが保存されます。{{ic|/}} など頻繁にサブボリュームに変更を加える場合は、この設定を変更したほうが良いでしょう。[[#ドライブの負担を抑える]]を見て下さい。&lt;br /&gt;
&lt;br /&gt;
以下は、5時間、毎日7個のスナップショットだけを維持して、毎月・毎年は保存しない設定の例です:&lt;br /&gt;
{{hc|head=/etc/snapper/configs/&#039;&#039;config&#039;&#039;|output=&lt;br /&gt;
TIMELINE_MIN_AGE=&amp;quot;1800&amp;quot;&lt;br /&gt;
TIMELINE_LIMIT_HOURLY=&amp;quot;5&amp;quot;&lt;br /&gt;
TIMELINE_LIMIT_DAILY=&amp;quot;7&amp;quot;&lt;br /&gt;
TIMELINE_LIMIT_WEEKLY=&amp;quot;0&amp;quot;&lt;br /&gt;
TIMELINE_LIMIT_MONTHLY=&amp;quot;0&amp;quot;&lt;br /&gt;
TIMELINE_LIMIT_YEARLY=&amp;quot;0&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== スナップショットとクリーンアップの頻度を変更する ====&lt;br /&gt;
&lt;br /&gt;
systemd タイマーを使っている場合、タイマーを[[Systemd#ユニットファイルの編集|編集]]してスナップショットの頻度を変更できます。&lt;br /&gt;
&lt;br /&gt;
例えば、{{ic|snapper-timeline.timer}} を編集して以下のようにすることで5分毎にスナップショットが作成されます:&lt;br /&gt;
&lt;br /&gt;
 [Timer]&lt;br /&gt;
 OnCalendar=&lt;br /&gt;
 OnCalendar=*:0/5&lt;br /&gt;
&lt;br /&gt;
{{Note|設定パラメータ {{ic|TIMELINE_LIMIT_HOURLY}} は上記の設定に関連付けられています。上の例では5分毎にスナップショットが作成されるようになります。}}&lt;br /&gt;
&lt;br /&gt;
{{ic|snapper-cleanup.timer}} を編集するときは {{ic|OnUnitActiveSec}} を変更してください。1時間毎に古いスナップショットを消去するには、以下を追加:&lt;br /&gt;
&lt;br /&gt;
 [Timer]&lt;br /&gt;
 OnUnitActiveSec=1h&lt;br /&gt;
&lt;br /&gt;
詳しくは [[Systemd/タイマー]]や [[Systemd#ドロップインファイル]]を参照。&lt;br /&gt;
&lt;br /&gt;
=== 手動スナップショット ===&lt;br /&gt;
&lt;br /&gt;
==== シンプルなスナップショット ====&lt;br /&gt;
&lt;br /&gt;
デフォルトでは Snapper は他のスナップショットと特別な関係を持たない、単純なスナップショットを作成します。&lt;br /&gt;
&lt;br /&gt;
手動でサブボリュームのスナップショットを作成するには、以下のコマンドを実行:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; create --description &#039;&#039;desc&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
上記のコマンドはクリーンアップアルゴリズムを使用しないため、スナップショットは明示的に[[#スナップショットの削除|削除]]するまでずっと残り続けます。&lt;br /&gt;
&lt;br /&gt;
クリーンアップアルゴリズムを設定するには {{ic|create}} の後に {{ic|-c}} フラグを使用して {{ic|number}}, {{ic|timeline}}, {{ic|pre}}, {{ic|post}} のどれかを選択してください。{{ic|number}} は設定ファイルで指定された番号にあわせて定期的にスナップショットを削除します。例えば、{{ic|number}} アルゴリズムを使用するスナップショットを作成するには:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; create -c number&lt;br /&gt;
&lt;br /&gt;
{{ic|timeline}} スナップショットについては[[#自動タイムラインスナップショット|自動タイムラインスナップショット]]を、{{ic|pre}} と {{ic|post}} については[[#事前事後のスナップショット|事前事後のスナップショット]]を見てください。&lt;br /&gt;
&lt;br /&gt;
==== 事前事後のスナップショット ====&lt;br /&gt;
&lt;br /&gt;
シンプルなスナップショットだけでなく、Snapper では事前事後のスナップショットを作成できます。事前 (&#039;&#039;pre&#039;&#039;) スナップショットには必ず対応する事後 (&#039;&#039;post&#039;&#039;) スナップショットが存在します。このペアによってシステムに変更を加える前後のスナップショットを作成することができます。&lt;br /&gt;
&lt;br /&gt;
事前事後のスナップショットを作成するには、まず事前スナップショットを作成:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; create -t pre -p&lt;br /&gt;
&lt;br /&gt;
上記のコマンドでスナップショット番号が出力されます。&lt;br /&gt;
&lt;br /&gt;
それからシステムに何らかの変更を加えます (例えば新しいプログラムをインストールしたり、ソフトウェアをアップグレードするなど)。&lt;br /&gt;
&lt;br /&gt;
次に事後のスナップショットを作成:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; create -t post --pre-number &#039;&#039;#&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|&#039;&#039;#&#039;&#039;}} は事前スナップショットの番号に置き換えてください。&lt;br /&gt;
&lt;br /&gt;
{{ic|create}} に {{ic|--command}} フラグを指定して、コマンドをラップすることもできます:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; create --command &#039;&#039;cmd&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|&#039;&#039;cmd&#039;&#039;}} は事前事後のスナップショットを作成する間に実行したいコマンドに置き換えてください。&lt;br /&gt;
&lt;br /&gt;
[[#pacman のトランザクションをスナップショットで記録|pacman のトランザクションをスナップショットで記録]]も見てください。&lt;br /&gt;
&lt;br /&gt;
=== 起動時にスナップショットを作成 ===&lt;br /&gt;
&lt;br /&gt;
snapper で {{ic|root}} 設定のスナップショットを作成するには {{ic|snapper-boot.timer}} を[[有効化]]してください。&lt;br /&gt;
&lt;br /&gt;
== スナップショットの確認 ==&lt;br /&gt;
&lt;br /&gt;
作成されたスナップショットを確認するには:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; list&lt;br /&gt;
&lt;br /&gt;
== 設定の確認 ==&lt;br /&gt;
&lt;br /&gt;
全ての[[#新しい設定の作成|設定]]を確認するには:&lt;br /&gt;
&lt;br /&gt;
 # snapper list-configs&lt;br /&gt;
&lt;br /&gt;
== スナップショットの削除 ==&lt;br /&gt;
&lt;br /&gt;
スナップショット番号 {{ic|&#039;&#039;#&#039;&#039;}} を削除するには:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; delete &#039;&#039;#&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
一度に複数のスナップショットを削除できます。例えば、root 設定の65と70のスナップショットを削除するには:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c root delete 65 70&lt;br /&gt;
&lt;br /&gt;
{{Note|事前スナップショットを削除した場合、事後スナップショットも一緒に削除してください。逆も然りです。}}&lt;br /&gt;
&lt;br /&gt;
==root 以外のユーザーでアクセス==&lt;br /&gt;
設定は root ユーザーによって作成され、デフォルトでは、root だけが設定を確認したり変更できます。&lt;br /&gt;
&lt;br /&gt;
特定のユーザーからもスナップショットを確認できるようにしたいときは、{{ic|/etc/snapper/configs/&#039;&#039;config&#039;&#039;}} ファイルの {{ic|ALLOW_USERS}} の値を変更してください。そうすれば通常ユーザーでも {{ic|snapper -c &#039;&#039;config&#039;&#039;list}} を実行できるようになります。&lt;br /&gt;
&lt;br /&gt;
さらに、ユーザーを使って {{ic|.snapshots}} ディレクトリを閲覧できるようにしたい、それでいてディレクトリの所有者は root のままにしておきたいということが考えられます。そのような場合、使用したいユーザーが属しているグループに、グループ所有者を変更してください。例えば {{ic|users}}　を使う場合:&lt;br /&gt;
&lt;br /&gt;
 # chmod a+rx .snapshots&lt;br /&gt;
 # chown :users .snapshots&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== pacman のトランザクションをスナップショットで記録 ===&lt;br /&gt;
&lt;br /&gt;
pacman の操作時に自動的にスナップショットを作成するためのパッケージが複数存在します:&lt;br /&gt;
&lt;br /&gt;
* {{App|pacupg|Btrfs のスナップショットでパッケージと AUR のアップグレードを記録して、簡単にロールバックできるようにするスクリプト。|https://github.com/crossroads1112/bin/tree/master/pacupg|{{AUR|pacupg}}}}&lt;br /&gt;
* {{App|snap-pac|openSUSE の YaST のように自動的に[[#事前事後のスナップショット|事前事後のスナップショット]]を作成します。[[Pacman#フック]]を使用しています。|https://github.com/wesbarnett/snap-pac|{{Pkg|snap-pac}}}}&lt;br /&gt;
* {{App|snap-pac-grub|{{pkg|snap-pac}} でスナップショットが作成された後に {{Pkg|grub-btrfs}} 用に GRUB エントリを更新します。[[Pacman#フック]]を使用します。||{{aur|snap-pac-grub}}}}&lt;br /&gt;
* {{App|snp|シェルコマンドの実行前後に snapper でスナップショットを取るラッパー。例: {{ic|$ snp pacman -Syu}}|https://gist.github.com/erikw/5229436|}}&lt;br /&gt;
&lt;br /&gt;
=== boot パーティションのバックアップ ===&lt;br /&gt;
&lt;br /&gt;
{{ic|/boot}} パーティションが btrfs ファイルシステム上に存在しない場合 (例: [[ESP]])、snapper でバックアップすることはできません。フックを使用してカーネルのアップデート時に boot パーティションを自動的に btrfs ファイルシステムにコピーさせることはできます。{{Pkg|snap-pac}} でも上手くバックアップされます。&lt;br /&gt;
{{hc|1=/etc/pacman.d/hooks/50-bootbackup.hook|2=&lt;br /&gt;
[Trigger]&lt;br /&gt;
Operation = Upgrade&lt;br /&gt;
Operation = Install&lt;br /&gt;
Operation = Remove&lt;br /&gt;
Type = Path&lt;br /&gt;
Target = usr/lib/modules/*/vmlinuz&lt;br /&gt;
&lt;br /&gt;
[Action]&lt;br /&gt;
Depends = rsync&lt;br /&gt;
Description = Backing up /boot...&lt;br /&gt;
When = PostTransaction&lt;br /&gt;
Exec = /usr/bin/rsync -a --delete /boot /.bootbackup&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== 外部ドライブに差分バックアップ ===&lt;br /&gt;
&lt;br /&gt;
以下のパッケージは {{ic|btrfs send}} と {{ic|btrfs receive}} を使用して外部ドライブにバックアップを差分で送信します:&lt;br /&gt;
&lt;br /&gt;
* {{App|buttersink|Btrfs スナップショットの rsync のようなもので、スナップショットの差分だけを送信することで自動的に同期を最適化します。|https://github.com/AmesCornish/buttersink.git|{{AUR|buttersink-git}}}}&lt;br /&gt;
* {{App|snap-sync|snapper スナップショットを使用して外部ドライブにバックアップします。|https://github.com/wesbarnett/snap-sync.git|{{Pkg|snap-sync}}}}&lt;br /&gt;
* {{App|snapsync|snapper 用の同期ツール。|https://github.com/doudou/snapsync|{{AUR|ruby-snapsync}}}}&lt;br /&gt;
&lt;br /&gt;
===推奨ファイルシステムレイアウト===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Note|1=以下のレイアウトは &#039;&#039;&#039;{{ic|snapper rollback}} を使用することは想定していません&#039;&#039;&#039;が、[[#/ を @ のスナップショットに復元|/ を @ のスナップショットに復元]]した時の問題を軽減します。[https://bbs.archlinux.org/viewtopic.php?id=194491 フォーラムスレッド] を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
以下は {{ic|/}} を簡単に復元できるようにするための推奨ファイルシステムレイアウトです。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ ファイルシステムレイアウト&lt;br /&gt;
! サブボリューム !! マウントポイント&lt;br /&gt;
|-&lt;br /&gt;
| @ || /&lt;br /&gt;
|-&lt;br /&gt;
| @home || /home&lt;br /&gt;
|-&lt;br /&gt;
| @snapshots || /.snapshots&lt;br /&gt;
|-&lt;br /&gt;
| @var_log || /var/log&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 subvolid=5&lt;br /&gt;
   |&lt;br /&gt;
   ├── @ -|&lt;br /&gt;
   |     含まれるディレクトリ:&lt;br /&gt;
   |       ├── /usr&lt;br /&gt;
   |       ├── /bin&lt;br /&gt;
   |       ├── /.snapshots&lt;br /&gt;
   |       ├── ...&lt;br /&gt;
   |&lt;br /&gt;
   ├── @home&lt;br /&gt;
   ├── @snapshots&lt;br /&gt;
   ├── @var_log&lt;br /&gt;
   └── @...&lt;br /&gt;
&lt;br /&gt;
{{ic|/.snapshots}} は {{ic|@snapshots}} のマウントポイントです。{{ic|@...}} は {{ic|/}} にマウントするサブボリューム ({{ic|@}}) とは別に保存したいサブボリュームになります。{{ic|/}} のスナップショットを作成するとき、他のサブボリュームはスナップショットに含まれません。ただし、別の snapper 設定を作成することで他のサブボリュームもスナップショットで記録できます。システムを {{ic|/}} のスナップショットの時点まで戻したいと思ったときに、他のサブボリュームには影響が及びません。&lt;br /&gt;
&lt;br /&gt;
例えば、{{ic|/}} をスナップショット時に戻したいが {{ic|/home}} は最新の状態のままにしたい場合、サブボリュームを作成して {{ic|/home}} にマウントしてください。詳しくは [[Btrfs#サブボリュームをマウントする]]を参照。&lt;br /&gt;
&lt;br /&gt;
上記のレイアウトは snapper ユーティリティで定期的に {{ic|/}} のスナップショットが作成できるのと同時に、起動できなくなった場合に Arch のライブ CD から {{ic|/}} を簡単に復元することができます。&lt;br /&gt;
&lt;br /&gt;
その場合、初期設定をしたら snapper に特別な設定をする必要はありません。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* サブボリュームが {{ic|@}} 下に入れ子になっていても、{{ic|/}} のスナップショットには含まれません。{{ic|/}} にマウントしているサブボリュームのスナップショットを保存したい場合は snapper でサブボリュームの設定を行ってください。&lt;br /&gt;
* [[Btrfs#スワップファイル|Btrfs の制限]]により、スナップショットされたボリュームは[[スワップ#スワップファイル|スワップファイル]]を含むことができません。スワップファイルを別のサブボリュームに置くか、[[スワップ#スワップパーティション|スワップパーティション]]を作成してください。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
====snapper の設定とマウントポイント====&lt;br /&gt;
&lt;br /&gt;
{{ic|/.snapshots}} がマウントされていないこと、フォルダとして存在しないことを確認してください:&lt;br /&gt;
 # umount /.snapshots&lt;br /&gt;
 # rm -r /.snapshots&lt;br /&gt;
&lt;br /&gt;
それから {{ic|/}} の[[#新しい設定の作成|新しい設定を作成]]します。&lt;br /&gt;
&lt;br /&gt;
そして {{ic|@snapshots}} を {{ic|/.snapshots}} に[[マウント]]してください。例えば、ファイルシステムが {{ic|/dev/sda1}} に存在する場合:&lt;br /&gt;
 # mount -o subvol=@snapshots /dev/sda1 /.snapshots&lt;br /&gt;
マウントを永続化させるには、[[fstab]] にエントリを作成します。&lt;br /&gt;
&lt;br /&gt;
もしくは fstab エントリが既に存在する場合、スナップショットのサブボリュームを再マウントします:&lt;br /&gt;
 # mount -a&lt;br /&gt;
&lt;br /&gt;
フォルダには {{ic|750}} の[[ファイルのパーミッションと属性#数字を使う方法|パーミッション]]を設定してください。&lt;br /&gt;
&lt;br /&gt;
snapper が作成するスナップショットは全て {{ic|@}} サブボリュームの外に保存されるため、snapper のスナップショットを削除しなくても {{ic|@}} を簡単に置き換えることができます。&lt;br /&gt;
&lt;br /&gt;
===={{ic|/}} を {{ic|@}} のスナップショットに復元 ====&lt;br /&gt;
&lt;br /&gt;
snapper のスナップショットを使って {{ic|/}} をリストアしたくなったら、まずは Arch Linux のライブ USB/CD を起動します。&lt;br /&gt;
&lt;br /&gt;
トップレベルのサブボリューム (subvolid=5) を[[マウント]]してください。{{ic|subvolid}} マウントフラグは省略します。&lt;br /&gt;
&lt;br /&gt;
{{ic|/mnt/@snapshots/*/info.xml}} から復元したいスナップショットを確認します:&lt;br /&gt;
{{Tip|{{ic|less}} を使ってファイルを確認できます:&lt;br /&gt;
 # cat /mnt/@snapshots/*/info.xml {{!}} less&lt;br /&gt;
次のページを見たいときは {{ic|space}} を、終了するときは {{ic|q}} を使用します。}}&lt;br /&gt;
&lt;br /&gt;
{{ic|&amp;lt;description&amp;gt;}} タグと {{ic|&amp;lt;date&amp;gt;}} タグを見て、リストアしたいスナップショットが確認できたら、{{ic|&amp;lt;num&amp;gt;}} の番号をメモしてください。&lt;br /&gt;
&lt;br /&gt;
そして {{ic|@}} を他の場所 (例: {{ic|/@.broken}}) にして現在のシステムのコピーを保存します。もしくは {{ic|btrfs subvolume delete}} で {{ic|@}} を削除します。&lt;br /&gt;
&lt;br /&gt;
読み取り専用のスナップショットから読み書き可能なスナップショットを作成:&lt;br /&gt;
&lt;br /&gt;
 # btrfs subvol snapshot /mnt/@snapshots/&#039;&#039;#&#039;&#039;/snapshot /mnt/@&lt;br /&gt;
&lt;br /&gt;
{{ic|&#039;&#039;#&#039;&#039;}} は復元したい snapper のスナップショットの番号に置き換えてください。これで {{ic|/}} は前の状態に戻ります。再起動してください。&lt;br /&gt;
&lt;br /&gt;
===スナップショットからファイルを削除===&lt;br /&gt;
&lt;br /&gt;
過去のスナップショットから特定のファイルやフォルダを削除したい場合、[https://pypi.python.org/pypi/snapperS snapperS] というスクリプトが存在します。&lt;br /&gt;
&lt;br /&gt;
スクリプトを使わずにファイルを削除したい場合、以下のコマンドを実行して [https://unix.stackexchange.com/a/149933/3587 スナップショットのサブボリュームを読み書き可能] にする必要があります:&lt;br /&gt;
&lt;br /&gt;
 # btrfs property set /path/to/.snapshots/&amp;lt;snapshot_num&amp;gt;/snapshot ro false&lt;br /&gt;
&lt;br /&gt;
{{ic|1=ro=false}} となっていることを確認:&lt;br /&gt;
&lt;br /&gt;
{{hc|# btrfs property get /path/to/.snapshots/&amp;lt;snapshot_num&amp;gt;/snapshot|2=ro=false}}&lt;br /&gt;
&lt;br /&gt;
これで {{ic|/path/to/.snapshots/&amp;lt;snapshot_num&amp;gt;/snapshot}} のファイルは通常通りに編集することが可能になります。&lt;br /&gt;
&lt;br /&gt;
=== ドライブの負担を抑える ===&lt;br /&gt;
&lt;br /&gt;
頻繁に変更が加わるファイルシステム (例えば多数のシステムアップデートが行われる {{ic|/}} など) で長期間にわたって頻繁にスナップショットを取得すると動作がかなり遅くなることがあります。以下のようにすることで遅くなるのを回避できます:&lt;br /&gt;
* スナップショットを作成する価値がない {{ic|/var/cache/pacman/pkg}}, {{ic|/var/abs}}, {{ic|/var/tmp}}, {{ic|/srv}} などのサブボリュームを[[Btrfs#サブボリュームを作成する|作成]]する。&lt;br /&gt;
* [[#自動タイムラインスナップショット|自動タイムラインスナップショット]]を使う場合に、毎時・毎日・毎周・毎年のスナップショットのデフォルト設定を変更する。&lt;br /&gt;
&lt;br /&gt;
==== updatedb ====&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、{{ic|updatedb}} は snapper によって作成された {{ic|.snapshots}} ディレクトリのインデックスも作成してしまい、スナップショットが大量にある場合、深刻な遅延が発生したりメモリが異常に消費される原因になります。以下のように設定ファイルを編集することでインデックスを作成しないように {{ic|updatedb}} を設定できます:&lt;br /&gt;
{{hc|/etc/updatedb.conf|2=PRUNENAMES = &amp;quot;.snapshots&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
=== ログファイルの保持 ===&lt;br /&gt;
&lt;br /&gt;
{{ic|/var/log}} のサブボリュームを作成して {{ic|/}} のスナップショットに含まれないようにすることを推奨します。{{ic|/}} のスナップショットを復元したときにログファイルまで前の状態に戻ってしまうことがなくなり、トラブルシューティングが楽になります。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
===Snapper のログ===&lt;br /&gt;
Snapper は全ての活動を {{ic|/var/log/snapper.log}} に書き出します。何か問題が発生しているように感じたら真っ先にこのファイルをチェックしてください。&lt;br /&gt;
&lt;br /&gt;
毎時・毎日・毎週のスナップショットに問題がある場合、おそらく cronie サービス (もしくはその他の cron デーモン) が動いていなかったのが原因だということが多くあります。&lt;br /&gt;
&lt;br /&gt;
===IO エラー===&lt;br /&gt;
スナップショットを作成しようとすると IO エラーが表示される場合、スナップショットを作成しようとしたサブボリュームと関連付けられている [https://bbs.archlinux.org/viewtopic.php?id=164404 .snapshots] ディレクトリもサブボリュームになっていることを確認してください。&lt;br /&gt;
&lt;br /&gt;
また、{{ic|.snapshots}} の所有者が root になっていない可能性もあります ({{ic|/var/log/snapper.log}} に {{ic|Btrfs.cc(openInfosDir):219 - .snapshots must have owner root}} というエラーが出力されます)。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
* [http://snapper.io/ Snapper ホームページ]&lt;br /&gt;
* [https://en.opensuse.org/Portal:Snapper openSUSE Snapper ポータル]&lt;br /&gt;
* [https://btrfs.wiki.kernel.org/index.php/Main_Page Btrfs ホームページ]&lt;br /&gt;
* [https://www.linux.com/news/enterprise/systems-management/878490-snapper-suses-ultimate-btrfs-snapshot-manager/ Linux.com: Snapper: SUSE&#039;s Ultimate Btrfs Snapshot Manager]&lt;/div&gt;</summary>
		<author><name>Funcrab</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Pacman&amp;diff=23097</id>
		<title>Pacman</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Pacman&amp;diff=23097"/>
		<updated>2022-01-10T15:38:42Z</updated>

		<summary type="html">&lt;p&gt;Funcrab: /* アップグレード中に Pacman がクラッシュしました */ ケース「&amp;quot;pacman: command not found&amp;quot;」について追加&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:パッケージ管理]]&lt;br /&gt;
[[Category:Arch プロジェクト]]&lt;br /&gt;
[[Category:コマンド]]&lt;br /&gt;
[[ar:Pacman]]&lt;br /&gt;
[[cs:Pacman]]&lt;br /&gt;
[[da:Pacman]]&lt;br /&gt;
[[de:Pacman]]&lt;br /&gt;
[[el:Pacman]]&lt;br /&gt;
[[en:Pacman]]&lt;br /&gt;
[[es:Pacman]]&lt;br /&gt;
[[fa:Pacman]]&lt;br /&gt;
[[fr:Pacman]]&lt;br /&gt;
[[id:Pacman]]&lt;br /&gt;
[[it:Pacman]]&lt;br /&gt;
[[ko:Pacman]]&lt;br /&gt;
[[nl:Pacman]]&lt;br /&gt;
[[pl:Pacman]]&lt;br /&gt;
[[pt:Pacman]]&lt;br /&gt;
[[ru:Pacman]]&lt;br /&gt;
[[sr:Pacman]]&lt;br /&gt;
[[sv:Pacman]]&lt;br /&gt;
[[zh-hans:Pacman]]&lt;br /&gt;
[[zh-hant:Pacman]]&lt;br /&gt;
{{Lowercase title}}&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|パッケージの作成}}&lt;br /&gt;
{{Related|パッケージのダウングレード}}&lt;br /&gt;
{{Related|Pacman のパフォーマンスの向上}}&lt;br /&gt;
{{Related|Pacman GUI フロントエンド}}&lt;br /&gt;
{{Related|Pacman 比較表}}&lt;br /&gt;
{{Related|Pacman ヒント}}&lt;br /&gt;
{{Related|FAQ#パッケージ管理}}&lt;br /&gt;
{{Related|pacman-key}}&lt;br /&gt;
{{Related|Pacnew と Pacsave ファイル}}&lt;br /&gt;
{{Related|Pacman/ローカルデータベースの復元}}&lt;br /&gt;
{{Related|アプリケーション一覧/ユーティリティ#パッケージ管理}}&lt;br /&gt;
{{Related|Arch Build System}}&lt;br /&gt;
{{Related|公式リポジトリ}}&lt;br /&gt;
{{Related|Arch User Repository}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[https://www.archlinux.org/pacman/ pacman]&#039;&#039;&#039; [[Wikipedia:ja:パッケージ管理システム|パッケージマネージャ]]は Arch Linux の主要な機能のひとつです。pacman はシンプルなバイナリのパッケージ形式と簡単に利用できる[[Arch Build System|ビルドシステム]]から成っています。pacman のゴールはパッケージ管理を楽にすることであり、[[公式リポジトリ|公式 Arch リポジトリ]]にあるパッケージや、ユーザー自身が作成したパッケージを容易に管理することができます。&lt;br /&gt;
&lt;br /&gt;
Pacman はマスターサーバーと同期してシステムを最新に保ちます。このサーバー・クライアントモデルによって、シンプルなコマンドだけで必要な依存性を解決してパッケージのダウンロード・インストールをすることができます。&lt;br /&gt;
&lt;br /&gt;
Pacman は C 言語で書かれており {{ic|.pkg.tar.xz}} パッケージフォーマットを使います。&lt;br /&gt;
&lt;br /&gt;
{{Tip|1=公式の {{Pkg|pacman}} パッケージには [[makepkg]] や &#039;&#039;&#039;vercmp&#039;&#039;&#039; などのツールが含まれています。&#039;&#039;&#039;pactree&#039;&#039;&#039; や [[#部分的なアップグレードはサポートされていません|checkupdates]] など他の有用なツールは {{Pkg|pacman-contrib}} パッケージに含まれています([https://git.archlinux.org/pacman.git/commit/?id=0c99eabd50752310f42ec808c8734a338122ec86 以前] は pacman パッケージに含まれていました)。ツールの一覧を見るには {{ic|pacman -Ql pacman pacman-contrib {{!}} grep -E &#039;bin/.+&#039;}} を実行してください。 }}&lt;br /&gt;
&lt;br /&gt;
==使い方==&lt;br /&gt;
&lt;br /&gt;
pacman で何ができるかをちゃんと学びたい場合、{{man|8|pacman}} を参照してください。以下にあるのは pacman でできることのほんの一例です。&lt;br /&gt;
&lt;br /&gt;
{{Tip|他の Linux ディストリビューションを使ったことがある場合、[[Pacman 比較表]]の記事が役に立つでしょう。}}&lt;br /&gt;
&lt;br /&gt;
===パッケージのインストール===&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* パッケージには [[PKGBUILD#optdepends|optdepends]] が設定されていることがあります。必ずインストールする必要はありませんが、インストールすることで機能が追加されます。[[#パッケージ・データベースに問い合わせる|パッケージ・データベースに問い合わせる]]ことで情報を参照することができます。&lt;br /&gt;
* 他のパッケージの依存パッケージとしてパッケージをインストールする場合 (そのパッケージ自体は必要としていない場合)、{{ic|--asdeps}} オプションを使用することを推奨します。詳しくは[[#インストール理由|インストール理由]]を参照。}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|1=パッケージのインストールをする際に、[[#パッケージのアップグレード|アップグレード]]をせずにパッケージリストを更新しないでください (つまり {{ic|pacman -Sy &#039;&#039;パッケージ名&#039;&#039;}} をしてはいけない)。これを実行すると依存関係に問題がおこる可能性があります。[[#部分的なアップグレードはサポートされていません]] や https://bbs.archlinux.org/viewtopic.php?id=89328 を参照。}}&lt;br /&gt;
&lt;br /&gt;
====特定のパッケージのインストール====&lt;br /&gt;
&lt;br /&gt;
ひとつ、あるいは複数の（依存を含む）パッケージをインストールするときは:&lt;br /&gt;
&lt;br /&gt;
 # pacman -S &#039;&#039;パッケージ名1&#039;&#039; &#039;&#039;パッケージ名2&#039;&#039; ...&lt;br /&gt;
&lt;br /&gt;
異なるリポジトリにそれぞれ同じ名前のパッケージが存在することがあります (例: [extra] リポジトリと [testing] リポジトリ)。このような場合、どちらをインストールするかを明示してください:&lt;br /&gt;
&lt;br /&gt;
 # pacman -S extra/&#039;&#039;パッケージ名&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
名前に類似パターンが存在するパッケージをインストールしたい場合 (グループ全体ではなくマッチするパッケージのみ、例: {{Grp|plasma}}):&lt;br /&gt;
&lt;br /&gt;
 # pacman -S plasma-{desktop,mediacenter,nm}&lt;br /&gt;
&lt;br /&gt;
もちろん、必要に応じて更に複雑なパターンを指定することもできます:&lt;br /&gt;
&lt;br /&gt;
 # pacman -S plasma-{workspace{,-wallpapers},pa}&lt;br /&gt;
&lt;br /&gt;
====パッケージグループのインストール====&lt;br /&gt;
&lt;br /&gt;
パッケージグループに属しているパッケージを同時にインストールすることができます。例えば:&lt;br /&gt;
&lt;br /&gt;
 # pacman -S gnome&lt;br /&gt;
&lt;br /&gt;
を実行すると {{Grp|gnome}} グループからインストールしたいパッケージを選択するように表示されます。&lt;br /&gt;
&lt;br /&gt;
パッケージグループには大量のパッケージが含まれており、しばしばインストールしたいパッケージはそのうちの少しだけということがあるかもしれません。インストールするパッケージの番号を全て入力するという方法でもよいですが、以下のようにすることで簡単にパッケージを選択することが可能です:&lt;br /&gt;
&lt;br /&gt;
 Enter a selection (default=all): 1-10 15&lt;br /&gt;
&lt;br /&gt;
以上で1番から10番までと15番のパッケージがインストールされます。&lt;br /&gt;
&lt;br /&gt;
 Enter a selection (default=all): ^5-8 ^2&lt;br /&gt;
&lt;br /&gt;
以上で5番から8番までと2番のパッケージ以外の全てのパッケージをインストールします。&lt;br /&gt;
&lt;br /&gt;
どのパッケージが gnome グループに属しているか見るには:&lt;br /&gt;
&lt;br /&gt;
 # pacman -Sg gnome&lt;br /&gt;
&lt;br /&gt;
どのようなパッケージグループがあるかは https://www.archlinux.jp/groups/ を見て下さい。&lt;br /&gt;
&lt;br /&gt;
{{Note|グループの中にインストール済みのパッケージがある場合でも、グループにあわせて再インストールされます。{{ic|--needed}} オプションを使うことで無視できます。}}&lt;br /&gt;
&lt;br /&gt;
===パッケージの削除===&lt;br /&gt;
&lt;br /&gt;
あるパッケージを、そのパッケージが必要としていたものを残したまま削除するには:&lt;br /&gt;
&lt;br /&gt;
 # pacman -R &#039;&#039;パッケージ名&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
削除したいパッケージと、そのパッケージだけが必要としている他のパッケージを一緒に削除するには:&lt;br /&gt;
&lt;br /&gt;
 # pacman -Rs &#039;&#039;パッケージ名&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
削除したいパッケージと、そのパッケージが必要としている他のパッケージ、さらに削除したいパッケージに依存しているパッケージを削除するには:&lt;br /&gt;
&lt;br /&gt;
{{Warning|この操作は再帰的です。必要なパッケージを削除してしまうこともあるので、気をつけて使って下さい。}}&lt;br /&gt;
&lt;br /&gt;
 # pacman -Rsc &#039;&#039;パッケージ名&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
他のパッケージから依存されているパッケージを、依存しているパッケージを削除しないで削除するには:&lt;br /&gt;
&lt;br /&gt;
 # pacman -Rdd &#039;&#039;パッケージ名&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、pacman は削除されたパッケージの設定ファイルを *.pacsave という拡張子をつけてバックアップします。もしこれらのファイルも一緒に削除したい場合:&lt;br /&gt;
&lt;br /&gt;
 # pacman -Rn &#039;&#039;パッケージ名&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Note|Pacman はパッケージがインストールされた後に作成された設定ファイルを削除しません。$HOME ディレクトリ下の設定ファイルなどは手動で削除してください。}}&lt;br /&gt;
&lt;br /&gt;
===パッケージのアップグレード===&lt;br /&gt;
&lt;br /&gt;
Pacman は以下のコマンドひとつでシステムの全てのパッケージのアップデートができます。システムがどれだけ新しいかによってかかる時間が変わります。このコマンドはリポジトリデータベースと同期して&#039;&#039;それから&#039;&#039;システムのパッケージをアップデートします(リポジトリにない&#039;ローカル&#039;パッケージは別です):&lt;br /&gt;
&lt;br /&gt;
 # pacman -Syu&lt;br /&gt;
&lt;br /&gt;
{{Warning|アップデートがきたらすぐにアップデートしようとする前に、Arch のローリングリリースのことを再確認してください、アップデートが思いがけない結果になることもあります。つまり、重要なプレゼンをやらなくちゃいけないからといってアップデートするのは賢いとは言えません。手の空いた時間に、何が起こっても対処できるように準備をしてからアップデートしましょう。}}&lt;br /&gt;
&lt;br /&gt;
Pacman は強力なパッケージ管理ツールですが、全ての問題を解決できるわけではありません。混乱したのなら [[The Arch Way]] を読んで下さい。ユーザーは用心深くなって、システムのメンテナンスの責任を自分でとらなくてはなりません。&#039;&#039;&#039;システムアップデートをしたときは、pacman からの表示を全て読み常識を働かせることが肝要です&#039;&#039;&#039;。[[Arch Linux の安定化#Arch のメンテナンス]]を見てください。もし（ユーザーによって作られた）設定ファイルを新しいパッケージのバージョンにあわせて変更する必要があるときは、ユーザーの設定を上書きするのを回避するために {{ic|.pacnew}} ファイルが作られます。Pacman はユーザーにそれらをマージするよう表示します。これらのファイルはユーザーが手動で修正しなくてはなりません。パッケージのアップグレードや削除のあとチェックするのが良いでしょう。詳しくは [[Pacnew と Pacsave ファイル]]を見てください。&lt;br /&gt;
&lt;br /&gt;
{{Tip|&lt;br /&gt;
* Pacman からの出力は {{ic|/var/log/pacman.log}} に記録されています。&lt;br /&gt;
* {{AUR|wat-git}} などのログビューアを使うことで pacman のログを検索できます。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
アップグレードするまえに、[https://www.archlinux.jp/ Arch Linux ホームページ] の最新ニュースをチェックしておくとよいでしょう (もしくは [https://www.archlinux.jp/feeds/ RSS フィード], [https://lists.archlinux.org/listinfo/arch-announce/ arch-announce メーリングリスト]を講読したり Twitter の [https://twitter.com/archlinux_jp @archlinux_jp] をフォローする): アップデートの際にいつもとは違うユーザーの操作が必要になった時 (pacman から与えられる指示だけでは不十分な場合など)、それに関してニュースが作られているはずです。&lt;br /&gt;
&lt;br /&gt;
もし解決できない問題にあたったときは、フォーラムを検索してみましょう。他の人も同じ問題にぶつかり、解決法が投稿されているかもしれません。&lt;br /&gt;
&lt;br /&gt;
====部分的なアップグレードはサポートされていません====&lt;br /&gt;
&lt;br /&gt;
Arch Linux はローリングリリースであり、常に新しいバージョンの[[Wikipedia:ja:ライブラリ|ライブラリ]]がリポジトリにプッシュされます。開発者や Trusted User はライブラリにあわせてリポジトリの全てのパッケージをリビルドします。ローカルでパッケージをインストールした場合 ([[Arch User Repository|AUR]] のパッケージなど)、ユーザーは必要に応じて[[Wikipedia:soname|共有ライブラリ]]にあわせてリビルドしなくてはなりません。&lt;br /&gt;
&lt;br /&gt;
つまり部分的なアップグレードは&#039;&#039;&#039;サポートされていません&#039;&#039;&#039;。{{ic|pacman -Sy package}} や、それと同等の {{ic|pacman -Sy}} からの {{ic|pacman -S package}} などをしないでください。どんなときでも、パッケージをインストールする前に ({{ic|pacman -Syu}} で) アップグレードしてください。{{ic|IgnorePkg}} や {{ic|IgnoreGroup}} を使用する場合は気をつけて扱って下さい。{{ic|pacman -Sy}} は基本的に使ってはいけないコマンドで、代わりに {{ic|pacman -Syu}} を使って下さい。&lt;br /&gt;
&lt;br /&gt;
一度、部分的なアップグレードがなされると、リンクしていたライブラリが見つからなくなってバイナリが壊れてしまいます。&#039;&#039;&#039;シンボリックリンクを張ることでこの問題を&amp;quot;解決&amp;quot;しようとしてはいけません&#039;&#039;&#039;。ライブラリは&#039;&#039;後方互換性がない&#039;&#039;ときには [[Wikipedia:soname|soname]] のバージョンアップに対応します。{{ic|pacman -Syu}} を実行しさえすれば、ミラーと同期して &#039;&#039;pacman&#039;&#039; が壊れていないかぎり問題が修正されます。&lt;br /&gt;
&lt;br /&gt;
インストールされているパッケージのアップグレードを確認したいときは {{Pkg|pacman-contrib}} パッケージに含まれている bash スクリプト &#039;&#039;&#039;checkupdates&#039;&#039;&#039; を使うことで、システムアップデートを行わずに安全に確認が行えます。&lt;br /&gt;
&lt;br /&gt;
===パッケージ・データベースに問い合わせる===&lt;br /&gt;
&lt;br /&gt;
Pacman からローカルデータベースに問い合わせるときは {{ic|-Q}} フラグを、同期データベースに問い合わせるときは {{ic|-S}} フラグを、ファイルデータベースに問い合わせるときは {{ic|-F}} フラグを使います。それぞれのフラグのサブオプションについては {{ic|pacman -Q --help}}, {{ic|pacman -S --help}}, {{ic|pacman -F --help}} を見てください。&lt;br /&gt;
&lt;br /&gt;
Pacman を使ってパッケージ名と説明の両方をデータベースの検索にかけるには:&lt;br /&gt;
&lt;br /&gt;
 $ pacman -Ss &#039;&#039;検索ワード1&#039;&#039; &#039;&#039;検索ワード2&#039;&#039; ...&lt;br /&gt;
&lt;br /&gt;
場合によって {{Ic|-s}} の組み込みの ERE (拡張正規表現) が望まない結果を生むことがあります。そのようなときは検索対象をパッケージ名だけに絞ってみてください:&lt;br /&gt;
&lt;br /&gt;
 $ pacman -Ss &#039;^vim-&#039;&lt;br /&gt;
&lt;br /&gt;
既にインストール済みのパッケージから検索するには:&lt;br /&gt;
&lt;br /&gt;
 $ pacman -Qs &#039;&#039;検索ワード1&#039;&#039; &#039;&#039;検索ワード2&#039;&#039; ...&lt;br /&gt;
&lt;br /&gt;
リモートパッケージからパッケージファイルの名前で検索するには:&lt;br /&gt;
&lt;br /&gt;
 $ pacman -Fs &#039;&#039;検索ワード1&#039;&#039; &#039;&#039;検索ワード2&#039;&#039; ...&lt;br /&gt;
&lt;br /&gt;
パッケージ名が分かっていれば、より詳しい情報を得ることができます:&lt;br /&gt;
&lt;br /&gt;
 $ pacman -Si &#039;&#039;パッケージ名&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
既にインストールしたパッケージの情報を得るには:&lt;br /&gt;
&lt;br /&gt;
 $ pacman -Qi &#039;&#039;パッケージ名&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|-i}} フラグをふたつ付けることでバックアップファイルの一覧と状態を表示できます:&lt;br /&gt;
&lt;br /&gt;
 $ pacman -Qii &#039;&#039;パッケージ名&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
あるパッケージによってインストールされたファイルの一覧を得るには:&lt;br /&gt;
&lt;br /&gt;
 $ pacman -Ql &#039;&#039;パッケージ名&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
リモートパッケージによってインストールされるファイルのリストを得るには:&lt;br /&gt;
&lt;br /&gt;
 $ pacman -Fl &#039;&#039;パッケージ名&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
あるファイルがどのパッケージによってインストールされたかを調べるには:&lt;br /&gt;
&lt;br /&gt;
 $ pacman -Qo &#039;&#039;/パス/ファイル名&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
あるファイルがどのリモートパッケージに属しているかデータベースに問い合わせるには:&lt;br /&gt;
&lt;br /&gt;
 $ pacman -F &#039;&#039;/パス/ファイル名&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
孤立した、他のパッケージに必要とされていないパッケージの一覧を得るには:&lt;br /&gt;
&lt;br /&gt;
 $ pacman -Qdt&lt;br /&gt;
&lt;br /&gt;
{{Tip|上記のコマンドを pacman の post-transaction [[#フック|フック]]に追加することで、トランザクションによってパッケージが孤立したときに通知することができます。(明示的にインストールしたのでない限り) リポジトリから消されたパッケージはローカルでは孤児になるため、パッケージがリポジトリから消されたときに知ることができます。孤児が見つからなかったときに &amp;quot;failed to execute command&amp;quot; エラーを表示しないようにするため、フックの {{ic|Exec}} では次のコマンドを使用してください: {{ic|&amp;lt;nowiki&amp;gt;/usr/bin/bash -c &amp;quot;/usr/bin/pacman -Qtd || /usr/bin/echo &#039;=&amp;gt; None found.&#039;&amp;quot;&amp;lt;/nowiki&amp;gt;}}。}}&lt;br /&gt;
&lt;br /&gt;
明示的にインストールしたパッケージで、依存関係で必要とされていないパッケージを全て表示するには:&lt;br /&gt;
&lt;br /&gt;
 $ pacman -Qet&lt;br /&gt;
&lt;br /&gt;
[[pacman ヒント]]には他の例も載っています。&lt;br /&gt;
&lt;br /&gt;
====Pactree====&lt;br /&gt;
&lt;br /&gt;
パッケージの依存のツリーを見るには:&lt;br /&gt;
&lt;br /&gt;
 $ pactree &#039;&#039;パッケージ名&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
あるパッケージを必要としている全てのパッケージを見るには [[pkgtools]] の {{ic|whoneeds}} を使います:&lt;br /&gt;
&lt;br /&gt;
 $ whoneeds &#039;&#039;パッケージ名&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
もしくは &#039;&#039;pactree&#039;&#039; のリバースフラグを使って:&lt;br /&gt;
&lt;br /&gt;
 $ pactree -r &#039;&#039;package_name&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====データベースの構造====&lt;br /&gt;
&lt;br /&gt;
通常 pacman のデータベースは {{ic|/var/lib/pacman/sync}} に配置され、{{ic|/etc/pacman.conf}} で指定したリポジトリのデータベースファイルがそこに作成されます。データベースファイルは gzip で圧縮された tar アーカイブになっており、パッケージごとにディレクトリが含まれています。例えば {{Pkg|which}} パッケージの場合:&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
% tree which-2.20-6 &lt;br /&gt;
which-2.20-6&amp;lt;nowiki&amp;gt;&lt;br /&gt;
|-- depends&lt;br /&gt;
`-- desc&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|depends}} ファイルにはパッケージが依存するパッケージのリストが記載されており、{{ic|desc}} にはファイルサイズや MD5 ハッシュなどのパッケージの情報が入っています。&lt;br /&gt;
&lt;br /&gt;
===パッケージキャッシュの削除===&lt;br /&gt;
&lt;br /&gt;
pacman はダウンロードしたパッケージを {{ic|/var/cache/pacman/pkg/}} に保存し、古いバージョンやアンインストールされたパッケージを自動では削除しません。従ってこのフォルダのサイズをあまりにも大きくしすぎないために定期的・計画的にこのフォルダを掃除する必要があります。&lt;br /&gt;
&lt;br /&gt;
現在インストールされていないパッケージキャッシュを全て削除するオプションは:&lt;br /&gt;
&lt;br /&gt;
 # pacman -Sc&lt;br /&gt;
&lt;br /&gt;
{{Warning|&lt;br /&gt;
* インストールしたパッケージが安定していて、[[パッケージのダウングレード|ダウングレード]]が必要ないときだけ行なって下さい。この操作をするとキャッシュフォルダから全ての古いバージョンを削除するため、現在インストールされているバージョンのパッケージだけが残ります。将来のアップグレードでパッケージが破損したときに古いパッケージが必要になることがあり、バージョンを戻したいと思ったときに、キャッシュに古いパッケージがないと [[Arch Linux Archive]] などから古いパッケージを取得するしか方法がなくなってしまいます。&lt;br /&gt;
* {{ic|pacman -Scc}} でキャッシュフォルダを完全に削除することも可能ですが、これはあまり推奨されてはいません。上の欠点に加えて、必要なときにキャッシュフォルダから直接パッケージを再インストールすることができなくなってしまい、再ダウンロードが強いられるためです。よっぽどディスク容量を欲しているとき以外は使うべきではありません。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
上記の欠点のため、{{ic|-Sc}} や {{ic|-Scc}} スイッチを使う代わりに、キャッシュから削除するパッケージの数をもっと細かく制御できるスクリプトを使うのが推奨されます:&lt;br /&gt;
&lt;br /&gt;
*{{Pkg|pacman-contrib}} パッケージに入っている &#039;&#039;paccache&#039;&#039; コマンドは、デフォルトでそれぞれのパッケージのキャッシュで一番新しい3つのバージョンを残して後を全て削除します: {{bc|$ paccache -r}} ただし、この方法では &#039;&#039;paccache&#039;&#039; はパッケージがインストールされているかどうかを確認&#039;&#039;しない&#039;&#039;ため、既にアンインストールしたパッケージも保持されます。アンインストールしたパッケージのキャッシュを全て削除するには、次のコマンドを実行する必要があります: {{bc|$ paccache -ruk0}} 他のオプションは {{ic|paccache -h}} を見て下さい。&lt;br /&gt;
&lt;br /&gt;
*もしくは、{{AUR|pkgcacheclean}} をインストールして使うこともできます: {{bc|# pkgcacheclean}}&lt;br /&gt;
&lt;br /&gt;
{{Tip|1=[[#フック]]を作成して pacman の操作後に上記のコマンドを自動的に実行することができます。サンプルが [https://bbs.archlinux.org/viewtopic.php?pid=1694743#p1694743 こちらのスレッド] に載っています。}}&lt;br /&gt;
&lt;br /&gt;
===追加コマンド===&lt;br /&gt;
&lt;br /&gt;
システムのアップグレードとパッケージのインストール (ワンライナー):&lt;br /&gt;
&lt;br /&gt;
 # pacman -Syu &#039;&#039;パッケージ名1&#039;&#039; &#039;&#039;パッケージ名2&#039;&#039; ...&lt;br /&gt;
&lt;br /&gt;
インストールをしないで、パッケージをダウンロードする:&lt;br /&gt;
&lt;br /&gt;
 # pacman -Sw &#039;&#039;パッケージ名&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
リポジトリに存在しない&#039;ローカル&#039;のパッケージ (例: [[Arch User Repository|AUR]] のパッケージ) をインストール:&lt;br /&gt;
&lt;br /&gt;
 # pacman -U /パス/パッケージ名-version.pkg.tar.xz&lt;br /&gt;
&lt;br /&gt;
リポジトリにない、リモートのパッケージを URI を入力してインストール:&lt;br /&gt;
&lt;br /&gt;
 # pacman -U &amp;lt;nowiki&amp;gt;http://www.example.com/repo/example.pkg.tar.xz&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Tip|pacman のキャッシュにローカルパッケージのコピーを残したいときは、次を使って下さい:&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
# pacman -U file://path/to/package/package_name-version.pkg.tar.xz&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|{{ic|--force}} スイッチを使う時は細心の注意を払って下さい、誤って使用すると大きな問題が起こる場合があります。Arch ニュースでこのスイッチを使うように指示があってとき&#039;&#039;だけ&#039;&#039;使用することを強く推奨します。}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;pacman&#039;&#039; で何か操作を行うときは、必ず、インストールしたり削除したりするパッケージのリストが表示され、権限が要求されます。{{ic|-p}} を使うことで {{ic|-S}}, {{ic|-U}}, {{ic|-R}} などの操作を阻止することができます。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;pacman&#039;&#039; にはシステムの操作を簡単にする多数のユーティリティが入っています。それぞれのユーティリティは {{ic|--help}} スイッチを付けて呼び出すことでコマンドオプションを表示できます。&lt;br /&gt;
&lt;br /&gt;
===インストール理由===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;pacman&#039;&#039; データベースではインストールしたパッケージはインストールしたときの理由によって2つのグループに分別されます:&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;明示的にインストール&#039;&#039;&#039;: &#039;&#039;pacman&#039;&#039; の {{ic|-S}} や {{ic|-U}} コマンドによって文字通り指定されたパッケージ。&lt;br /&gt;
*&#039;&#039;&#039;依存パッケージ&#039;&#039;&#039;: &#039;&#039;pacman&#039;&#039; のインストールコマンドにパッケージの名前は指定されず、明示的にインストールした他のパッケージから[[PKGBUILD#依存関係|必要]]とされたためにインストールされたパッケージ。&lt;br /&gt;
&lt;br /&gt;
パッケージのインストール時、以下のようにすることでインストール理由を&#039;&#039;依存パッケージ&#039;&#039;に強制的に変えることができます:&lt;br /&gt;
&lt;br /&gt;
 # pacman -S --asdeps &#039;&#039;package_name&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Tip|任意の依存パッケージを {{ic|--asdeps}} でインストールすると、[[Pacman ヒント#使用していないパッケージの削除 (孤立したパッケージ)|孤立したパッケージを削除]]するときに &#039;&#039;pacman&#039;&#039; によって任意の依存パッケージも削除されるようになります。}}&lt;br /&gt;
&lt;br /&gt;
パッケージの再インストールを行っても、デフォルトではインストール理由は変更されません。&lt;br /&gt;
&lt;br /&gt;
明示的にインストールしたパッケージのリストは {{ic|pacman -Qe}} で表示でき、依存パッケージのリストは {{ic|pacman -Qd}} で表示できます。&lt;br /&gt;
&lt;br /&gt;
既にインストールしたパッケージのインストール理由を変更したい場合、以下のコマンドを実行:&lt;br /&gt;
&lt;br /&gt;
 # pacman -D --asdeps &#039;&#039;package_name&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
インストール理由を「明示的にインストール」に変えたいときは {{ic|--asexplicit}} を使ってください。&lt;br /&gt;
&lt;br /&gt;
{{Note|{{ic|pacman -Syu &#039;&#039;package_name&#039;&#039; --asdeps}} のように、アップグレードをするときに {{ic|--asdeps}} や {{ic|--asexplicit}} オプションを使用するのは推奨されません。インストールされるパッケージだけでなく、アップグレードされるパッケージのインストール理由まで変更されてしまうためです。}}&lt;br /&gt;
&lt;br /&gt;
===特定のファイルが含まれているパッケージを検索===&lt;br /&gt;
&lt;br /&gt;
ファイルデータベースを同期してください:&lt;br /&gt;
&lt;br /&gt;
 # pacman -Fy&lt;br /&gt;
&lt;br /&gt;
ファイルが含まれているパッケージを検索するには:&lt;br /&gt;
&lt;br /&gt;
 $ pacman -Fs pacman&lt;br /&gt;
 core/pacman 5.0.1-4&lt;br /&gt;
     usr/bin/pacman&lt;br /&gt;
     usr/share/bash-completion/completions/pacman&lt;br /&gt;
 extra/xscreensaver 5.36-1&lt;br /&gt;
     usr/lib/xscreensaver/pacman&lt;br /&gt;
&lt;br /&gt;
{{Tip|[[cron]] ジョブや [[systemd/タイマー|systemd タイマー]]を設定してファイルデータベースを定期的に同期させることができます。}}&lt;br /&gt;
&lt;br /&gt;
高度な使い方をしたい場合、全てのファイルと関連するパッケージのデータベースを使用する [[pkgfile]] をインストールしてください。&lt;br /&gt;
&lt;br /&gt;
==設定==&lt;br /&gt;
&lt;br /&gt;
pacman の設定は {{ic|/etc/pacman.conf}} に記述されています。ここで pacman がどのように動作するかを決めることができます。より詳しい情報は {{man|5|pacman.conf}} にあります。&lt;br /&gt;
&lt;br /&gt;
===全般設定===&lt;br /&gt;
&lt;br /&gt;
全般的な設定は {{ic|[options]}} セクションにあります。ここで設定されている項目については {{man|5|pacman.conf}} かデフォルトの {{ic|pacman.conf}} を参照してください。 &lt;br /&gt;
&lt;br /&gt;
====カラー出力====&lt;br /&gt;
&lt;br /&gt;
[[コンソールのカラー出力#pacman]] を見てください。&lt;br /&gt;
&lt;br /&gt;
==== 並列ダウンロードを有効にする ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;pacman&#039;&#039; 6.0 はパッケージを同時にダウンロードするオプションを導入しました。この機能を使用するには、{{ic|/etc/pacman.conf}} で {{ic|ParallelDownloads}} を正の整数に (例:{{ic|5}}) など設定する必要があります。このオプションが設定されていない場合、パッケージは順番にダウンロードされます。&lt;br /&gt;
&lt;br /&gt;
====アップデートする前にバージョンを比較====&lt;br /&gt;
&lt;br /&gt;
利用可能なパッケージの新旧バージョンを確認したい場合、{{ic|/etc/pacman.conf}} の &amp;quot;VerbosePkgLists&amp;quot; 行をアンコメントしてください。{{ic|pacman -Syu}} の出力が以下のようになります:&lt;br /&gt;
&lt;br /&gt;
 Package (6)             Old Version  New Version  Net Change  Download Size&lt;br /&gt;
 &lt;br /&gt;
 extra/libmariadbclient  10.1.9-4     10.1.10-1      0.03 MiB       4.35 MiB&lt;br /&gt;
 extra/libpng            1.6.19-1     1.6.20-1       0.00 MiB       0.23 MiB&lt;br /&gt;
 extra/mariadb           10.1.9-4     10.1.10-1      0.26 MiB      13.80 MiB&lt;br /&gt;
&lt;br /&gt;
====アップグレードさせないパッケージを設定====&lt;br /&gt;
&lt;br /&gt;
ある特定のパッケージをアップデートさせないようにするには:&lt;br /&gt;
&lt;br /&gt;
 IgnorePkg=linux&lt;br /&gt;
&lt;br /&gt;
複数のパッケージを記述するときはスペースで区切るか、{{ic|IgnorePkg}} 行を追加してください。&lt;br /&gt;
&lt;br /&gt;
====アップグレードさせないグループを設定====&lt;br /&gt;
&lt;br /&gt;
パッケージの場合と同様に、アップグレードさせないグループを指定することができます:&lt;br /&gt;
&lt;br /&gt;
 IgnoreGroup=gnome&lt;br /&gt;
&lt;br /&gt;
====アップグレードさせないファイルを設定====&lt;br /&gt;
&lt;br /&gt;
{{Ic|NoUpgrade}} ディレクティブで指定されたファイルはパッケージのインストール・アップグレードで変更を加えられることがなくなり、&#039;&#039;.pacnew&#039;&#039; 拡張子が付いたファイルが新しくインストールされます:&lt;br /&gt;
&lt;br /&gt;
 NoUpgrade=&#039;&#039;path/to/file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Note|パスはパッケージ内のファイルを参照します。したがって、一番最初のスラッシュは必要ありません。}}&lt;br /&gt;
&lt;br /&gt;
====インストールさせないファイルを設定====&lt;br /&gt;
&lt;br /&gt;
特定のディレクトリのインストールをさせないようにするには {{Ic|NoExtract}} リストにディレクトリを加えます。例えば、[[systemd]] ユニットのインストールを避けるには:&lt;br /&gt;
&lt;br /&gt;
 NoExtract=usr/lib/systemd/system/*&lt;br /&gt;
&lt;br /&gt;
もしくは {{AUR|localepurge}} と同じように、英語以外のローカライゼーションのインストールを止めるには:&lt;br /&gt;
&lt;br /&gt;
 NoExtract = usr/share/help/* !usr/share/help/en*&lt;br /&gt;
 NoExtract = usr/share/locale/* !usr/share/locale/en* !usr/share/locale/locale.alias&lt;br /&gt;
 NoExtract = usr/share/man/* !usr/share/man/man*&lt;br /&gt;
 NoExtract = usr/share/vim/vim74/lang/*&lt;br /&gt;
&lt;br /&gt;
後ろのルールは前のルールを上書きします。また、{{ic|!}} でルールを打ち消すことで、必要なロケールだけを維持できます。&lt;br /&gt;
&lt;br /&gt;
{{Tip|pacman 5 から、&#039;&#039;localepurge&#039;&#039; や &#039;&#039;bleachbit&#039;&#039; で消去したロケールがあるパッケージをアップデートする際に、&#039;&#039;pacman&#039;&#039; はロケールが存在しないという警告メッセージを表示します。警告を表示しないようにするには {{ic|pacman.conf}} の {{ic|CheckSpace}} オプションをコメントアウトしてください。ただし容量チェック機能は全てのパッケージで無効になります。}}&lt;br /&gt;
&lt;br /&gt;
====複数の設定ファイルを使用====&lt;br /&gt;
&lt;br /&gt;
設定ファイルが複数あって (メインの設定と [[公式リポジトリ|testing]] リポジトリを有効にした設定がある場合など)、設定ファイルのオプションを共有したい場合、設定ファイルで {{ic|Include}} オプションを宣言することができます。例:&lt;br /&gt;
&lt;br /&gt;
 Include = /path/to/common/settings&lt;br /&gt;
&lt;br /&gt;
{{ic|/path/to/common/settings}} は共有したいオプションが存在するファイルに置き換えてください。&lt;br /&gt;
&lt;br /&gt;
===フック===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;pacman&#039;&#039; は {{ic|/usr/share/libalpm/hooks/}} ディレクトリのフックを処理の前後に実行することができます。さらに {{ic|pacman.conf}} の {{ic|HookDir}} オプションでフックディレクトリを指定できます (デフォルトは {{ic|/etc/pacman.d/hooks}} です)。フックファイルの名前には必ず &#039;&#039;.hook&#039;&#039; を後ろに付ける必要があります。&lt;br /&gt;
&lt;br /&gt;
Pacman フックは様々なことに使われています。例えば、{{ic|systemd-sysusers}} と {{ic|systemd-tmpfiles}} を組み合わせてパッケージのインストール時に自動的にシステムユーザーを作成します。例として {{pkg|tomcat8}} パッケージでは {{ic|tomcat8}} という名前のシステムユーザーが必要だと指定されており特定のディレクトリの所有者がこのユーザーになるように設定されています。pacman フックの {{ic|systemd-sysusers.hook}} と {{ic|systemd-tmpfiles.hook}} は {{ic|tomcat8}} パッケージにシステムユーザーと一時ファイルが含まれていることを認識して {{ic|systemd-sysusers}} と {{ic|systemd-tmpfiles}} を実行します。&lt;br /&gt;
&lt;br /&gt;
alpm のフックに関する詳細は {{man|5|alpm-hooks}} の man ページを参照。&lt;br /&gt;
&lt;br /&gt;
===リポジトリ===&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/pacman.conf}} に書かれているように、Repositories セクションではどの[[公式リポジトリ|リポジトリ]]を使うか定義します。リポジトリはここで直接設定することもできますし、他のファイル ({{ic|/etc/pacman.d/mirrorlist}}) から読み込ませることもできます。ただしどれかひとつのファイルを使うようにしてください。ミラーの設定は[[ミラー|ここ]]を見て下さい。&lt;br /&gt;
&lt;br /&gt;
{{Warning|[testing] リポジトリを使う場合には注意が必要です。このリポジトリにあるパッケージは活発に開発が進んでいるため、更新したら動かなくなるものもあります。testing リポジトリを使う場合は、最新情報が流れている [https://lists.archlinux.org/listinfo/arch-dev-public arch-dev-public メーリングリスト] を購読するのをお薦めします。}}&lt;br /&gt;
&lt;br /&gt;
===パッケージのセキュリティ===&lt;br /&gt;
&lt;br /&gt;
Pacman 4 は署名済みのパッケージをサポートしていて、パッケージにセキュリティレイヤーを加えています。{{ic|SigLevel}} を使うことでリポジトリ毎に（もしくは全体的に）セキュリティレベルを設定することが可能です。デフォルトの設定では {{ic|SigLevel &amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt; Required DatabaseOptional}} によって全てのリポジトリで全てのパッケージの署名検証が有効にされています。上述したようにリポジトリ毎に {{ic|SigLevel}} を使うことでこの設定を上書きすることができます。パッケージに署名する方法や署名の検証について詳しくは、[[pacman-key]] を見てください。&lt;br /&gt;
&lt;br /&gt;
==トラブルシューティング==&lt;br /&gt;
&lt;br /&gt;
===パッケージ XYZ にアップデートしたらシステムが壊れました===&lt;br /&gt;
&lt;br /&gt;
Arch Linux はローリングリリースで最前線のディストリビューションです。一般的な使用については安定していると判断されるとすぐにパッケージがアップデートされます。しかしながら、アップデートにユーザーの介入が必要になるときが時々あります: 設定ファイルをアップデートしたり、追加の依存パッケージを変更したりなど。&lt;br /&gt;
&lt;br /&gt;
一番重要なことは&amp;quot;やみくもに&amp;quot; Arch のシステムをアップデートしないということです。常時、アップデートされるパッケージの一覧を読みましょう。&amp;quot;重要な&amp;quot;パッケージ ({{Pkg|linux}}, {{Pkg|xorg-server}} など) がアップデートされるのか確認しましょう。もしそうであれば、https://www.archlinux.jp/ でニュースをチェックしたり最近のフォーラムの投稿を見て同じ問題が発生している人がいないか確認したりするのが大抵の場合役に立ちます。&lt;br /&gt;
&lt;br /&gt;
パッケージをアップデートすると問題が発生することを予期される・知られている場合は、パッケージ作成者はパッケージがアップデートされた時、pacman が正しいメッセージを表示しているか確認します。アップデート後に問題がおこった時は、pacman の出力をログ ({{ic|/var/log/pacman.log}}) を見て再チェックしてください。&lt;br /&gt;
&lt;br /&gt;
この段階で &#039;&#039;&#039;pacman から何も有用な情報が得られなく、https://www.archlinux.jp/ に関連するニュースもなく、フォーラムにもそのアップデートに関連する投稿がされていない時は&#039;&#039;&#039;、助けを求めるのにフォーラムや [[IRC チャンネル|IRC]] を使ったり問題のあるパッケージを[[パッケージのダウングレード|ダウングレード]]してください。&lt;br /&gt;
&lt;br /&gt;
===パッケージ ABC のアップデートが公開されているはずなのに、pacman はシステムは最新だと言っています===&lt;br /&gt;
&lt;br /&gt;
Pacman のミラーはすぐに同期されるわけではありません。あなたのアップデートが有効になるまで 24 時間以上かかることもあります。おとなしく待つか他のミラーを使ってください。[https://www.archlinux.jp/mirrors/status/ MirrorStatus] にミラーの更新状況がのっています。&lt;br /&gt;
&lt;br /&gt;
===アップデートでこんなエラーが出ました: &amp;quot;file exists in filesystem&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
関連: &#039;&#039;Taken from https://bbs.archlinux.org/viewtopic.php?id=56373 by Misfit138.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 error: could not prepare transaction&lt;br /&gt;
 error: failed to commit transaction (conflicting files)&lt;br /&gt;
 package: /path/to/file exists in filesystem&lt;br /&gt;
 Errors occurred, no packages were upgraded.&lt;br /&gt;
&lt;br /&gt;
なぜこれが起こるというと: pacman がファイル衝突を検知して、あなたのために、故意に、ファイルを上書きしないようにしているからです。これは仕様であり、欠陥ではありません。&lt;br /&gt;
&lt;br /&gt;
この問題は簡単に解決できます。安全な方法は初めに他のパッケージがファイルを使っていないか確認する ({{ic|pacman -Qo &#039;&#039;/path/to/file&#039;&#039;}}) ことです。ファイルが他のパッケージによって使われている場合、[[バグ報告ガイドライン|バグレポートをしてください]]。他のパッケージによって使われていない場合、&#039;ファイルシステムに存在している&#039;ファイルの名前を変えてもう一度アップデートしてください。うまくいったならば、そのファイルは削除してかまいません。&lt;br /&gt;
&lt;br /&gt;
pacman やフロントエンドを使わずに手動でプログラムをインストールしたときは、プログラムとファイルを削除して pacman を使って正しく再インストールしなくてはなりません。&lt;br /&gt;
&lt;br /&gt;
全てのパッケージはインストールされるとパッケージのメタデータを含んだ {{ic|/var/lib/pacman/local/$package-$version/files}} ファイルを作ります。このファイルが壊れている（または空だったり見つからない）と、パッケージをアップデートしようしたときに &amp;quot;file exists in filesystem&amp;quot; エラーが出ます。このようなエラーは大抵一つのパッケージだけが関わっていて、手動で名前を変更してその後削除する代わりに、{{ic|pacman -S --overwrite glob パッケージ名}} で pacman に glob に一致するファイルを上書きさせることができます。&lt;br /&gt;
&lt;br /&gt;
{{Warning|一般的に --overwrite スイッチの使用は避けてください。}}&lt;br /&gt;
&lt;br /&gt;
===パッケージのインストール時にこんなエラーが出ました: &amp;quot;not found in sync db&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
まず、パッケージが本当に存在しているか確認しましょう（打ち間違いも見逃さずに！）。パッケージが存在しているのなら、あなたのパッケージリストが古くなっているかリポジトリが正しく設定されていない可能性があります。{{ic|pacman -Syy}} で全てのパッケージリストを更新してください。&lt;br /&gt;
&lt;br /&gt;
===パッケージをインストールする時にエラーが表示されます: &amp;quot;target not found&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
まず、パッケージが本当に存在するか確認してください (typo がないかよく見てください)。確かにパッケージが存在する場合、パッケージリストが古くなっていたりあなたの使っているリポジトリが正しく設定されていない可能性があります。{{ic|pacman -Syy}} を実行して強制的に全てのパッケージリストを更新してみましょう。&lt;br /&gt;
&lt;br /&gt;
また、パッケージが含まれているリポジトリがあなたのシステムで有効になっていないのかもしれません。例えば、パッケージは &#039;&#039;multilib&#039;&#039; リポジトリにあるが、&#039;&#039;multilib&#039;&#039; が {{ic|pacman.conf}} で有効になっていないということが考えられます。&lt;br /&gt;
&lt;br /&gt;
=== pacman の手動再インストール ===&lt;br /&gt;
&lt;br /&gt;
==== pacman-static を使用====&lt;br /&gt;
&lt;br /&gt;
{{AUR|pacman-static}} は pacman を静的にコンパイルしたものなので、システム上のライブラリが動作していなくても実行できます。これは、 [https://wiki.archlinux.jp/index.php/%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%83%A1%E3%83%B3%E3%83%86%E3%83%8A%E3%83%B3%E3%82%B9#.E9.83.A8.E5.88.86.E7.9A.84.E3.81.AA.E3.82.A2.E3.83.83.E3.83.97.E3.82.B0.E3.83.AC.E3.83.BC.E3.83.89.E3.81.AF.E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88.E3.81.95.E3.82.8C.E3.81.A6.E3.81.84.E3.81.BE.E3.81.9B.E3.82.93 部分的なアップグレード] が実行され、 pacman が実行できなくなった場合にも便利です。&lt;br /&gt;
&lt;br /&gt;
固定コメントと PKGBUILD は、バイナリを直接ダウンロードする方法を提供し、 pacman を再インストールしたり、部分的なアップグレードの場合にシステム全体をアップグレードしたりするために使用できます。&lt;br /&gt;
&lt;br /&gt;
==== 外部の pacman を使用する ====&lt;br /&gt;
&lt;br /&gt;
{{ic|pacman-static}} でさえ動作しない場合は、外部の pacman を使用してリカバリできます。最も簡単な方法の1つは、 [[archiso]] を使用し、 {{ic|--sysroot}}} または {{ic|--root}} を使用してマウントポイントを指定する方法です。 {{ic|--sysroot}} に必要なファイルシステムをマウントする方法については、 [[Chroot#chrootの使用]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
==== 手動で抽出する ====&lt;br /&gt;
&lt;br /&gt;
{{Warning|以下の方法でシステムをさらに再起不能にまで壊してしまう可能性があります。[[#アップグレード中に Pacman がクラッシュしました]]に書かれている方法で直らない場合の最後の手段として使ってください。}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;pacman&#039;&#039; がどうしようもなく破壊されたとしても、最新のパッケージを手動でダウンロードして適切な場所に展開することで修復が可能です。以下のような手順で行います:&lt;br /&gt;
&lt;br /&gt;
#インストールするパッケージを確認&lt;br /&gt;
#適当なミラーからパッケージをそれぞれダウンロード&lt;br /&gt;
#パッケージをルートディレクトリに展開&lt;br /&gt;
#{{ic|pacman -S --force}} でパッケージを再インストールしてパッケージデータベースを更新&lt;br /&gt;
#フルシステムアップグレードを実行&lt;br /&gt;
&lt;br /&gt;
問題なく動く Arch 環境があるのであれば、以下のコマンドで依存パッケージのリストを確認できます:&lt;br /&gt;
&lt;br /&gt;
 $ pacman -Q $(pactree -u pacman)&lt;br /&gt;
&lt;br /&gt;
問題によってはアップデートしなくてはならないパッケージは少数かもしれません。パッケージは以下のようにして展開します:&lt;br /&gt;
&lt;br /&gt;
 # tar -xvpwf &#039;&#039;package.tar.xz&#039;&#039; -C / --exclude .PKGINFO --exclude .INSTALL --exclude .MTREE --exclude .BUILDINFO&lt;br /&gt;
&lt;br /&gt;
{{ic|w}} フラグを使ってインタラクティブモードにしていることに注意してください。インタラクティブで実行しないと重要なファイルを誤って上書きしてしまう可能性があります。また、パッケージは適切な順番で展開するようにしてください。[https://bbs.archlinux.org/viewtopic.php?id=95007 こちらのフォーラムの投稿] には &#039;&#039;pacman&#039;&#039; の一部の依存パッケージだけが壊れた時の解決方法の例が載っています。&lt;br /&gt;
&lt;br /&gt;
===アップグレード中に Pacman がクラッシュしました===&lt;br /&gt;
&lt;br /&gt;
パッケージの削除・再インストール・アップグレード中に &amp;quot;database write&amp;quot; エラーを残して pacman がクラッシュする場合:&lt;br /&gt;
&lt;br /&gt;
#Arch インストールメディアを使って起動してください。&lt;br /&gt;
#root でルートファイルシステムをマウントします ({{ic|mount /dev/sdaX /mnt}})。{{ic|df -h}} で十分な空き容量があることを確認してください。&lt;br /&gt;
#proc, sys, dev ファイルシステムもマウントしてください: {{ic|mount -t proc proc /mnt/proc; mount --rbind /sys /mnt/sys; mount --rbind /dev /mnt/dev}}。&lt;br /&gt;
#システムがデフォルトのデータベースとディレクトリの場所を使っている場合、root で {{ic|1=pacman --root=/mnt --cachedir=/mnt/var/cache/pacman/pkg -Syyu}} を実行することでシステムの &amp;quot;pacman&amp;quot; データベースを更新してアップグレードすることができます。&lt;br /&gt;
#アップグレード後、アップグレードがないことと壊れているパッケージを確認してください: {{ic|find /mnt/usr/lib -size 0}}。&lt;br /&gt;
#{{ic|1=pacman --root /mnt --cachedir=/mnt/var/cache/pacman/pkg -S &#039;&#039;package&#039;&#039;}} で壊れているパッケージを再インストールしてください。&lt;br /&gt;
&lt;br /&gt;
==== pacman: command not found ====&lt;br /&gt;
&lt;br /&gt;
pacmanのキャッシュディレクトリをシンボリックリンクしてはいけません。&lt;br /&gt;
代わりに別のキャッシュディレクトリを構成するか、バインドマウントを使用してください。&lt;br /&gt;
[https://bbs.archlinux.org/viewtopic.php?id=241213]&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;make install&amp;quot; を使ってソフトウェアをインストールしましたが、ファイルがどのパッケージにも属していません===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;conflicting files&amp;quot; エラーが出る場合、{{ic|--force}} スイッチをつけると pacman が手動でインストールしたソフトウェアを上書きします ({{ic|pacman -S --force}})。ファイルシステム中の&#039;&#039;所有されていない&#039;&#039;ファイルを検索するスクリプトについては [[Pacman ヒント#ファイルがどのパッケージにも所有されていないことを確認]] を見て下さい。&lt;br /&gt;
{{Warning|{{ic|--force}} スイッチを使う時は気をつけてください。間違った使用で重大な問題が発生することがあります。Arch ニュースで使うように指示が出ている時にだけ使うことを推奨します。}}&lt;br /&gt;
&lt;br /&gt;
===システムをアップグレードした後、再起動すると &amp;quot;unable to find root device&amp;quot; エラーが出て起動できません===&lt;br /&gt;
&lt;br /&gt;
おそらく initramfs がカーネルアップデート中に破損しています(不正に {{ic|--force}} オプションを使うと起こりえます)。2つの解決方法があります:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.&#039;&#039;&#039; &#039;&#039;Fallback&#039;&#039; エントリを試す:&lt;br /&gt;
&lt;br /&gt;
{{Tip|いずれの理由でエントリを削除した場合でも、ブートローダのメニューが表示された時に {{ic|Tab}} キー ([[Syslinux]] の場合) や {{ic|e}} ([[GRUB]] や [[systemd-boot]] の場合) を押して、{{ic|initramfs-linux-fallback.img}} に名前を変更して {{ic|Enter}} や {{ic|b}} を押して（ブートローダによる）新しいパラメータを使って起動できます。}}&lt;br /&gt;
&lt;br /&gt;
システムが起動したら、コンソールかターミナルから次のコマンド (持ち合わせの {{Pkg|linux}} カーネル用)を入力して initramfs イメージを再生成します:&lt;br /&gt;
&lt;br /&gt;
{{bc|# mkinitcpio -p linux}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2.&#039;&#039;&#039; それが機能しない場合は、現在の Arch リリース （CD/DVDまたはUSBスティック） から、ルートパーティションとブートパーティションをマウントします。次に、chroot します。&lt;br /&gt;
&lt;br /&gt;
 # arch-chroot /mnt&lt;br /&gt;
 # pacman -Syu mkinitcpio systemd linux&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* もしあなたが現在のリリースを持っていなかったり、他の &amp;quot;Live&amp;quot;  Linux ディストリビューションを持っていないなら、昔ながらの方法で [[chroot]] することができます。もちろん、単に {{ic|arch-chroot}} スクリプトを実行するよりも、より多くの入力が必要になります。&lt;br /&gt;
* &amp;quot;pacman&amp;quot; が {{ic|Could not resolve host}} で失敗した場合は、 [https://wiki.archlinux.jp/index.php/%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E8%A8%AD%E5%AE%9A#.E6.8E.A5.E7.B6.9A.E3.81.AE.E7.A2.BA.E8.AA.8D 接続の確認] をクリックしてください。&lt;br /&gt;
* arch-chroot または chroot 環境に入れないが、パッケージを再インストールする必要がある場合は、ルートパーティションで &amp;quot;pacman&amp;quot; コマンド {{ic|pacman--sysroot/mnt-Syu foo bar}} を使用できます。}}&lt;br /&gt;
&lt;br /&gt;
カーネル ({{Pkg|linux}} パッケージ) を再インストールすると、自動的に {{ic|mkinitcpio-p linux}} で initramfsイメージが再生成されます。これを個別に行う必要はありません。&lt;br /&gt;
&lt;br /&gt;
その後、{{ic|exit}}、{{ic|umount/mnt/{boot,} }} および {{ic|reboot}} を実行してください。&lt;br /&gt;
&lt;br /&gt;
===signature from &amp;quot;User &amp;lt;email@gmail.com&amp;gt;&amp;quot; is unknown trust===&lt;br /&gt;
&lt;br /&gt;
以下の方法を試してみてください:&lt;br /&gt;
&lt;br /&gt;
*{{ic|pacman-key --refresh-keys}} で既知のキーを更新してください。&lt;br /&gt;
*手動で {{ic|archlinux-keyring}} パッケージをアップグレードしてください: {{ic|pacman -Sy archlinux-keyring &amp;amp;&amp;amp; pacman -Su}}。&lt;br /&gt;
*[[pacman-key#全ての鍵のリセット]]に従って下さい。&lt;br /&gt;
&lt;br /&gt;
===PGP 鍵のインポートが要求される===&lt;br /&gt;
&lt;br /&gt;
古いバージョンの ISO で Arch を[[インストールガイド|インストール]]しようとすると、PGP 鍵のインポートが要求されることがあります。鍵のダウンロードに同意して先に進んでください。PGP 鍵を追加できない場合、キーリングを更新したり {{Pkg|archlinux-keyring}} をアップグレードしてください ([[#signature from &amp;quot;User &amp;lt;email@gmail.com&amp;gt;&amp;quot; is unknown trust|上]]を参照)。&lt;br /&gt;
&lt;br /&gt;
===エラー: key &amp;quot;0123456789ABCDEF&amp;quot; could not be looked up remotely===&lt;br /&gt;
&lt;br /&gt;
パッケージが {{Pkg|archlinux-keyring}} に最近追加された新しい鍵で署名されている場合、アップグレード時にはまだローカルで鍵が利用できない状態になっていることがあります (鶏が先か、卵が先か)。インストール済みの {{Pkg|archlinux-keyring}} に鍵が含まれていない場合、Pacman は鍵サーバーを確認しにいきますが、プロキシやファイアウォールを使っているなどの理由でエラーになることがあります。[[#signature from &amp;quot;User &amp;lt;email@gmail.com&amp;gt;&amp;quot; is unknown trust|上]]で書かれているように {{Pkg|archlinux-keyring}} を先にアップグレードしてください。&lt;br /&gt;
&lt;br /&gt;
===signature from &amp;quot;User &amp;lt;email@archlinux.org&amp;gt;&amp;quot; is invalid===&lt;br /&gt;
&lt;br /&gt;
システム[[時刻]]が間違っていると、署名鍵が期限切れとして扱われたりパッケージの署名チェックが失敗して、以下のようなエラーが表示されます:&lt;br /&gt;
&lt;br /&gt;
 error: &#039;&#039;package&#039;&#039;: signature from &amp;quot;User &amp;lt;email@archlinux.org&amp;gt;&amp;quot; is invalid&lt;br /&gt;
 error: failed to commit transaction (invalid or corrupted package (PGP signature))&lt;br /&gt;
 Errors occured, no packages were upgraded.&lt;br /&gt;
&lt;br /&gt;
パッケージをインストール・アップグレードする前に　{{ic|ntpd -qg}} と {{ic|hwclock -w}} を root で実行して下さい。&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;failed to commit transaction (invalid or corrupted package)&amp;quot; エラー===&lt;br /&gt;
&lt;br /&gt;
{{ic|/var/cache/pacman/pkg}} にある {{ic|*.part}} ファイル (部分ダウンロードファイル) を探して、ファイルを削除して下さい ({{ic|pacman.conf}} で {{ic|XferCommand}} を設定しているとこのエラーがよく起こります)。&lt;br /&gt;
&lt;br /&gt;
 # find /var/cache/pacman/pkg/ -iname &amp;quot;*.part&amp;quot; -exec rm {} \;&lt;br /&gt;
&lt;br /&gt;
===pacman を使うたびにエラーが表示されます: &#039;warning: current locale is invalid; using default &amp;quot;C&amp;quot; locale&#039;===&lt;br /&gt;
&lt;br /&gt;
そのエラーは、あなたの locale が正しく設定されていないと言っています。[[ロケール]]を見て下さい。&lt;br /&gt;
&lt;br /&gt;
===pacman でプロキシ設定を使うにはどうすればいいですか？===&lt;br /&gt;
&lt;br /&gt;
環境変数 ({{ic|$http_proxy}}, {{ic|$ftp_proxy}} など) を使って下さい。[[sudo]] と一緒に Pacman を使う時は、[[sudo#環境変数|環境変数を pacman に渡すように]] sudo を設定してください。&lt;br /&gt;
&lt;br /&gt;
===明示的にインストールしたか依存でインストールしたかの情報を保ちながら、全てのパッケージを再インストールするにはどうすればいいですか===&lt;br /&gt;
&lt;br /&gt;
ネイティブのパッケージを全て再インストールするには: {{ic|&amp;lt;nowiki&amp;gt;pacman -Qnq | pacman -S -&amp;lt;/nowiki&amp;gt;}} ({{ic|-S}} オプションはデフォルトでインストールの理由を維持します)。&lt;br /&gt;
&lt;br /&gt;
次に自分で作成したパッケージを全て再インストールしてください、{{ic|pacman -Qmq}} でパッケージを確認できます。&lt;br /&gt;
&lt;br /&gt;
===パッケージのダウンロード時にフリーズする===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;pacman&#039;&#039; がリポジトリのアップデートや同期をできないというネットワークの問題がいくつか報告されています [https://bbs.archlinux.org/viewtopic.php?id&amp;amp;#61;68944] [https://bbs.archlinux.org/viewtopic.php?id&amp;amp;#61;65728]。Arch Linux のインストール時にこの問題が発生する場合、&#039;&#039;pacman&#039;&#039; のデフォルトのファイルダウンローダを置き換えることで解決します (詳しくは [[pacman のパフォーマンスの向上]]を参照)。[[VirtualBox]] で Arch Linux をゲスト OS としてインストールする時にこの問題が起こる場合、マシンのプロパティで &#039;&#039;NAT&#039;&#039; の代わりに &#039;&#039;Host interface&#039;&#039; を使うことで解決します。&lt;br /&gt;
&lt;br /&gt;
===Failed retrieving file &#039;core.db&#039; from mirror===&lt;br /&gt;
&lt;br /&gt;
[[ミラー]]を正しく設定しているのにこのエラーメッセージが表示される場合、[[Resolv.conf|ネームサーバ]]を設定してみてください。&lt;br /&gt;
&lt;br /&gt;
==参照==&lt;br /&gt;
&lt;br /&gt;
*[https://www.archlinux.org/pacman/ Pacman ホームページ]&lt;br /&gt;
*{{man|3|libalpm}}&lt;br /&gt;
*{{man|8|pacman}}&lt;br /&gt;
*{{man|5|pacman.conf}}&lt;br /&gt;
*{{man|8|repo-add}}&lt;/div&gt;</summary>
		<author><name>Funcrab</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Snapper&amp;diff=23096</id>
		<title>Snapper</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Snapper&amp;diff=23096"/>
		<updated>2022-01-10T14:48:23Z</updated>

		<summary type="html">&lt;p&gt;Funcrab: lessのgg（最初に戻る）よりもq（exit）の方が実用的なので変更&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ファイルシステム]]&lt;br /&gt;
[[en:Snapper]]&lt;br /&gt;
[[zh-hans:Snapper]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|Btrfs}}&lt;br /&gt;
{{Related|mkinitcpio}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[http://snapper.io Snapper] は openSUSE の Arvin Schnell によって作られた、[[Btrfs]] のサブボリュームと [[LVM]] のボリュームのスナップショットの管理を助けるツールです。スナップショットを作成して比較したり、前のスナップショットに戻したり、自動スナップショットが行えます。&lt;br /&gt;
&lt;br /&gt;
==インストール==&lt;br /&gt;
安定版は {{Pkg|snapper}} パッケージからインストールできます。開発版は {{AUR|snapper-git}} パッケージで利用可能です。&lt;br /&gt;
&lt;br /&gt;
GUI は {{AUR|snapper-gui-git}} パッケージでインストールすることができます。&lt;br /&gt;
&lt;br /&gt;
==新しい設定の作成==&lt;br /&gt;
&lt;br /&gt;
Btrfs サブボリュームで Snapper の設定を作成する前に、あらかじめサブボリュームが作成されている必要があります。サブボリュームが存在しない場合、Snapper の設定をするまえに[[Btrfs#サブボリュームを作成する|サブボリュームを作成]]してください。&lt;br /&gt;
&lt;br /&gt;
Btrfs サブボリュームが {{ic|&#039;&#039;/path/to/subvolume&#039;&#039;}} に存在していて、{{ic|&#039;&#039;config&#039;&#039;}} という名前で新しく Snapper の設定を作るには:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; create-config &#039;&#039;/path/to/subvolume&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
上記のコマンドを実行すると:&lt;br /&gt;
*{{ic|/etc/snapper/config-templates}} にあるデフォルトのテンプレートに基づいて {{ic|/etc/snapper/configs/&#039;&#039;config&#039;&#039;}} に設定ファイルが作成されます。&lt;br /&gt;
*{{ic|&#039;&#039;/path/to/subvolume&#039;&#039;/.snapshots}} にサブボリュームが作成されてスナップショットが保存されます。スナップショットのパスは {{ic|&#039;&#039;/path/to/subvolume&#039;&#039;/.snapshots/&#039;&#039;#&#039;&#039;/snapshot}} になります ({{ic|&#039;&#039;#&#039;&#039;}} はスナップショット番号です)。&lt;br /&gt;
*{{ic|/etc/conf.d/snapper}} の {{ic|SNAPPER_CONFIGS}} に {{ic|&#039;&#039;config&#039;&#039;}} が追加されます。&lt;br /&gt;
&lt;br /&gt;
例えば、{{ic|/}} にマウントされたサブボリュームの設定ファイルを作成する場合:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c root create-config /&lt;br /&gt;
&lt;br /&gt;
この時点で、設定は有効になっています。[[cron]] デーモンが動作している場合、snapper は[[#自動タイムラインスナップショット|自動タイムラインスナップショット]]を作成します。[[cron]] デーモンを使っていない場合、systemd サービスとタイマーを使用する必要があります。[[#有効化/無効化]]を見てください。&lt;br /&gt;
&lt;br /&gt;
設定について詳しくは {{ic|snapper-configs}} の [[man ページ]]を参照。&lt;br /&gt;
&lt;br /&gt;
== スナップショットの作成 ==&lt;br /&gt;
&lt;br /&gt;
=== 自動タイムラインスナップショット ===&lt;br /&gt;
&lt;br /&gt;
Snapper では毎時・毎日・毎月・毎年に保存するスナップショットの数を設定できるスナップショットタイムラインを作成することができます。デフォルトでは1時間毎にスナップショットが取得されます。そして1日1回、タイムラインのクリーンアップアルゴリズムによって&amp;quot;古くなって要らなくなった&amp;quot;スナップショットを削除します。&lt;br /&gt;
&lt;br /&gt;
==== 有効化/無効化 ====&lt;br /&gt;
&lt;br /&gt;
[[cron]] デーモンが動作している場合、自動タイムラインスナップショットは自動的に起動します。無効化するには、サブボリュームに存在する設定ファイルを編集して以下を設定してください:&lt;br /&gt;
&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;TIMELINE_CREATE=&amp;quot;no&amp;quot;&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
[[cron]] デーモンを使っていない場合、パッケージに含まれている systemd ユニットを使うことができます。{{ic|snapper-timeline.timer}} を[[起動]]・[[有効化]]することで自動タイムラインスナップショットが開始されます。さらに、{{ic|snapper-cleanup.timer}} を[[起動]]・[[有効化]]すると定期的に古いスナップショットが消去されます。&lt;br /&gt;
&lt;br /&gt;
{{Note|cron デーモンと有効化された systemd ユニットがともに動作すると、重複したスナップショットが作成される結果になる場合があります。systemd ユニットを使いつつ cron 側を無効にできるかもしれない一つの手法に、[[pacman]] の [[pacman#インストールさせないファイルを設定|NoExtract]] および [[pacman#アップグレードさせないファイルを設定|NoUpgrade]] を使い、snapper のパッケージの cron ファイルをインストールしない方法があります。[https://unix.stackexchange.com/questions/425570/snapper-has-recently-started-performing-duplicate-snapshots-each-hour] を見てください。}}&lt;br /&gt;
&lt;br /&gt;
==== スナップショットのリミットの設定 ====&lt;br /&gt;
&lt;br /&gt;
デフォルト設定では、毎時間10個、毎日10個、毎月10個、毎年10個のスナップショットが保存されます。{{ic|/}} など頻繁にサブボリュームに変更を加える場合は、この設定を変更したほうが良いでしょう。[[#ドライブの負担を抑える]]を見て下さい。&lt;br /&gt;
&lt;br /&gt;
以下は、5時間、毎日7個のスナップショットだけを維持して、毎月・毎年は保存しない設定の例です:&lt;br /&gt;
{{hc|head=/etc/snapper/configs/&#039;&#039;config&#039;&#039;|output=&lt;br /&gt;
TIMELINE_MIN_AGE=&amp;quot;1800&amp;quot;&lt;br /&gt;
TIMELINE_LIMIT_HOURLY=&amp;quot;5&amp;quot;&lt;br /&gt;
TIMELINE_LIMIT_DAILY=&amp;quot;7&amp;quot;&lt;br /&gt;
TIMELINE_LIMIT_WEEKLY=&amp;quot;0&amp;quot;&lt;br /&gt;
TIMELINE_LIMIT_MONTHLY=&amp;quot;0&amp;quot;&lt;br /&gt;
TIMELINE_LIMIT_YEARLY=&amp;quot;0&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== スナップショットとクリーンアップの頻度を変更する ====&lt;br /&gt;
&lt;br /&gt;
systemd タイマーを使っている場合、タイマーを[[Systemd#ユニットファイルの編集|編集]]してスナップショットの頻度を変更できます。&lt;br /&gt;
&lt;br /&gt;
例えば、{{ic|snapper-timeline.timer}} を編集して以下のようにすることで5分毎にスナップショットが作成されます:&lt;br /&gt;
&lt;br /&gt;
 [Timer]&lt;br /&gt;
 OnCalendar=&lt;br /&gt;
 OnCalendar=*:0/5&lt;br /&gt;
&lt;br /&gt;
{{Note|設定パラメータ {{ic|TIMELINE_LIMIT_HOURLY}} は上記の設定に関連付けられています。上の例では5分毎にスナップショットが作成されるようになります。}}&lt;br /&gt;
&lt;br /&gt;
{{ic|snapper-cleanup.timer}} を編集するときは {{ic|OnUnitActiveSec}} を変更してください。1時間毎に古いスナップショットを消去するには、以下を追加:&lt;br /&gt;
&lt;br /&gt;
 [Timer]&lt;br /&gt;
 OnUnitActiveSec=1h&lt;br /&gt;
&lt;br /&gt;
詳しくは [[Systemd/タイマー]]や [[Systemd#ドロップインファイル]]を参照。&lt;br /&gt;
&lt;br /&gt;
=== 手動スナップショット ===&lt;br /&gt;
&lt;br /&gt;
==== シンプルなスナップショット ====&lt;br /&gt;
&lt;br /&gt;
デフォルトでは Snapper は他のスナップショットと特別な関係を持たない、単純なスナップショットを作成します。&lt;br /&gt;
&lt;br /&gt;
手動でサブボリュームのスナップショットを作成するには、以下のコマンドを実行:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; create --description &#039;&#039;desc&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
上記のコマンドはクリーンアップアルゴリズムを使用しないため、スナップショットは明示的に[[#スナップショットの削除|削除]]するまでずっと残り続けます。&lt;br /&gt;
&lt;br /&gt;
クリーンアップアルゴリズムを設定するには {{ic|create}} の後に {{ic|-c}} フラグを使用して {{ic|number}}, {{ic|timeline}}, {{ic|pre}}, {{ic|post}} のどれかを選択してください。{{ic|number}} は設定ファイルで指定された番号にあわせて定期的にスナップショットを削除します。例えば、{{ic|number}} アルゴリズムを使用するスナップショットを作成するには:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; create -c number&lt;br /&gt;
&lt;br /&gt;
{{ic|timeline}} スナップショットについては[[#自動タイムラインスナップショット|自動タイムラインスナップショット]]を、{{ic|pre}} と {{ic|post}} については[[#事前事後のスナップショット|事前事後のスナップショット]]を見てください。&lt;br /&gt;
&lt;br /&gt;
==== 事前事後のスナップショット ====&lt;br /&gt;
&lt;br /&gt;
シンプルなスナップショットだけでなく、Snapper では事前事後のスナップショットを作成できます。事前 (&#039;&#039;pre&#039;&#039;) スナップショットには必ず対応する事後 (&#039;&#039;post&#039;&#039;) スナップショットが存在します。このペアによってシステムに変更を加える前後のスナップショットを作成することができます。&lt;br /&gt;
&lt;br /&gt;
事前事後のスナップショットを作成するには、まず事前スナップショットを作成:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; create -t pre -p&lt;br /&gt;
&lt;br /&gt;
上記のコマンドでスナップショット番号が出力されます。&lt;br /&gt;
&lt;br /&gt;
それからシステムに何らかの変更を加えます (例えば新しいプログラムをインストールしたり、ソフトウェアをアップグレードするなど)。&lt;br /&gt;
&lt;br /&gt;
次に事後のスナップショットを作成:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; create -t post --pre-number &#039;&#039;#&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|&#039;&#039;#&#039;&#039;}} は事前スナップショットの番号に置き換えてください。&lt;br /&gt;
&lt;br /&gt;
{{ic|create}} に {{ic|--command}} フラグを指定して、コマンドをラップすることもできます:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; create --command &#039;&#039;cmd&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|&#039;&#039;cmd&#039;&#039;}} は事前事後のスナップショットを作成する間に実行したいコマンドに置き換えてください。&lt;br /&gt;
&lt;br /&gt;
[[#pacman のトランザクションをスナップショットで記録|pacman のトランザクションをスナップショットで記録]]も見てください。&lt;br /&gt;
&lt;br /&gt;
=== 起動時にスナップショットを作成 ===&lt;br /&gt;
&lt;br /&gt;
snapper で {{ic|root}} 設定のスナップショットを作成するには {{ic|snapper-boot.timer}} を[[有効化]]してください。&lt;br /&gt;
&lt;br /&gt;
== スナップショットの確認 ==&lt;br /&gt;
&lt;br /&gt;
作成されたスナップショットを確認するには:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; list&lt;br /&gt;
&lt;br /&gt;
== 設定の確認 ==&lt;br /&gt;
&lt;br /&gt;
全ての[[#新しい設定の作成|設定]]を確認するには:&lt;br /&gt;
&lt;br /&gt;
 # snapper list-configs&lt;br /&gt;
&lt;br /&gt;
== スナップショットの削除 ==&lt;br /&gt;
&lt;br /&gt;
スナップショット番号 {{ic|&#039;&#039;#&#039;&#039;}} を削除するには:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; delete &#039;&#039;#&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
一度に複数のスナップショットを削除できます。例えば、root 設定の65と70のスナップショットを削除するには:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c root delete 65 70&lt;br /&gt;
&lt;br /&gt;
{{Note|事前スナップショットを削除した場合、事後スナップショットも一緒に削除してください。逆も然りです。}}&lt;br /&gt;
&lt;br /&gt;
==root 以外のユーザーでアクセス==&lt;br /&gt;
設定は root ユーザーによって作成され、デフォルトでは、root だけが設定を確認したり変更できます。&lt;br /&gt;
&lt;br /&gt;
特定のユーザーからもスナップショットを確認できるようにしたいときは、{{ic|/etc/snapper/configs/&#039;&#039;config&#039;&#039;}} ファイルの {{ic|ALLOW_USERS}} の値を変更してください。そうすれば通常ユーザーでも {{ic|snapper -c &#039;&#039;config&#039;&#039;list}} を実行できるようになります。&lt;br /&gt;
&lt;br /&gt;
さらに、ユーザーを使って {{ic|.snapshots}} ディレクトリを閲覧できるようにしたい、それでいてディレクトリの所有者は root のままにしておきたいということが考えられます。そのような場合、使用したいユーザーが属しているグループに、グループ所有者を変更してください。例えば {{ic|users}}　を使う場合:&lt;br /&gt;
&lt;br /&gt;
 # chmod a+rx .snapshots&lt;br /&gt;
 # chown :users .snapshots&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== pacman のトランザクションをスナップショットで記録 ===&lt;br /&gt;
&lt;br /&gt;
pacman の操作時に自動的にスナップショットを作成するためのパッケージが複数存在します:&lt;br /&gt;
&lt;br /&gt;
* {{App|pacupg|Btrfs のスナップショットでパッケージと AUR のアップグレードを記録して、簡単にロールバックできるようにするスクリプト。|https://github.com/crossroads1112/bin/tree/master/pacupg|{{AUR|pacupg}}}}&lt;br /&gt;
* {{App|snap-pac|openSUSE の YaST のように自動的に[[#事前事後のスナップショット|事前事後のスナップショット]]を作成します。[[Pacman#フック]]を使用しています。|https://github.com/wesbarnett/snap-pac|{{Pkg|snap-pac}}}}&lt;br /&gt;
* {{App|snap-pac-grub|{{pkg|snap-pac}} でスナップショットが作成された後に {{Pkg|grub-btrfs}} 用に GRUB エントリを更新します。[[Pacman#フック]]を使用します。||{{aur|snap-pac-grub}}}}&lt;br /&gt;
* {{App|snp|シェルコマンドの実行前後に snapper でスナップショットを取るラッパー。例: {{ic|$ snp pacman -Syu}}|https://gist.github.com/erikw/5229436|}}&lt;br /&gt;
&lt;br /&gt;
=== boot パーティションのバックアップ ===&lt;br /&gt;
&lt;br /&gt;
{{ic|/boot}} パーティションが btrfs ファイルシステム上に存在しない場合 (例: [[ESP]])、snapper でバックアップすることはできません。フックを使用してカーネルのアップデート時に boot パーティションを自動的に btrfs ファイルシステムにコピーさせることはできます。{{Pkg|snap-pac}} でも上手くバックアップされます。&lt;br /&gt;
{{hc|1=/etc/pacman.d/hooks/50-bootbackup.hook|2=&lt;br /&gt;
[Trigger]&lt;br /&gt;
Operation = Upgrade&lt;br /&gt;
Operation = Install&lt;br /&gt;
Operation = Remove&lt;br /&gt;
Type = Path&lt;br /&gt;
Target = usr/lib/modules/*/vmlinuz&lt;br /&gt;
&lt;br /&gt;
[Action]&lt;br /&gt;
Depends = rsync&lt;br /&gt;
Description = Backing up /boot...&lt;br /&gt;
When = PostTransaction&lt;br /&gt;
Exec = /usr/bin/rsync -a --delete /boot /.bootbackup&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== 外部ドライブに差分バックアップ ===&lt;br /&gt;
&lt;br /&gt;
以下のパッケージは {{ic|btrfs send}} と {{ic|btrfs receive}} を使用して外部ドライブにバックアップを差分で送信します:&lt;br /&gt;
&lt;br /&gt;
* {{App|buttersink|Btrfs スナップショットの rsync のようなもので、スナップショットの差分だけを送信することで自動的に同期を最適化します。|https://github.com/AmesCornish/buttersink.git|{{AUR|buttersink-git}}}}&lt;br /&gt;
* {{App|snap-sync|snapper スナップショットを使用して外部ドライブにバックアップします。|https://github.com/wesbarnett/snap-sync.git|{{Pkg|snap-sync}}}}&lt;br /&gt;
* {{App|snapsync|snapper 用の同期ツール。|https://github.com/doudou/snapsync|{{AUR|ruby-snapsync}}}}&lt;br /&gt;
&lt;br /&gt;
===推奨ファイルシステムレイアウト===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Note|1=以下のレイアウトは &#039;&#039;&#039;{{ic|snapper rollback}} を使用することは想定していません&#039;&#039;&#039;が、[[#/ を @ のスナップショットに復元|/ を @ のスナップショットに復元]]した時の問題を軽減します。[https://bbs.archlinux.org/viewtopic.php?id=194491 フォーラムスレッド] を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
以下は {{ic|/}} を簡単に復元できるようにするための推奨ファイルシステムレイアウトです。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ ファイルシステムレイアウト&lt;br /&gt;
! サブボリューム !! マウントポイント&lt;br /&gt;
|-&lt;br /&gt;
| @ || /&lt;br /&gt;
|-&lt;br /&gt;
| @home || /home&lt;br /&gt;
|-&lt;br /&gt;
| @snapshots || /.snapshots&lt;br /&gt;
|-&lt;br /&gt;
| @var_log || /var/log&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 subvolid=5&lt;br /&gt;
   |&lt;br /&gt;
   ├── @ -|&lt;br /&gt;
   |     含まれるディレクトリ:&lt;br /&gt;
   |       ├── /usr&lt;br /&gt;
   |       ├── /bin&lt;br /&gt;
   |       ├── /.snapshots&lt;br /&gt;
   |       ├── ...&lt;br /&gt;
   |&lt;br /&gt;
   ├── @home&lt;br /&gt;
   ├── @snapshots&lt;br /&gt;
   ├── @var_log&lt;br /&gt;
   └── @...&lt;br /&gt;
&lt;br /&gt;
{{ic|/.snapshots}} は {{ic|@snapshots}} のマウントポイントです。{{ic|@...}} は {{ic|/}} にマウントするサブボリューム ({{ic|@}}) とは別に保存したいサブボリュームになります。{{ic|/}} のスナップショットを作成するとき、他のサブボリュームはスナップショットに含まれません。ただし、別の snapper 設定を作成することで他のサブボリュームもスナップショットで記録できます。システムを {{ic|/}} のスナップショットの時点まで戻したいと思ったときに、他のサブボリュームには影響が及びません。&lt;br /&gt;
&lt;br /&gt;
例えば、{{ic|/}} をスナップショット時に戻したいが {{ic|/home}} は最新の状態のままにしたい場合、サブボリュームを作成して {{ic|/home}} にマウントしてください。詳しくは [[Btrfs#サブボリュームをマウントする]]を参照。&lt;br /&gt;
&lt;br /&gt;
上記のレイアウトは snapper ユーティリティで定期的に {{ic|/}} のスナップショットが作成できるのと同時に、起動できなくなった場合に Arch のライブ CD から {{ic|/}} を簡単に復元することができます。&lt;br /&gt;
&lt;br /&gt;
その場合、初期設定をしたら snapper に特別な設定をする必要はありません。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* サブボリュームが {{ic|@}} 下に入れ子になっていても、{{ic|/}} のスナップショットには含まれません。{{ic|/}} にマウントしているサブボリュームのスナップショットを保存したい場合は snapper でサブボリュームの設定を行ってください。&lt;br /&gt;
* [[Btrfs#スワップファイル|Btrfs の制限]]により、スナップショットされたボリュームは[[スワップ#スワップファイル|スワップファイル]]を含むことができません。スワップファイルを別のサブボリュームに置くか、[[スワップ#スワップパーティション|スワップパーティション]]を作成してください。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
====snapper の設定とマウントポイント====&lt;br /&gt;
&lt;br /&gt;
{{ic|/.snapshots}} がマウントされていないこと、フォルダとして存在しないことを確認してください:&lt;br /&gt;
 # umount /.snapshots&lt;br /&gt;
 # rm -r /.snapshots&lt;br /&gt;
&lt;br /&gt;
それから {{ic|/}} の[[#新しい設定の作成|新しい設定を作成]]します。&lt;br /&gt;
&lt;br /&gt;
そして {{ic|@snapshots}} を {{ic|/.snapshots}} に[[マウント]]してください。例えば、ファイルシステムが {{ic|/dev/sda1}} に存在する場合:&lt;br /&gt;
 # mount -o subvol=@snapshots /dev/sda1 /.snapshots&lt;br /&gt;
マウントを永続化させるには、[[fstab]] にエントリを作成します。&lt;br /&gt;
&lt;br /&gt;
もしくは fstab エントリが既に存在する場合、スナップショットのサブボリュームを再マウントします:&lt;br /&gt;
 # mount -a&lt;br /&gt;
&lt;br /&gt;
フォルダには {{ic|750}} の[[ファイルのパーミッションと属性#数字を使う方法|パーミッション]]を設定してください。&lt;br /&gt;
&lt;br /&gt;
snapper が作成するスナップショットは全て {{ic|@}} サブボリュームの外に保存されるため、snapper のスナップショットを削除しなくても {{ic|@}} を簡単に置き換えることができます。&lt;br /&gt;
&lt;br /&gt;
===={{ic|/}} を {{ic|@}} のスナップショットに復元 ====&lt;br /&gt;
&lt;br /&gt;
snapper のスナップショットを使って {{ic|/}} をリストアしたくなったら、まずは Arch Linux のライブ USB/CD を起動します。&lt;br /&gt;
&lt;br /&gt;
トップレベルのサブボリューム (subvolid=5) を[[マウント]]してください。{{ic|subvolid}} マウントフラグは省略します。&lt;br /&gt;
&lt;br /&gt;
{{ic|/mnt/@snapshots/*/info.xml}} から復元したいスナップショットを確認します:&lt;br /&gt;
{{Tip|{{ic|less}} を使ってファイルを確認できます:&lt;br /&gt;
 # cat /mnt/@snapshots/*/info.xml {{!}} less&lt;br /&gt;
次のページを見たいときは {{ic|space}} を、ファイルの最初に戻りたいときは {{ic|gg}} を使用します。}}&lt;br /&gt;
&lt;br /&gt;
{{ic|&amp;lt;description&amp;gt;}} タグと {{ic|&amp;lt;date&amp;gt;}} タグを見て、リストアしたいスナップショットが確認できたら、{{ic|&amp;lt;num&amp;gt;}} の番号をメモしてください。&lt;br /&gt;
&lt;br /&gt;
そして {{ic|@}} を他の場所 (例: {{ic|/@.broken}}) にして現在のシステムのコピーを保存します。もしくは {{ic|btrfs subvolume delete}} で {{ic|@}} を削除します。&lt;br /&gt;
&lt;br /&gt;
読み取り専用のスナップショットから読み書き可能なスナップショットを作成:&lt;br /&gt;
&lt;br /&gt;
 # btrfs subvol snapshot /mnt/@snapshots/&#039;&#039;#&#039;&#039;/snapshot /mnt/@&lt;br /&gt;
&lt;br /&gt;
{{ic|&#039;&#039;#&#039;&#039;}} は復元したい snapper のスナップショットの番号に置き換えてください。これで {{ic|/}} は前の状態に戻ります。再起動してください。&lt;br /&gt;
&lt;br /&gt;
===スナップショットからファイルを削除===&lt;br /&gt;
&lt;br /&gt;
過去のスナップショットから特定のファイルやフォルダを削除したい場合、[https://pypi.python.org/pypi/snapperS snapperS] というスクリプトが存在します。&lt;br /&gt;
&lt;br /&gt;
スクリプトを使わずにファイルを削除したい場合、以下のコマンドを実行して [https://unix.stackexchange.com/a/149933/3587 スナップショットのサブボリュームを読み書き可能] にする必要があります:&lt;br /&gt;
&lt;br /&gt;
 # btrfs property set /path/to/.snapshots/&amp;lt;snapshot_num&amp;gt;/snapshot ro false&lt;br /&gt;
&lt;br /&gt;
{{ic|1=ro=false}} となっていることを確認:&lt;br /&gt;
&lt;br /&gt;
{{hc|# btrfs property get /path/to/.snapshots/&amp;lt;snapshot_num&amp;gt;/snapshot|2=ro=false}}&lt;br /&gt;
&lt;br /&gt;
これで {{ic|/path/to/.snapshots/&amp;lt;snapshot_num&amp;gt;/snapshot}} のファイルは通常通りに編集することが可能になります。&lt;br /&gt;
&lt;br /&gt;
=== ドライブの負担を抑える ===&lt;br /&gt;
&lt;br /&gt;
頻繁に変更が加わるファイルシステム (例えば多数のシステムアップデートが行われる {{ic|/}} など) で長期間にわたって頻繁にスナップショットを取得すると動作がかなり遅くなることがあります。以下のようにすることで遅くなるのを回避できます:&lt;br /&gt;
* スナップショットを作成する価値がない {{ic|/var/cache/pacman/pkg}}, {{ic|/var/abs}}, {{ic|/var/tmp}}, {{ic|/srv}} などのサブボリュームを[[Btrfs#サブボリュームを作成する|作成]]する。&lt;br /&gt;
* [[#自動タイムラインスナップショット|自動タイムラインスナップショット]]を使う場合に、毎時・毎日・毎周・毎年のスナップショットのデフォルト設定を変更する。&lt;br /&gt;
&lt;br /&gt;
==== updatedb ====&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、{{ic|updatedb}} は snapper によって作成された {{ic|.snapshots}} ディレクトリのインデックスも作成してしまい、スナップショットが大量にある場合、深刻な遅延が発生したりメモリが異常に消費される原因になります。以下のように設定ファイルを編集することでインデックスを作成しないように {{ic|updatedb}} を設定できます:&lt;br /&gt;
{{hc|/etc/updatedb.conf|2=PRUNENAMES = &amp;quot;.snapshots&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
=== ログファイルの保持 ===&lt;br /&gt;
&lt;br /&gt;
{{ic|/var/log}} のサブボリュームを作成して {{ic|/}} のスナップショットに含まれないようにすることを推奨します。{{ic|/}} のスナップショットを復元したときにログファイルまで前の状態に戻ってしまうことがなくなり、トラブルシューティングが楽になります。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
===Snapper のログ===&lt;br /&gt;
Snapper は全ての活動を {{ic|/var/log/snapper.log}} に書き出します。何か問題が発生しているように感じたら真っ先にこのファイルをチェックしてください。&lt;br /&gt;
&lt;br /&gt;
毎時・毎日・毎週のスナップショットに問題がある場合、おそらく cronie サービス (もしくはその他の cron デーモン) が動いていなかったのが原因だということが多くあります。&lt;br /&gt;
&lt;br /&gt;
===IO エラー===&lt;br /&gt;
スナップショットを作成しようとすると IO エラーが表示される場合、スナップショットを作成しようとしたサブボリュームと関連付けられている [https://bbs.archlinux.org/viewtopic.php?id=164404 .snapshots] ディレクトリもサブボリュームになっていることを確認してください。&lt;br /&gt;
&lt;br /&gt;
また、{{ic|.snapshots}} の所有者が root になっていない可能性もあります ({{ic|/var/log/snapper.log}} に {{ic|Btrfs.cc(openInfosDir):219 - .snapshots must have owner root}} というエラーが出力されます)。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
* [http://snapper.io/ Snapper ホームページ]&lt;br /&gt;
* [https://en.opensuse.org/Portal:Snapper openSUSE Snapper ポータル]&lt;br /&gt;
* [https://btrfs.wiki.kernel.org/index.php/Main_Page Btrfs ホームページ]&lt;br /&gt;
* [https://www.linux.com/news/enterprise/systems-management/878490-snapper-suses-ultimate-btrfs-snapshot-manager/ Linux.com: Snapper: SUSE&#039;s Ultimate Btrfs Snapshot Manager]&lt;/div&gt;</summary>
		<author><name>Funcrab</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Snapper&amp;diff=23095</id>
		<title>Snapper</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Snapper&amp;diff=23095"/>
		<updated>2022-01-10T14:46:53Z</updated>

		<summary type="html">&lt;p&gt;Funcrab: /* {{ic|/}} を {{ic|@}} のスナップショットに復元 */ lessNoexit&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ファイルシステム]]&lt;br /&gt;
[[en:Snapper]]&lt;br /&gt;
[[zh-hans:Snapper]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|Btrfs}}&lt;br /&gt;
{{Related|mkinitcpio}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[http://snapper.io Snapper] は openSUSE の Arvin Schnell によって作られた、[[Btrfs]] のサブボリュームと [[LVM]] のボリュームのスナップショットの管理を助けるツールです。スナップショットを作成して比較したり、前のスナップショットに戻したり、自動スナップショットが行えます。&lt;br /&gt;
&lt;br /&gt;
==インストール==&lt;br /&gt;
安定版は {{Pkg|snapper}} パッケージからインストールできます。開発版は {{AUR|snapper-git}} パッケージで利用可能です。&lt;br /&gt;
&lt;br /&gt;
GUI は {{AUR|snapper-gui-git}} パッケージでインストールすることができます。&lt;br /&gt;
&lt;br /&gt;
==新しい設定の作成==&lt;br /&gt;
&lt;br /&gt;
Btrfs サブボリュームで Snapper の設定を作成する前に、あらかじめサブボリュームが作成されている必要があります。サブボリュームが存在しない場合、Snapper の設定をするまえに[[Btrfs#サブボリュームを作成する|サブボリュームを作成]]してください。&lt;br /&gt;
&lt;br /&gt;
Btrfs サブボリュームが {{ic|&#039;&#039;/path/to/subvolume&#039;&#039;}} に存在していて、{{ic|&#039;&#039;config&#039;&#039;}} という名前で新しく Snapper の設定を作るには:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; create-config &#039;&#039;/path/to/subvolume&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
上記のコマンドを実行すると:&lt;br /&gt;
*{{ic|/etc/snapper/config-templates}} にあるデフォルトのテンプレートに基づいて {{ic|/etc/snapper/configs/&#039;&#039;config&#039;&#039;}} に設定ファイルが作成されます。&lt;br /&gt;
*{{ic|&#039;&#039;/path/to/subvolume&#039;&#039;/.snapshots}} にサブボリュームが作成されてスナップショットが保存されます。スナップショットのパスは {{ic|&#039;&#039;/path/to/subvolume&#039;&#039;/.snapshots/&#039;&#039;#&#039;&#039;/snapshot}} になります ({{ic|&#039;&#039;#&#039;&#039;}} はスナップショット番号です)。&lt;br /&gt;
*{{ic|/etc/conf.d/snapper}} の {{ic|SNAPPER_CONFIGS}} に {{ic|&#039;&#039;config&#039;&#039;}} が追加されます。&lt;br /&gt;
&lt;br /&gt;
例えば、{{ic|/}} にマウントされたサブボリュームの設定ファイルを作成する場合:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c root create-config /&lt;br /&gt;
&lt;br /&gt;
この時点で、設定は有効になっています。[[cron]] デーモンが動作している場合、snapper は[[#自動タイムラインスナップショット|自動タイムラインスナップショット]]を作成します。[[cron]] デーモンを使っていない場合、systemd サービスとタイマーを使用する必要があります。[[#有効化/無効化]]を見てください。&lt;br /&gt;
&lt;br /&gt;
設定について詳しくは {{ic|snapper-configs}} の [[man ページ]]を参照。&lt;br /&gt;
&lt;br /&gt;
== スナップショットの作成 ==&lt;br /&gt;
&lt;br /&gt;
=== 自動タイムラインスナップショット ===&lt;br /&gt;
&lt;br /&gt;
Snapper では毎時・毎日・毎月・毎年に保存するスナップショットの数を設定できるスナップショットタイムラインを作成することができます。デフォルトでは1時間毎にスナップショットが取得されます。そして1日1回、タイムラインのクリーンアップアルゴリズムによって&amp;quot;古くなって要らなくなった&amp;quot;スナップショットを削除します。&lt;br /&gt;
&lt;br /&gt;
==== 有効化/無効化 ====&lt;br /&gt;
&lt;br /&gt;
[[cron]] デーモンが動作している場合、自動タイムラインスナップショットは自動的に起動します。無効化するには、サブボリュームに存在する設定ファイルを編集して以下を設定してください:&lt;br /&gt;
&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;TIMELINE_CREATE=&amp;quot;no&amp;quot;&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
[[cron]] デーモンを使っていない場合、パッケージに含まれている systemd ユニットを使うことができます。{{ic|snapper-timeline.timer}} を[[起動]]・[[有効化]]することで自動タイムラインスナップショットが開始されます。さらに、{{ic|snapper-cleanup.timer}} を[[起動]]・[[有効化]]すると定期的に古いスナップショットが消去されます。&lt;br /&gt;
&lt;br /&gt;
{{Note|cron デーモンと有効化された systemd ユニットがともに動作すると、重複したスナップショットが作成される結果になる場合があります。systemd ユニットを使いつつ cron 側を無効にできるかもしれない一つの手法に、[[pacman]] の [[pacman#インストールさせないファイルを設定|NoExtract]] および [[pacman#アップグレードさせないファイルを設定|NoUpgrade]] を使い、snapper のパッケージの cron ファイルをインストールしない方法があります。[https://unix.stackexchange.com/questions/425570/snapper-has-recently-started-performing-duplicate-snapshots-each-hour] を見てください。}}&lt;br /&gt;
&lt;br /&gt;
==== スナップショットのリミットの設定 ====&lt;br /&gt;
&lt;br /&gt;
デフォルト設定では、毎時間10個、毎日10個、毎月10個、毎年10個のスナップショットが保存されます。{{ic|/}} など頻繁にサブボリュームに変更を加える場合は、この設定を変更したほうが良いでしょう。[[#ドライブの負担を抑える]]を見て下さい。&lt;br /&gt;
&lt;br /&gt;
以下は、5時間、毎日7個のスナップショットだけを維持して、毎月・毎年は保存しない設定の例です:&lt;br /&gt;
{{hc|head=/etc/snapper/configs/&#039;&#039;config&#039;&#039;|output=&lt;br /&gt;
TIMELINE_MIN_AGE=&amp;quot;1800&amp;quot;&lt;br /&gt;
TIMELINE_LIMIT_HOURLY=&amp;quot;5&amp;quot;&lt;br /&gt;
TIMELINE_LIMIT_DAILY=&amp;quot;7&amp;quot;&lt;br /&gt;
TIMELINE_LIMIT_WEEKLY=&amp;quot;0&amp;quot;&lt;br /&gt;
TIMELINE_LIMIT_MONTHLY=&amp;quot;0&amp;quot;&lt;br /&gt;
TIMELINE_LIMIT_YEARLY=&amp;quot;0&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== スナップショットとクリーンアップの頻度を変更する ====&lt;br /&gt;
&lt;br /&gt;
systemd タイマーを使っている場合、タイマーを[[Systemd#ユニットファイルの編集|編集]]してスナップショットの頻度を変更できます。&lt;br /&gt;
&lt;br /&gt;
例えば、{{ic|snapper-timeline.timer}} を編集して以下のようにすることで5分毎にスナップショットが作成されます:&lt;br /&gt;
&lt;br /&gt;
 [Timer]&lt;br /&gt;
 OnCalendar=&lt;br /&gt;
 OnCalendar=*:0/5&lt;br /&gt;
&lt;br /&gt;
{{Note|設定パラメータ {{ic|TIMELINE_LIMIT_HOURLY}} は上記の設定に関連付けられています。上の例では5分毎にスナップショットが作成されるようになります。}}&lt;br /&gt;
&lt;br /&gt;
{{ic|snapper-cleanup.timer}} を編集するときは {{ic|OnUnitActiveSec}} を変更してください。1時間毎に古いスナップショットを消去するには、以下を追加:&lt;br /&gt;
&lt;br /&gt;
 [Timer]&lt;br /&gt;
 OnUnitActiveSec=1h&lt;br /&gt;
&lt;br /&gt;
詳しくは [[Systemd/タイマー]]や [[Systemd#ドロップインファイル]]を参照。&lt;br /&gt;
&lt;br /&gt;
=== 手動スナップショット ===&lt;br /&gt;
&lt;br /&gt;
==== シンプルなスナップショット ====&lt;br /&gt;
&lt;br /&gt;
デフォルトでは Snapper は他のスナップショットと特別な関係を持たない、単純なスナップショットを作成します。&lt;br /&gt;
&lt;br /&gt;
手動でサブボリュームのスナップショットを作成するには、以下のコマンドを実行:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; create --description &#039;&#039;desc&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
上記のコマンドはクリーンアップアルゴリズムを使用しないため、スナップショットは明示的に[[#スナップショットの削除|削除]]するまでずっと残り続けます。&lt;br /&gt;
&lt;br /&gt;
クリーンアップアルゴリズムを設定するには {{ic|create}} の後に {{ic|-c}} フラグを使用して {{ic|number}}, {{ic|timeline}}, {{ic|pre}}, {{ic|post}} のどれかを選択してください。{{ic|number}} は設定ファイルで指定された番号にあわせて定期的にスナップショットを削除します。例えば、{{ic|number}} アルゴリズムを使用するスナップショットを作成するには:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; create -c number&lt;br /&gt;
&lt;br /&gt;
{{ic|timeline}} スナップショットについては[[#自動タイムラインスナップショット|自動タイムラインスナップショット]]を、{{ic|pre}} と {{ic|post}} については[[#事前事後のスナップショット|事前事後のスナップショット]]を見てください。&lt;br /&gt;
&lt;br /&gt;
==== 事前事後のスナップショット ====&lt;br /&gt;
&lt;br /&gt;
シンプルなスナップショットだけでなく、Snapper では事前事後のスナップショットを作成できます。事前 (&#039;&#039;pre&#039;&#039;) スナップショットには必ず対応する事後 (&#039;&#039;post&#039;&#039;) スナップショットが存在します。このペアによってシステムに変更を加える前後のスナップショットを作成することができます。&lt;br /&gt;
&lt;br /&gt;
事前事後のスナップショットを作成するには、まず事前スナップショットを作成:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; create -t pre -p&lt;br /&gt;
&lt;br /&gt;
上記のコマンドでスナップショット番号が出力されます。&lt;br /&gt;
&lt;br /&gt;
それからシステムに何らかの変更を加えます (例えば新しいプログラムをインストールしたり、ソフトウェアをアップグレードするなど)。&lt;br /&gt;
&lt;br /&gt;
次に事後のスナップショットを作成:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; create -t post --pre-number &#039;&#039;#&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|&#039;&#039;#&#039;&#039;}} は事前スナップショットの番号に置き換えてください。&lt;br /&gt;
&lt;br /&gt;
{{ic|create}} に {{ic|--command}} フラグを指定して、コマンドをラップすることもできます:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; create --command &#039;&#039;cmd&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|&#039;&#039;cmd&#039;&#039;}} は事前事後のスナップショットを作成する間に実行したいコマンドに置き換えてください。&lt;br /&gt;
&lt;br /&gt;
[[#pacman のトランザクションをスナップショットで記録|pacman のトランザクションをスナップショットで記録]]も見てください。&lt;br /&gt;
&lt;br /&gt;
=== 起動時にスナップショットを作成 ===&lt;br /&gt;
&lt;br /&gt;
snapper で {{ic|root}} 設定のスナップショットを作成するには {{ic|snapper-boot.timer}} を[[有効化]]してください。&lt;br /&gt;
&lt;br /&gt;
== スナップショットの確認 ==&lt;br /&gt;
&lt;br /&gt;
作成されたスナップショットを確認するには:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; list&lt;br /&gt;
&lt;br /&gt;
== 設定の確認 ==&lt;br /&gt;
&lt;br /&gt;
全ての[[#新しい設定の作成|設定]]を確認するには:&lt;br /&gt;
&lt;br /&gt;
 # snapper list-configs&lt;br /&gt;
&lt;br /&gt;
== スナップショットの削除 ==&lt;br /&gt;
&lt;br /&gt;
スナップショット番号 {{ic|&#039;&#039;#&#039;&#039;}} を削除するには:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; delete &#039;&#039;#&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
一度に複数のスナップショットを削除できます。例えば、root 設定の65と70のスナップショットを削除するには:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c root delete 65 70&lt;br /&gt;
&lt;br /&gt;
{{Note|事前スナップショットを削除した場合、事後スナップショットも一緒に削除してください。逆も然りです。}}&lt;br /&gt;
&lt;br /&gt;
==root 以外のユーザーでアクセス==&lt;br /&gt;
設定は root ユーザーによって作成され、デフォルトでは、root だけが設定を確認したり変更できます。&lt;br /&gt;
&lt;br /&gt;
特定のユーザーからもスナップショットを確認できるようにしたいときは、{{ic|/etc/snapper/configs/&#039;&#039;config&#039;&#039;}} ファイルの {{ic|ALLOW_USERS}} の値を変更してください。そうすれば通常ユーザーでも {{ic|snapper -c &#039;&#039;config&#039;&#039;list}} を実行できるようになります。&lt;br /&gt;
&lt;br /&gt;
さらに、ユーザーを使って {{ic|.snapshots}} ディレクトリを閲覧できるようにしたい、それでいてディレクトリの所有者は root のままにしておきたいということが考えられます。そのような場合、使用したいユーザーが属しているグループに、グループ所有者を変更してください。例えば {{ic|users}}　を使う場合:&lt;br /&gt;
&lt;br /&gt;
 # chmod a+rx .snapshots&lt;br /&gt;
 # chown :users .snapshots&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== pacman のトランザクションをスナップショットで記録 ===&lt;br /&gt;
&lt;br /&gt;
pacman の操作時に自動的にスナップショットを作成するためのパッケージが複数存在します:&lt;br /&gt;
&lt;br /&gt;
* {{App|pacupg|Btrfs のスナップショットでパッケージと AUR のアップグレードを記録して、簡単にロールバックできるようにするスクリプト。|https://github.com/crossroads1112/bin/tree/master/pacupg|{{AUR|pacupg}}}}&lt;br /&gt;
* {{App|snap-pac|openSUSE の YaST のように自動的に[[#事前事後のスナップショット|事前事後のスナップショット]]を作成します。[[Pacman#フック]]を使用しています。|https://github.com/wesbarnett/snap-pac|{{Pkg|snap-pac}}}}&lt;br /&gt;
* {{App|snap-pac-grub|{{pkg|snap-pac}} でスナップショットが作成された後に {{Pkg|grub-btrfs}} 用に GRUB エントリを更新します。[[Pacman#フック]]を使用します。||{{aur|snap-pac-grub}}}}&lt;br /&gt;
* {{App|snp|シェルコマンドの実行前後に snapper でスナップショットを取るラッパー。例: {{ic|$ snp pacman -Syu}}|https://gist.github.com/erikw/5229436|}}&lt;br /&gt;
&lt;br /&gt;
=== boot パーティションのバックアップ ===&lt;br /&gt;
&lt;br /&gt;
{{ic|/boot}} パーティションが btrfs ファイルシステム上に存在しない場合 (例: [[ESP]])、snapper でバックアップすることはできません。フックを使用してカーネルのアップデート時に boot パーティションを自動的に btrfs ファイルシステムにコピーさせることはできます。{{Pkg|snap-pac}} でも上手くバックアップされます。&lt;br /&gt;
{{hc|1=/etc/pacman.d/hooks/50-bootbackup.hook|2=&lt;br /&gt;
[Trigger]&lt;br /&gt;
Operation = Upgrade&lt;br /&gt;
Operation = Install&lt;br /&gt;
Operation = Remove&lt;br /&gt;
Type = Path&lt;br /&gt;
Target = usr/lib/modules/*/vmlinuz&lt;br /&gt;
&lt;br /&gt;
[Action]&lt;br /&gt;
Depends = rsync&lt;br /&gt;
Description = Backing up /boot...&lt;br /&gt;
When = PostTransaction&lt;br /&gt;
Exec = /usr/bin/rsync -a --delete /boot /.bootbackup&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== 外部ドライブに差分バックアップ ===&lt;br /&gt;
&lt;br /&gt;
以下のパッケージは {{ic|btrfs send}} と {{ic|btrfs receive}} を使用して外部ドライブにバックアップを差分で送信します:&lt;br /&gt;
&lt;br /&gt;
* {{App|buttersink|Btrfs スナップショットの rsync のようなもので、スナップショットの差分だけを送信することで自動的に同期を最適化します。|https://github.com/AmesCornish/buttersink.git|{{AUR|buttersink-git}}}}&lt;br /&gt;
* {{App|snap-sync|snapper スナップショットを使用して外部ドライブにバックアップします。|https://github.com/wesbarnett/snap-sync.git|{{Pkg|snap-sync}}}}&lt;br /&gt;
* {{App|snapsync|snapper 用の同期ツール。|https://github.com/doudou/snapsync|{{AUR|ruby-snapsync}}}}&lt;br /&gt;
&lt;br /&gt;
===推奨ファイルシステムレイアウト===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Note|1=以下のレイアウトは &#039;&#039;&#039;{{ic|snapper rollback}} を使用することは想定していません&#039;&#039;&#039;が、[[#/ を @ のスナップショットに復元|/ を @ のスナップショットに復元]]した時の問題を軽減します。[https://bbs.archlinux.org/viewtopic.php?id=194491 フォーラムスレッド] を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
以下は {{ic|/}} を簡単に復元できるようにするための推奨ファイルシステムレイアウトです。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ ファイルシステムレイアウト&lt;br /&gt;
! サブボリューム !! マウントポイント&lt;br /&gt;
|-&lt;br /&gt;
| @ || /&lt;br /&gt;
|-&lt;br /&gt;
| @home || /home&lt;br /&gt;
|-&lt;br /&gt;
| @snapshots || /.snapshots&lt;br /&gt;
|-&lt;br /&gt;
| @var_log || /var/log&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 subvolid=5&lt;br /&gt;
   |&lt;br /&gt;
   ├── @ -|&lt;br /&gt;
   |     含まれるディレクトリ:&lt;br /&gt;
   |       ├── /usr&lt;br /&gt;
   |       ├── /bin&lt;br /&gt;
   |       ├── /.snapshots&lt;br /&gt;
   |       ├── ...&lt;br /&gt;
   |&lt;br /&gt;
   ├── @home&lt;br /&gt;
   ├── @snapshots&lt;br /&gt;
   ├── @var_log&lt;br /&gt;
   └── @...&lt;br /&gt;
&lt;br /&gt;
{{ic|/.snapshots}} は {{ic|@snapshots}} のマウントポイントです。{{ic|@...}} は {{ic|/}} にマウントするサブボリューム ({{ic|@}}) とは別に保存したいサブボリュームになります。{{ic|/}} のスナップショットを作成するとき、他のサブボリュームはスナップショットに含まれません。ただし、別の snapper 設定を作成することで他のサブボリュームもスナップショットで記録できます。システムを {{ic|/}} のスナップショットの時点まで戻したいと思ったときに、他のサブボリュームには影響が及びません。&lt;br /&gt;
&lt;br /&gt;
例えば、{{ic|/}} をスナップショット時に戻したいが {{ic|/home}} は最新の状態のままにしたい場合、サブボリュームを作成して {{ic|/home}} にマウントしてください。詳しくは [[Btrfs#サブボリュームをマウントする]]を参照。&lt;br /&gt;
&lt;br /&gt;
上記のレイアウトは snapper ユーティリティで定期的に {{ic|/}} のスナップショットが作成できるのと同時に、起動できなくなった場合に Arch のライブ CD から {{ic|/}} を簡単に復元することができます。&lt;br /&gt;
&lt;br /&gt;
その場合、初期設定をしたら snapper に特別な設定をする必要はありません。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* サブボリュームが {{ic|@}} 下に入れ子になっていても、{{ic|/}} のスナップショットには含まれません。{{ic|/}} にマウントしているサブボリュームのスナップショットを保存したい場合は snapper でサブボリュームの設定を行ってください。&lt;br /&gt;
* [[Btrfs#スワップファイル|Btrfs の制限]]により、スナップショットされたボリュームは[[スワップ#スワップファイル|スワップファイル]]を含むことができません。スワップファイルを別のサブボリュームに置くか、[[スワップ#スワップパーティション|スワップパーティション]]を作成してください。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
====snapper の設定とマウントポイント====&lt;br /&gt;
&lt;br /&gt;
{{ic|/.snapshots}} がマウントされていないこと、フォルダとして存在しないことを確認してください:&lt;br /&gt;
 # umount /.snapshots&lt;br /&gt;
 # rm -r /.snapshots&lt;br /&gt;
&lt;br /&gt;
それから {{ic|/}} の[[#新しい設定の作成|新しい設定を作成]]します。&lt;br /&gt;
&lt;br /&gt;
そして {{ic|@snapshots}} を {{ic|/.snapshots}} に[[マウント]]してください。例えば、ファイルシステムが {{ic|/dev/sda1}} に存在する場合:&lt;br /&gt;
 # mount -o subvol=@snapshots /dev/sda1 /.snapshots&lt;br /&gt;
マウントを永続化させるには、[[fstab]] にエントリを作成します。&lt;br /&gt;
&lt;br /&gt;
もしくは fstab エントリが既に存在する場合、スナップショットのサブボリュームを再マウントします:&lt;br /&gt;
 # mount -a&lt;br /&gt;
&lt;br /&gt;
フォルダには {{ic|750}} の[[ファイルのパーミッションと属性#数字を使う方法|パーミッション]]を設定してください。&lt;br /&gt;
&lt;br /&gt;
snapper が作成するスナップショットは全て {{ic|@}} サブボリュームの外に保存されるため、snapper のスナップショットを削除しなくても {{ic|@}} を簡単に置き換えることができます。&lt;br /&gt;
&lt;br /&gt;
===={{ic|/}} を {{ic|@}} のスナップショットに復元 ====&lt;br /&gt;
&lt;br /&gt;
snapper のスナップショットを使って {{ic|/}} をリストアしたくなったら、まずは Arch Linux のライブ USB/CD を起動します。&lt;br /&gt;
&lt;br /&gt;
トップレベルのサブボリューム (subvolid=5) を[[マウント]]してください。{{ic|subvolid}} マウントフラグは省略します。&lt;br /&gt;
&lt;br /&gt;
{{ic|/mnt/@snapshots/*/info.xml}} から復元したいスナップショットを確認します:&lt;br /&gt;
{{Tip|{{ic|less}} を使ってファイルを確認できます:&lt;br /&gt;
 # cat /mnt/@snapshots/*/info.xml {{!}} less&lt;br /&gt;
次のページを見たいときは {{ic|space}} を、終了するときは {{ic|q}} を使用します。}}&lt;br /&gt;
&lt;br /&gt;
{{ic|&amp;lt;description&amp;gt;}} タグと {{ic|&amp;lt;date&amp;gt;}} タグを見て、リストアしたいスナップショットが確認できたら、{{ic|&amp;lt;num&amp;gt;}} の番号をメモしてください。&lt;br /&gt;
&lt;br /&gt;
そして {{ic|@}} を他の場所 (例: {{ic|/@.broken}}) にして現在のシステムのコピーを保存します。もしくは {{ic|btrfs subvolume delete}} で {{ic|@}} を削除します。&lt;br /&gt;
&lt;br /&gt;
読み取り専用のスナップショットから読み書き可能なスナップショットを作成:&lt;br /&gt;
&lt;br /&gt;
 # btrfs subvol snapshot /mnt/@snapshots/&#039;&#039;#&#039;&#039;/snapshot /mnt/@&lt;br /&gt;
&lt;br /&gt;
{{ic|&#039;&#039;#&#039;&#039;}} は復元したい snapper のスナップショットの番号に置き換えてください。これで {{ic|/}} は前の状態に戻ります。再起動してください。&lt;br /&gt;
&lt;br /&gt;
===スナップショットからファイルを削除===&lt;br /&gt;
&lt;br /&gt;
過去のスナップショットから特定のファイルやフォルダを削除したい場合、[https://pypi.python.org/pypi/snapperS snapperS] というスクリプトが存在します。&lt;br /&gt;
&lt;br /&gt;
スクリプトを使わずにファイルを削除したい場合、以下のコマンドを実行して [https://unix.stackexchange.com/a/149933/3587 スナップショットのサブボリュームを読み書き可能] にする必要があります:&lt;br /&gt;
&lt;br /&gt;
 # btrfs property set /path/to/.snapshots/&amp;lt;snapshot_num&amp;gt;/snapshot ro false&lt;br /&gt;
&lt;br /&gt;
{{ic|1=ro=false}} となっていることを確認:&lt;br /&gt;
&lt;br /&gt;
{{hc|# btrfs property get /path/to/.snapshots/&amp;lt;snapshot_num&amp;gt;/snapshot|2=ro=false}}&lt;br /&gt;
&lt;br /&gt;
これで {{ic|/path/to/.snapshots/&amp;lt;snapshot_num&amp;gt;/snapshot}} のファイルは通常通りに編集することが可能になります。&lt;br /&gt;
&lt;br /&gt;
=== ドライブの負担を抑える ===&lt;br /&gt;
&lt;br /&gt;
頻繁に変更が加わるファイルシステム (例えば多数のシステムアップデートが行われる {{ic|/}} など) で長期間にわたって頻繁にスナップショットを取得すると動作がかなり遅くなることがあります。以下のようにすることで遅くなるのを回避できます:&lt;br /&gt;
* スナップショットを作成する価値がない {{ic|/var/cache/pacman/pkg}}, {{ic|/var/abs}}, {{ic|/var/tmp}}, {{ic|/srv}} などのサブボリュームを[[Btrfs#サブボリュームを作成する|作成]]する。&lt;br /&gt;
* [[#自動タイムラインスナップショット|自動タイムラインスナップショット]]を使う場合に、毎時・毎日・毎周・毎年のスナップショットのデフォルト設定を変更する。&lt;br /&gt;
&lt;br /&gt;
==== updatedb ====&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、{{ic|updatedb}} は snapper によって作成された {{ic|.snapshots}} ディレクトリのインデックスも作成してしまい、スナップショットが大量にある場合、深刻な遅延が発生したりメモリが異常に消費される原因になります。以下のように設定ファイルを編集することでインデックスを作成しないように {{ic|updatedb}} を設定できます:&lt;br /&gt;
{{hc|/etc/updatedb.conf|2=PRUNENAMES = &amp;quot;.snapshots&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
=== ログファイルの保持 ===&lt;br /&gt;
&lt;br /&gt;
{{ic|/var/log}} のサブボリュームを作成して {{ic|/}} のスナップショットに含まれないようにすることを推奨します。{{ic|/}} のスナップショットを復元したときにログファイルまで前の状態に戻ってしまうことがなくなり、トラブルシューティングが楽になります。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
===Snapper のログ===&lt;br /&gt;
Snapper は全ての活動を {{ic|/var/log/snapper.log}} に書き出します。何か問題が発生しているように感じたら真っ先にこのファイルをチェックしてください。&lt;br /&gt;
&lt;br /&gt;
毎時・毎日・毎週のスナップショットに問題がある場合、おそらく cronie サービス (もしくはその他の cron デーモン) が動いていなかったのが原因だということが多くあります。&lt;br /&gt;
&lt;br /&gt;
===IO エラー===&lt;br /&gt;
スナップショットを作成しようとすると IO エラーが表示される場合、スナップショットを作成しようとしたサブボリュームと関連付けられている [https://bbs.archlinux.org/viewtopic.php?id=164404 .snapshots] ディレクトリもサブボリュームになっていることを確認してください。&lt;br /&gt;
&lt;br /&gt;
また、{{ic|.snapshots}} の所有者が root になっていない可能性もあります ({{ic|/var/log/snapper.log}} に {{ic|Btrfs.cc(openInfosDir):219 - .snapshots must have owner root}} というエラーが出力されます)。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
* [http://snapper.io/ Snapper ホームページ]&lt;br /&gt;
* [https://en.opensuse.org/Portal:Snapper openSUSE Snapper ポータル]&lt;br /&gt;
* [https://btrfs.wiki.kernel.org/index.php/Main_Page Btrfs ホームページ]&lt;br /&gt;
* [https://www.linux.com/news/enterprise/systems-management/878490-snapper-suses-ultimate-btrfs-snapshot-manager/ Linux.com: Snapper: SUSE&#039;s Ultimate Btrfs Snapshot Manager]&lt;/div&gt;</summary>
		<author><name>Funcrab</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Snapper&amp;diff=23094</id>
		<title>Snapper</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Snapper&amp;diff=23094"/>
		<updated>2022-01-10T14:31:03Z</updated>

		<summary type="html">&lt;p&gt;Funcrab: /* 推奨ファイルシステムレイアウト */ snapper rollbackコマンドを想定しない旨を強調しスナップショット復元方法へのリンクを追加&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ファイルシステム]]&lt;br /&gt;
[[en:Snapper]]&lt;br /&gt;
[[zh-hans:Snapper]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|Btrfs}}&lt;br /&gt;
{{Related|mkinitcpio}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[http://snapper.io Snapper] は openSUSE の Arvin Schnell によって作られた、[[Btrfs]] のサブボリュームと [[LVM]] のボリュームのスナップショットの管理を助けるツールです。スナップショットを作成して比較したり、前のスナップショットに戻したり、自動スナップショットが行えます。&lt;br /&gt;
&lt;br /&gt;
==インストール==&lt;br /&gt;
安定版は {{Pkg|snapper}} パッケージからインストールできます。開発版は {{AUR|snapper-git}} パッケージで利用可能です。&lt;br /&gt;
&lt;br /&gt;
GUI は {{AUR|snapper-gui-git}} パッケージでインストールすることができます。&lt;br /&gt;
&lt;br /&gt;
==新しい設定の作成==&lt;br /&gt;
&lt;br /&gt;
Btrfs サブボリュームで Snapper の設定を作成する前に、あらかじめサブボリュームが作成されている必要があります。サブボリュームが存在しない場合、Snapper の設定をするまえに[[Btrfs#サブボリュームを作成する|サブボリュームを作成]]してください。&lt;br /&gt;
&lt;br /&gt;
Btrfs サブボリュームが {{ic|&#039;&#039;/path/to/subvolume&#039;&#039;}} に存在していて、{{ic|&#039;&#039;config&#039;&#039;}} という名前で新しく Snapper の設定を作るには:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; create-config &#039;&#039;/path/to/subvolume&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
上記のコマンドを実行すると:&lt;br /&gt;
*{{ic|/etc/snapper/config-templates}} にあるデフォルトのテンプレートに基づいて {{ic|/etc/snapper/configs/&#039;&#039;config&#039;&#039;}} に設定ファイルが作成されます。&lt;br /&gt;
*{{ic|&#039;&#039;/path/to/subvolume&#039;&#039;/.snapshots}} にサブボリュームが作成されてスナップショットが保存されます。スナップショットのパスは {{ic|&#039;&#039;/path/to/subvolume&#039;&#039;/.snapshots/&#039;&#039;#&#039;&#039;/snapshot}} になります ({{ic|&#039;&#039;#&#039;&#039;}} はスナップショット番号です)。&lt;br /&gt;
*{{ic|/etc/conf.d/snapper}} の {{ic|SNAPPER_CONFIGS}} に {{ic|&#039;&#039;config&#039;&#039;}} が追加されます。&lt;br /&gt;
&lt;br /&gt;
例えば、{{ic|/}} にマウントされたサブボリュームの設定ファイルを作成する場合:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c root create-config /&lt;br /&gt;
&lt;br /&gt;
この時点で、設定は有効になっています。[[cron]] デーモンが動作している場合、snapper は[[#自動タイムラインスナップショット|自動タイムラインスナップショット]]を作成します。[[cron]] デーモンを使っていない場合、systemd サービスとタイマーを使用する必要があります。[[#有効化/無効化]]を見てください。&lt;br /&gt;
&lt;br /&gt;
設定について詳しくは {{ic|snapper-configs}} の [[man ページ]]を参照。&lt;br /&gt;
&lt;br /&gt;
== スナップショットの作成 ==&lt;br /&gt;
&lt;br /&gt;
=== 自動タイムラインスナップショット ===&lt;br /&gt;
&lt;br /&gt;
Snapper では毎時・毎日・毎月・毎年に保存するスナップショットの数を設定できるスナップショットタイムラインを作成することができます。デフォルトでは1時間毎にスナップショットが取得されます。そして1日1回、タイムラインのクリーンアップアルゴリズムによって&amp;quot;古くなって要らなくなった&amp;quot;スナップショットを削除します。&lt;br /&gt;
&lt;br /&gt;
==== 有効化/無効化 ====&lt;br /&gt;
&lt;br /&gt;
[[cron]] デーモンが動作している場合、自動タイムラインスナップショットは自動的に起動します。無効化するには、サブボリュームに存在する設定ファイルを編集して以下を設定してください:&lt;br /&gt;
&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;TIMELINE_CREATE=&amp;quot;no&amp;quot;&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
[[cron]] デーモンを使っていない場合、パッケージに含まれている systemd ユニットを使うことができます。{{ic|snapper-timeline.timer}} を[[起動]]・[[有効化]]することで自動タイムラインスナップショットが開始されます。さらに、{{ic|snapper-cleanup.timer}} を[[起動]]・[[有効化]]すると定期的に古いスナップショットが消去されます。&lt;br /&gt;
&lt;br /&gt;
{{Note|cron デーモンと有効化された systemd ユニットがともに動作すると、重複したスナップショットが作成される結果になる場合があります。systemd ユニットを使いつつ cron 側を無効にできるかもしれない一つの手法に、[[pacman]] の [[pacman#インストールさせないファイルを設定|NoExtract]] および [[pacman#アップグレードさせないファイルを設定|NoUpgrade]] を使い、snapper のパッケージの cron ファイルをインストールしない方法があります。[https://unix.stackexchange.com/questions/425570/snapper-has-recently-started-performing-duplicate-snapshots-each-hour] を見てください。}}&lt;br /&gt;
&lt;br /&gt;
==== スナップショットのリミットの設定 ====&lt;br /&gt;
&lt;br /&gt;
デフォルト設定では、毎時間10個、毎日10個、毎月10個、毎年10個のスナップショットが保存されます。{{ic|/}} など頻繁にサブボリュームに変更を加える場合は、この設定を変更したほうが良いでしょう。[[#ドライブの負担を抑える]]を見て下さい。&lt;br /&gt;
&lt;br /&gt;
以下は、5時間、毎日7個のスナップショットだけを維持して、毎月・毎年は保存しない設定の例です:&lt;br /&gt;
{{hc|head=/etc/snapper/configs/&#039;&#039;config&#039;&#039;|output=&lt;br /&gt;
TIMELINE_MIN_AGE=&amp;quot;1800&amp;quot;&lt;br /&gt;
TIMELINE_LIMIT_HOURLY=&amp;quot;5&amp;quot;&lt;br /&gt;
TIMELINE_LIMIT_DAILY=&amp;quot;7&amp;quot;&lt;br /&gt;
TIMELINE_LIMIT_WEEKLY=&amp;quot;0&amp;quot;&lt;br /&gt;
TIMELINE_LIMIT_MONTHLY=&amp;quot;0&amp;quot;&lt;br /&gt;
TIMELINE_LIMIT_YEARLY=&amp;quot;0&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== スナップショットとクリーンアップの頻度を変更する ====&lt;br /&gt;
&lt;br /&gt;
systemd タイマーを使っている場合、タイマーを[[Systemd#ユニットファイルの編集|編集]]してスナップショットの頻度を変更できます。&lt;br /&gt;
&lt;br /&gt;
例えば、{{ic|snapper-timeline.timer}} を編集して以下のようにすることで5分毎にスナップショットが作成されます:&lt;br /&gt;
&lt;br /&gt;
 [Timer]&lt;br /&gt;
 OnCalendar=&lt;br /&gt;
 OnCalendar=*:0/5&lt;br /&gt;
&lt;br /&gt;
{{Note|設定パラメータ {{ic|TIMELINE_LIMIT_HOURLY}} は上記の設定に関連付けられています。上の例では5分毎にスナップショットが作成されるようになります。}}&lt;br /&gt;
&lt;br /&gt;
{{ic|snapper-cleanup.timer}} を編集するときは {{ic|OnUnitActiveSec}} を変更してください。1時間毎に古いスナップショットを消去するには、以下を追加:&lt;br /&gt;
&lt;br /&gt;
 [Timer]&lt;br /&gt;
 OnUnitActiveSec=1h&lt;br /&gt;
&lt;br /&gt;
詳しくは [[Systemd/タイマー]]や [[Systemd#ドロップインファイル]]を参照。&lt;br /&gt;
&lt;br /&gt;
=== 手動スナップショット ===&lt;br /&gt;
&lt;br /&gt;
==== シンプルなスナップショット ====&lt;br /&gt;
&lt;br /&gt;
デフォルトでは Snapper は他のスナップショットと特別な関係を持たない、単純なスナップショットを作成します。&lt;br /&gt;
&lt;br /&gt;
手動でサブボリュームのスナップショットを作成するには、以下のコマンドを実行:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; create --description &#039;&#039;desc&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
上記のコマンドはクリーンアップアルゴリズムを使用しないため、スナップショットは明示的に[[#スナップショットの削除|削除]]するまでずっと残り続けます。&lt;br /&gt;
&lt;br /&gt;
クリーンアップアルゴリズムを設定するには {{ic|create}} の後に {{ic|-c}} フラグを使用して {{ic|number}}, {{ic|timeline}}, {{ic|pre}}, {{ic|post}} のどれかを選択してください。{{ic|number}} は設定ファイルで指定された番号にあわせて定期的にスナップショットを削除します。例えば、{{ic|number}} アルゴリズムを使用するスナップショットを作成するには:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; create -c number&lt;br /&gt;
&lt;br /&gt;
{{ic|timeline}} スナップショットについては[[#自動タイムラインスナップショット|自動タイムラインスナップショット]]を、{{ic|pre}} と {{ic|post}} については[[#事前事後のスナップショット|事前事後のスナップショット]]を見てください。&lt;br /&gt;
&lt;br /&gt;
==== 事前事後のスナップショット ====&lt;br /&gt;
&lt;br /&gt;
シンプルなスナップショットだけでなく、Snapper では事前事後のスナップショットを作成できます。事前 (&#039;&#039;pre&#039;&#039;) スナップショットには必ず対応する事後 (&#039;&#039;post&#039;&#039;) スナップショットが存在します。このペアによってシステムに変更を加える前後のスナップショットを作成することができます。&lt;br /&gt;
&lt;br /&gt;
事前事後のスナップショットを作成するには、まず事前スナップショットを作成:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; create -t pre -p&lt;br /&gt;
&lt;br /&gt;
上記のコマンドでスナップショット番号が出力されます。&lt;br /&gt;
&lt;br /&gt;
それからシステムに何らかの変更を加えます (例えば新しいプログラムをインストールしたり、ソフトウェアをアップグレードするなど)。&lt;br /&gt;
&lt;br /&gt;
次に事後のスナップショットを作成:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; create -t post --pre-number &#039;&#039;#&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|&#039;&#039;#&#039;&#039;}} は事前スナップショットの番号に置き換えてください。&lt;br /&gt;
&lt;br /&gt;
{{ic|create}} に {{ic|--command}} フラグを指定して、コマンドをラップすることもできます:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; create --command &#039;&#039;cmd&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|&#039;&#039;cmd&#039;&#039;}} は事前事後のスナップショットを作成する間に実行したいコマンドに置き換えてください。&lt;br /&gt;
&lt;br /&gt;
[[#pacman のトランザクションをスナップショットで記録|pacman のトランザクションをスナップショットで記録]]も見てください。&lt;br /&gt;
&lt;br /&gt;
=== 起動時にスナップショットを作成 ===&lt;br /&gt;
&lt;br /&gt;
snapper で {{ic|root}} 設定のスナップショットを作成するには {{ic|snapper-boot.timer}} を[[有効化]]してください。&lt;br /&gt;
&lt;br /&gt;
== スナップショットの確認 ==&lt;br /&gt;
&lt;br /&gt;
作成されたスナップショットを確認するには:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; list&lt;br /&gt;
&lt;br /&gt;
== 設定の確認 ==&lt;br /&gt;
&lt;br /&gt;
全ての[[#新しい設定の作成|設定]]を確認するには:&lt;br /&gt;
&lt;br /&gt;
 # snapper list-configs&lt;br /&gt;
&lt;br /&gt;
== スナップショットの削除 ==&lt;br /&gt;
&lt;br /&gt;
スナップショット番号 {{ic|&#039;&#039;#&#039;&#039;}} を削除するには:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; delete &#039;&#039;#&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
一度に複数のスナップショットを削除できます。例えば、root 設定の65と70のスナップショットを削除するには:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c root delete 65 70&lt;br /&gt;
&lt;br /&gt;
{{Note|事前スナップショットを削除した場合、事後スナップショットも一緒に削除してください。逆も然りです。}}&lt;br /&gt;
&lt;br /&gt;
==root 以外のユーザーでアクセス==&lt;br /&gt;
設定は root ユーザーによって作成され、デフォルトでは、root だけが設定を確認したり変更できます。&lt;br /&gt;
&lt;br /&gt;
特定のユーザーからもスナップショットを確認できるようにしたいときは、{{ic|/etc/snapper/configs/&#039;&#039;config&#039;&#039;}} ファイルの {{ic|ALLOW_USERS}} の値を変更してください。そうすれば通常ユーザーでも {{ic|snapper -c &#039;&#039;config&#039;&#039;list}} を実行できるようになります。&lt;br /&gt;
&lt;br /&gt;
さらに、ユーザーを使って {{ic|.snapshots}} ディレクトリを閲覧できるようにしたい、それでいてディレクトリの所有者は root のままにしておきたいということが考えられます。そのような場合、使用したいユーザーが属しているグループに、グループ所有者を変更してください。例えば {{ic|users}}　を使う場合:&lt;br /&gt;
&lt;br /&gt;
 # chmod a+rx .snapshots&lt;br /&gt;
 # chown :users .snapshots&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== pacman のトランザクションをスナップショットで記録 ===&lt;br /&gt;
&lt;br /&gt;
pacman の操作時に自動的にスナップショットを作成するためのパッケージが複数存在します:&lt;br /&gt;
&lt;br /&gt;
* {{App|pacupg|Btrfs のスナップショットでパッケージと AUR のアップグレードを記録して、簡単にロールバックできるようにするスクリプト。|https://github.com/crossroads1112/bin/tree/master/pacupg|{{AUR|pacupg}}}}&lt;br /&gt;
* {{App|snap-pac|openSUSE の YaST のように自動的に[[#事前事後のスナップショット|事前事後のスナップショット]]を作成します。[[Pacman#フック]]を使用しています。|https://github.com/wesbarnett/snap-pac|{{Pkg|snap-pac}}}}&lt;br /&gt;
* {{App|snap-pac-grub|{{pkg|snap-pac}} でスナップショットが作成された後に {{Pkg|grub-btrfs}} 用に GRUB エントリを更新します。[[Pacman#フック]]を使用します。||{{aur|snap-pac-grub}}}}&lt;br /&gt;
* {{App|snp|シェルコマンドの実行前後に snapper でスナップショットを取るラッパー。例: {{ic|$ snp pacman -Syu}}|https://gist.github.com/erikw/5229436|}}&lt;br /&gt;
&lt;br /&gt;
=== boot パーティションのバックアップ ===&lt;br /&gt;
&lt;br /&gt;
{{ic|/boot}} パーティションが btrfs ファイルシステム上に存在しない場合 (例: [[ESP]])、snapper でバックアップすることはできません。フックを使用してカーネルのアップデート時に boot パーティションを自動的に btrfs ファイルシステムにコピーさせることはできます。{{Pkg|snap-pac}} でも上手くバックアップされます。&lt;br /&gt;
{{hc|1=/etc/pacman.d/hooks/50-bootbackup.hook|2=&lt;br /&gt;
[Trigger]&lt;br /&gt;
Operation = Upgrade&lt;br /&gt;
Operation = Install&lt;br /&gt;
Operation = Remove&lt;br /&gt;
Type = Path&lt;br /&gt;
Target = usr/lib/modules/*/vmlinuz&lt;br /&gt;
&lt;br /&gt;
[Action]&lt;br /&gt;
Depends = rsync&lt;br /&gt;
Description = Backing up /boot...&lt;br /&gt;
When = PostTransaction&lt;br /&gt;
Exec = /usr/bin/rsync -a --delete /boot /.bootbackup&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== 外部ドライブに差分バックアップ ===&lt;br /&gt;
&lt;br /&gt;
以下のパッケージは {{ic|btrfs send}} と {{ic|btrfs receive}} を使用して外部ドライブにバックアップを差分で送信します:&lt;br /&gt;
&lt;br /&gt;
* {{App|buttersink|Btrfs スナップショットの rsync のようなもので、スナップショットの差分だけを送信することで自動的に同期を最適化します。|https://github.com/AmesCornish/buttersink.git|{{AUR|buttersink-git}}}}&lt;br /&gt;
* {{App|snap-sync|snapper スナップショットを使用して外部ドライブにバックアップします。|https://github.com/wesbarnett/snap-sync.git|{{Pkg|snap-sync}}}}&lt;br /&gt;
* {{App|snapsync|snapper 用の同期ツール。|https://github.com/doudou/snapsync|{{AUR|ruby-snapsync}}}}&lt;br /&gt;
&lt;br /&gt;
===推奨ファイルシステムレイアウト===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Note|1=以下のレイアウトは &#039;&#039;&#039;{{ic|snapper rollback}} を使用することは想定していません&#039;&#039;&#039;が、[[#/ を @ のスナップショットに復元|/ を @ のスナップショットに復元]]した時の問題を軽減します。[https://bbs.archlinux.org/viewtopic.php?id=194491 フォーラムスレッド] を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
以下は {{ic|/}} を簡単に復元できるようにするための推奨ファイルシステムレイアウトです。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ ファイルシステムレイアウト&lt;br /&gt;
! サブボリューム !! マウントポイント&lt;br /&gt;
|-&lt;br /&gt;
| @ || /&lt;br /&gt;
|-&lt;br /&gt;
| @home || /home&lt;br /&gt;
|-&lt;br /&gt;
| @snapshots || /.snapshots&lt;br /&gt;
|-&lt;br /&gt;
| @var_log || /var/log&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 subvolid=5&lt;br /&gt;
   |&lt;br /&gt;
   ├── @ -|&lt;br /&gt;
   |     含まれるディレクトリ:&lt;br /&gt;
   |       ├── /usr&lt;br /&gt;
   |       ├── /bin&lt;br /&gt;
   |       ├── /.snapshots&lt;br /&gt;
   |       ├── ...&lt;br /&gt;
   |&lt;br /&gt;
   ├── @home&lt;br /&gt;
   ├── @snapshots&lt;br /&gt;
   ├── @var_log&lt;br /&gt;
   └── @...&lt;br /&gt;
&lt;br /&gt;
{{ic|/.snapshots}} は {{ic|@snapshots}} のマウントポイントです。{{ic|@...}} は {{ic|/}} にマウントするサブボリューム ({{ic|@}}) とは別に保存したいサブボリュームになります。{{ic|/}} のスナップショットを作成するとき、他のサブボリュームはスナップショットに含まれません。ただし、別の snapper 設定を作成することで他のサブボリュームもスナップショットで記録できます。システムを {{ic|/}} のスナップショットの時点まで戻したいと思ったときに、他のサブボリュームには影響が及びません。&lt;br /&gt;
&lt;br /&gt;
例えば、{{ic|/}} をスナップショット時に戻したいが {{ic|/home}} は最新の状態のままにしたい場合、サブボリュームを作成して {{ic|/home}} にマウントしてください。詳しくは [[Btrfs#サブボリュームをマウントする]]を参照。&lt;br /&gt;
&lt;br /&gt;
上記のレイアウトは snapper ユーティリティで定期的に {{ic|/}} のスナップショットが作成できるのと同時に、起動できなくなった場合に Arch のライブ CD から {{ic|/}} を簡単に復元することができます。&lt;br /&gt;
&lt;br /&gt;
その場合、初期設定をしたら snapper に特別な設定をする必要はありません。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* サブボリュームが {{ic|@}} 下に入れ子になっていても、{{ic|/}} のスナップショットには含まれません。{{ic|/}} にマウントしているサブボリュームのスナップショットを保存したい場合は snapper でサブボリュームの設定を行ってください。&lt;br /&gt;
* [[Btrfs#スワップファイル|Btrfs の制限]]により、スナップショットされたボリュームは[[スワップ#スワップファイル|スワップファイル]]を含むことができません。スワップファイルを別のサブボリュームに置くか、[[スワップ#スワップパーティション|スワップパーティション]]を作成してください。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
====snapper の設定とマウントポイント====&lt;br /&gt;
&lt;br /&gt;
{{ic|/.snapshots}} がマウントされていないこと、フォルダとして存在しないことを確認してください:&lt;br /&gt;
 # umount /.snapshots&lt;br /&gt;
 # rm -r /.snapshots&lt;br /&gt;
&lt;br /&gt;
それから {{ic|/}} の[[#新しい設定の作成|新しい設定を作成]]します。&lt;br /&gt;
&lt;br /&gt;
そして {{ic|@snapshots}} を {{ic|/.snapshots}} に[[マウント]]してください。例えば、ファイルシステムが {{ic|/dev/sda1}} に存在する場合:&lt;br /&gt;
 # mount -o subvol=@snapshots /dev/sda1 /.snapshots&lt;br /&gt;
マウントを永続化させるには、[[fstab]] にエントリを作成します。&lt;br /&gt;
&lt;br /&gt;
もしくは fstab エントリが既に存在する場合、スナップショットのサブボリュームを再マウントします:&lt;br /&gt;
 # mount -a&lt;br /&gt;
&lt;br /&gt;
フォルダには {{ic|750}} の[[ファイルのパーミッションと属性#数字を使う方法|パーミッション]]を設定してください。&lt;br /&gt;
&lt;br /&gt;
snapper が作成するスナップショットは全て {{ic|@}} サブボリュームの外に保存されるため、snapper のスナップショットを削除しなくても {{ic|@}} を簡単に置き換えることができます。&lt;br /&gt;
&lt;br /&gt;
===={{ic|/}} を {{ic|@}} のスナップショットに復元 ====&lt;br /&gt;
&lt;br /&gt;
snapper のスナップショットを使って {{ic|/}} をリストアしたくなったら、まずは Arch Linux のライブ USB/CD を起動します。&lt;br /&gt;
&lt;br /&gt;
トップレベルのサブボリューム (subvolid=5) を[[マウント]]してください。{{ic|subvolid}} マウントフラグは省略します。&lt;br /&gt;
&lt;br /&gt;
{{ic|/mnt/@snapshots/*/info.xml}} から復元したいスナップショットを確認します:&lt;br /&gt;
{{Tip|{{ic|less}} を使ってファイルを確認できます:&lt;br /&gt;
 # cat /mnt/@snapshots/*/info.xml {{!}} less&lt;br /&gt;
次のページを見たいときは {{ic|space}} を、ファイルの最初に戻りたいときは {{ic|gg}} を使用します。}}&lt;br /&gt;
&lt;br /&gt;
{{ic|&amp;lt;description&amp;gt;}} タグと {{ic|&amp;lt;date&amp;gt;}} タグを見て、リストアしたいスナップショットが確認できたら、{{ic|&amp;lt;num&amp;gt;}} の番号をメモしてください。&lt;br /&gt;
&lt;br /&gt;
そして {{ic|@}} を他の場所 (例: {{ic|/@.broken}}) にして現在のシステムのコピーを保存します。もしくは {{ic|btrfs subvolume delete}} で {{ic|@}} を削除します。&lt;br /&gt;
&lt;br /&gt;
読み取り専用のスナップショットから読み書き可能なスナップショットを作成:&lt;br /&gt;
&lt;br /&gt;
 # btrfs subvol snapshot /mnt/@snapshots/&#039;&#039;#&#039;&#039;/snapshot /mnt/@&lt;br /&gt;
&lt;br /&gt;
{{ic|&#039;&#039;#&#039;&#039;}} は復元したい snapper のスナップショットの番号に置き換えてください。これで {{ic|/}} は前の状態に戻ります。再起動してください。&lt;br /&gt;
&lt;br /&gt;
===スナップショットからファイルを削除===&lt;br /&gt;
&lt;br /&gt;
過去のスナップショットから特定のファイルやフォルダを削除したい場合、[https://pypi.python.org/pypi/snapperS snapperS] というスクリプトが存在します。&lt;br /&gt;
&lt;br /&gt;
スクリプトを使わずにファイルを削除したい場合、以下のコマンドを実行して [https://unix.stackexchange.com/a/149933/3587 スナップショットのサブボリュームを読み書き可能] にする必要があります:&lt;br /&gt;
&lt;br /&gt;
 # btrfs property set /path/to/.snapshots/&amp;lt;snapshot_num&amp;gt;/snapshot ro false&lt;br /&gt;
&lt;br /&gt;
{{ic|1=ro=false}} となっていることを確認:&lt;br /&gt;
&lt;br /&gt;
{{hc|# btrfs property get /path/to/.snapshots/&amp;lt;snapshot_num&amp;gt;/snapshot|2=ro=false}}&lt;br /&gt;
&lt;br /&gt;
これで {{ic|/path/to/.snapshots/&amp;lt;snapshot_num&amp;gt;/snapshot}} のファイルは通常通りに編集することが可能になります。&lt;br /&gt;
&lt;br /&gt;
=== ドライブの負担を抑える ===&lt;br /&gt;
&lt;br /&gt;
頻繁に変更が加わるファイルシステム (例えば多数のシステムアップデートが行われる {{ic|/}} など) で長期間にわたって頻繁にスナップショットを取得すると動作がかなり遅くなることがあります。以下のようにすることで遅くなるのを回避できます:&lt;br /&gt;
* スナップショットを作成する価値がない {{ic|/var/cache/pacman/pkg}}, {{ic|/var/abs}}, {{ic|/var/tmp}}, {{ic|/srv}} などのサブボリュームを[[Btrfs#サブボリュームを作成する|作成]]する。&lt;br /&gt;
* [[#自動タイムラインスナップショット|自動タイムラインスナップショット]]を使う場合に、毎時・毎日・毎周・毎年のスナップショットのデフォルト設定を変更する。&lt;br /&gt;
&lt;br /&gt;
==== updatedb ====&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、{{ic|updatedb}} は snapper によって作成された {{ic|.snapshots}} ディレクトリのインデックスも作成してしまい、スナップショットが大量にある場合、深刻な遅延が発生したりメモリが異常に消費される原因になります。以下のように設定ファイルを編集することでインデックスを作成しないように {{ic|updatedb}} を設定できます:&lt;br /&gt;
{{hc|/etc/updatedb.conf|2=PRUNENAMES = &amp;quot;.snapshots&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
=== ログファイルの保持 ===&lt;br /&gt;
&lt;br /&gt;
{{ic|/var/log}} のサブボリュームを作成して {{ic|/}} のスナップショットに含まれないようにすることを推奨します。{{ic|/}} のスナップショットを復元したときにログファイルまで前の状態に戻ってしまうことがなくなり、トラブルシューティングが楽になります。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
===Snapper のログ===&lt;br /&gt;
Snapper は全ての活動を {{ic|/var/log/snapper.log}} に書き出します。何か問題が発生しているように感じたら真っ先にこのファイルをチェックしてください。&lt;br /&gt;
&lt;br /&gt;
毎時・毎日・毎週のスナップショットに問題がある場合、おそらく cronie サービス (もしくはその他の cron デーモン) が動いていなかったのが原因だということが多くあります。&lt;br /&gt;
&lt;br /&gt;
===IO エラー===&lt;br /&gt;
スナップショットを作成しようとすると IO エラーが表示される場合、スナップショットを作成しようとしたサブボリュームと関連付けられている [https://bbs.archlinux.org/viewtopic.php?id=164404 .snapshots] ディレクトリもサブボリュームになっていることを確認してください。&lt;br /&gt;
&lt;br /&gt;
また、{{ic|.snapshots}} の所有者が root になっていない可能性もあります ({{ic|/var/log/snapper.log}} に {{ic|Btrfs.cc(openInfosDir):219 - .snapshots must have owner root}} というエラーが出力されます)。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
* [http://snapper.io/ Snapper ホームページ]&lt;br /&gt;
* [https://en.opensuse.org/Portal:Snapper openSUSE Snapper ポータル]&lt;br /&gt;
* [https://btrfs.wiki.kernel.org/index.php/Main_Page Btrfs ホームページ]&lt;br /&gt;
* [https://www.linux.com/news/enterprise/systems-management/878490-snapper-suses-ultimate-btrfs-snapshot-manager/ Linux.com: Snapper: SUSE&#039;s Ultimate Btrfs Snapshot Manager]&lt;/div&gt;</summary>
		<author><name>Funcrab</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Snapper&amp;diff=23092</id>
		<title>Snapper</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Snapper&amp;diff=23092"/>
		<updated>2022-01-10T12:57:45Z</updated>

		<summary type="html">&lt;p&gt;Funcrab: /* {{ic|/}} を {{ic|@}} のスナップショットに復元 */ vi から cat+lessを使用する形に変更&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ファイルシステム]]&lt;br /&gt;
[[en:Snapper]]&lt;br /&gt;
[[zh-hans:Snapper]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|Btrfs}}&lt;br /&gt;
{{Related|mkinitcpio}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[http://snapper.io Snapper] は openSUSE の Arvin Schnell によって作られた、[[Btrfs]] のサブボリュームと [[LVM]] のボリュームのスナップショットの管理を助けるツールです。スナップショットを作成して比較したり、前のスナップショットに戻したり、自動スナップショットが行えます。&lt;br /&gt;
&lt;br /&gt;
==インストール==&lt;br /&gt;
安定版は {{Pkg|snapper}} パッケージからインストールできます。開発版は {{AUR|snapper-git}} パッケージで利用可能です。&lt;br /&gt;
&lt;br /&gt;
GUI は {{AUR|snapper-gui-git}} パッケージでインストールすることができます。&lt;br /&gt;
&lt;br /&gt;
==新しい設定の作成==&lt;br /&gt;
&lt;br /&gt;
Btrfs サブボリュームで Snapper の設定を作成する前に、あらかじめサブボリュームが作成されている必要があります。サブボリュームが存在しない場合、Snapper の設定をするまえに[[Btrfs#サブボリュームを作成する|サブボリュームを作成]]してください。&lt;br /&gt;
&lt;br /&gt;
Btrfs サブボリュームが {{ic|&#039;&#039;/path/to/subvolume&#039;&#039;}} に存在していて、{{ic|&#039;&#039;config&#039;&#039;}} という名前で新しく Snapper の設定を作るには:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; create-config &#039;&#039;/path/to/subvolume&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
上記のコマンドを実行すると:&lt;br /&gt;
*{{ic|/etc/snapper/config-templates}} にあるデフォルトのテンプレートに基づいて {{ic|/etc/snapper/configs/&#039;&#039;config&#039;&#039;}} に設定ファイルが作成されます。&lt;br /&gt;
*{{ic|&#039;&#039;/path/to/subvolume&#039;&#039;/.snapshots}} にサブボリュームが作成されてスナップショットが保存されます。スナップショットのパスは {{ic|&#039;&#039;/path/to/subvolume&#039;&#039;/.snapshots/&#039;&#039;#&#039;&#039;/snapshot}} になります ({{ic|&#039;&#039;#&#039;&#039;}} はスナップショット番号です)。&lt;br /&gt;
*{{ic|/etc/conf.d/snapper}} の {{ic|SNAPPER_CONFIGS}} に {{ic|&#039;&#039;config&#039;&#039;}} が追加されます。&lt;br /&gt;
&lt;br /&gt;
例えば、{{ic|/}} にマウントされたサブボリュームの設定ファイルを作成する場合:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c root create-config /&lt;br /&gt;
&lt;br /&gt;
この時点で、設定は有効になっています。[[cron]] デーモンが動作している場合、snapper は[[#自動タイムラインスナップショット|自動タイムラインスナップショット]]を作成します。[[cron]] デーモンを使っていない場合、systemd サービスとタイマーを使用する必要があります。[[#有効化/無効化]]を見てください。&lt;br /&gt;
&lt;br /&gt;
設定について詳しくは {{ic|snapper-configs}} の [[man ページ]]を参照。&lt;br /&gt;
&lt;br /&gt;
== スナップショットの作成 ==&lt;br /&gt;
&lt;br /&gt;
=== 自動タイムラインスナップショット ===&lt;br /&gt;
&lt;br /&gt;
Snapper では毎時・毎日・毎月・毎年に保存するスナップショットの数を設定できるスナップショットタイムラインを作成することができます。デフォルトでは1時間毎にスナップショットが取得されます。そして1日1回、タイムラインのクリーンアップアルゴリズムによって&amp;quot;古くなって要らなくなった&amp;quot;スナップショットを削除します。&lt;br /&gt;
&lt;br /&gt;
==== 有効化/無効化 ====&lt;br /&gt;
&lt;br /&gt;
[[cron]] デーモンが動作している場合、自動タイムラインスナップショットは自動的に起動します。無効化するには、サブボリュームに存在する設定ファイルを編集して以下を設定してください:&lt;br /&gt;
&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;TIMELINE_CREATE=&amp;quot;no&amp;quot;&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
[[cron]] デーモンを使っていない場合、パッケージに含まれている systemd ユニットを使うことができます。{{ic|snapper-timeline.timer}} を[[起動]]・[[有効化]]することで自動タイムラインスナップショットが開始されます。さらに、{{ic|snapper-cleanup.timer}} を[[起動]]・[[有効化]]すると定期的に古いスナップショットが消去されます。&lt;br /&gt;
&lt;br /&gt;
{{Note|cron デーモンと有効化された systemd ユニットがともに動作すると、重複したスナップショットが作成される結果になる場合があります。systemd ユニットを使いつつ cron 側を無効にできるかもしれない一つの手法に、[[pacman]] の [[pacman#インストールさせないファイルを設定|NoExtract]] および [[pacman#アップグレードさせないファイルを設定|NoUpgrade]] を使い、snapper のパッケージの cron ファイルをインストールしない方法があります。[https://unix.stackexchange.com/questions/425570/snapper-has-recently-started-performing-duplicate-snapshots-each-hour] を見てください。}}&lt;br /&gt;
&lt;br /&gt;
==== スナップショットのリミットの設定 ====&lt;br /&gt;
&lt;br /&gt;
デフォルト設定では、毎時間10個、毎日10個、毎月10個、毎年10個のスナップショットが保存されます。{{ic|/}} など頻繁にサブボリュームに変更を加える場合は、この設定を変更したほうが良いでしょう。[[#ドライブの負担を抑える]]を見て下さい。&lt;br /&gt;
&lt;br /&gt;
以下は、5時間、毎日7個のスナップショットだけを維持して、毎月・毎年は保存しない設定の例です:&lt;br /&gt;
{{hc|head=/etc/snapper/configs/&#039;&#039;config&#039;&#039;|output=&lt;br /&gt;
TIMELINE_MIN_AGE=&amp;quot;1800&amp;quot;&lt;br /&gt;
TIMELINE_LIMIT_HOURLY=&amp;quot;5&amp;quot;&lt;br /&gt;
TIMELINE_LIMIT_DAILY=&amp;quot;7&amp;quot;&lt;br /&gt;
TIMELINE_LIMIT_WEEKLY=&amp;quot;0&amp;quot;&lt;br /&gt;
TIMELINE_LIMIT_MONTHLY=&amp;quot;0&amp;quot;&lt;br /&gt;
TIMELINE_LIMIT_YEARLY=&amp;quot;0&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== スナップショットとクリーンアップの頻度を変更する ====&lt;br /&gt;
&lt;br /&gt;
systemd タイマーを使っている場合、タイマーを[[Systemd#ユニットファイルの編集|編集]]してスナップショットの頻度を変更できます。&lt;br /&gt;
&lt;br /&gt;
例えば、{{ic|snapper-timeline.timer}} を編集して以下のようにすることで5分毎にスナップショットが作成されます:&lt;br /&gt;
&lt;br /&gt;
 [Timer]&lt;br /&gt;
 OnCalendar=&lt;br /&gt;
 OnCalendar=*:0/5&lt;br /&gt;
&lt;br /&gt;
{{Note|設定パラメータ {{ic|TIMELINE_LIMIT_HOURLY}} は上記の設定に関連付けられています。上の例では5分毎にスナップショットが作成されるようになります。}}&lt;br /&gt;
&lt;br /&gt;
{{ic|snapper-cleanup.timer}} を編集するときは {{ic|OnUnitActiveSec}} を変更してください。1時間毎に古いスナップショットを消去するには、以下を追加:&lt;br /&gt;
&lt;br /&gt;
 [Timer]&lt;br /&gt;
 OnUnitActiveSec=1h&lt;br /&gt;
&lt;br /&gt;
詳しくは [[Systemd/タイマー]]や [[Systemd#ドロップインファイル]]を参照。&lt;br /&gt;
&lt;br /&gt;
=== 手動スナップショット ===&lt;br /&gt;
&lt;br /&gt;
==== シンプルなスナップショット ====&lt;br /&gt;
&lt;br /&gt;
デフォルトでは Snapper は他のスナップショットと特別な関係を持たない、単純なスナップショットを作成します。&lt;br /&gt;
&lt;br /&gt;
手動でサブボリュームのスナップショットを作成するには、以下のコマンドを実行:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; create --description &#039;&#039;desc&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
上記のコマンドはクリーンアップアルゴリズムを使用しないため、スナップショットは明示的に[[#スナップショットの削除|削除]]するまでずっと残り続けます。&lt;br /&gt;
&lt;br /&gt;
クリーンアップアルゴリズムを設定するには {{ic|create}} の後に {{ic|-c}} フラグを使用して {{ic|number}}, {{ic|timeline}}, {{ic|pre}}, {{ic|post}} のどれかを選択してください。{{ic|number}} は設定ファイルで指定された番号にあわせて定期的にスナップショットを削除します。例えば、{{ic|number}} アルゴリズムを使用するスナップショットを作成するには:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; create -c number&lt;br /&gt;
&lt;br /&gt;
{{ic|timeline}} スナップショットについては[[#自動タイムラインスナップショット|自動タイムラインスナップショット]]を、{{ic|pre}} と {{ic|post}} については[[#事前事後のスナップショット|事前事後のスナップショット]]を見てください。&lt;br /&gt;
&lt;br /&gt;
==== 事前事後のスナップショット ====&lt;br /&gt;
&lt;br /&gt;
シンプルなスナップショットだけでなく、Snapper では事前事後のスナップショットを作成できます。事前 (&#039;&#039;pre&#039;&#039;) スナップショットには必ず対応する事後 (&#039;&#039;post&#039;&#039;) スナップショットが存在します。このペアによってシステムに変更を加える前後のスナップショットを作成することができます。&lt;br /&gt;
&lt;br /&gt;
事前事後のスナップショットを作成するには、まず事前スナップショットを作成:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; create -t pre -p&lt;br /&gt;
&lt;br /&gt;
上記のコマンドでスナップショット番号が出力されます。&lt;br /&gt;
&lt;br /&gt;
それからシステムに何らかの変更を加えます (例えば新しいプログラムをインストールしたり、ソフトウェアをアップグレードするなど)。&lt;br /&gt;
&lt;br /&gt;
次に事後のスナップショットを作成:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; create -t post --pre-number &#039;&#039;#&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|&#039;&#039;#&#039;&#039;}} は事前スナップショットの番号に置き換えてください。&lt;br /&gt;
&lt;br /&gt;
{{ic|create}} に {{ic|--command}} フラグを指定して、コマンドをラップすることもできます:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; create --command &#039;&#039;cmd&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|&#039;&#039;cmd&#039;&#039;}} は事前事後のスナップショットを作成する間に実行したいコマンドに置き換えてください。&lt;br /&gt;
&lt;br /&gt;
[[#pacman のトランザクションをスナップショットで記録|pacman のトランザクションをスナップショットで記録]]も見てください。&lt;br /&gt;
&lt;br /&gt;
=== 起動時にスナップショットを作成 ===&lt;br /&gt;
&lt;br /&gt;
snapper で {{ic|root}} 設定のスナップショットを作成するには {{ic|snapper-boot.timer}} を[[有効化]]してください。&lt;br /&gt;
&lt;br /&gt;
== スナップショットの確認 ==&lt;br /&gt;
&lt;br /&gt;
作成されたスナップショットを確認するには:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; list&lt;br /&gt;
&lt;br /&gt;
== 設定の確認 ==&lt;br /&gt;
&lt;br /&gt;
全ての[[#新しい設定の作成|設定]]を確認するには:&lt;br /&gt;
&lt;br /&gt;
 # snapper list-configs&lt;br /&gt;
&lt;br /&gt;
== スナップショットの削除 ==&lt;br /&gt;
&lt;br /&gt;
スナップショット番号 {{ic|&#039;&#039;#&#039;&#039;}} を削除するには:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; delete &#039;&#039;#&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
一度に複数のスナップショットを削除できます。例えば、root 設定の65と70のスナップショットを削除するには:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c root delete 65 70&lt;br /&gt;
&lt;br /&gt;
{{Note|事前スナップショットを削除した場合、事後スナップショットも一緒に削除してください。逆も然りです。}}&lt;br /&gt;
&lt;br /&gt;
==root 以外のユーザーでアクセス==&lt;br /&gt;
設定は root ユーザーによって作成され、デフォルトでは、root だけが設定を確認したり変更できます。&lt;br /&gt;
&lt;br /&gt;
特定のユーザーからもスナップショットを確認できるようにしたいときは、{{ic|/etc/snapper/configs/&#039;&#039;config&#039;&#039;}} ファイルの {{ic|ALLOW_USERS}} の値を変更してください。そうすれば通常ユーザーでも {{ic|snapper -c &#039;&#039;config&#039;&#039;list}} を実行できるようになります。&lt;br /&gt;
&lt;br /&gt;
さらに、ユーザーを使って {{ic|.snapshots}} ディレクトリを閲覧できるようにしたい、それでいてディレクトリの所有者は root のままにしておきたいということが考えられます。そのような場合、使用したいユーザーが属しているグループに、グループ所有者を変更してください。例えば {{ic|users}}　を使う場合:&lt;br /&gt;
&lt;br /&gt;
 # chmod a+rx .snapshots&lt;br /&gt;
 # chown :users .snapshots&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== pacman のトランザクションをスナップショットで記録 ===&lt;br /&gt;
&lt;br /&gt;
pacman の操作時に自動的にスナップショットを作成するためのパッケージが複数存在します:&lt;br /&gt;
&lt;br /&gt;
* {{App|pacupg|Btrfs のスナップショットでパッケージと AUR のアップグレードを記録して、簡単にロールバックできるようにするスクリプト。|https://github.com/crossroads1112/bin/tree/master/pacupg|{{AUR|pacupg}}}}&lt;br /&gt;
* {{App|snap-pac|openSUSE の YaST のように自動的に[[#事前事後のスナップショット|事前事後のスナップショット]]を作成します。[[Pacman#フック]]を使用しています。|https://github.com/wesbarnett/snap-pac|{{Pkg|snap-pac}}}}&lt;br /&gt;
* {{App|snap-pac-grub|{{pkg|snap-pac}} でスナップショットが作成された後に {{Pkg|grub-btrfs}} 用に GRUB エントリを更新します。[[Pacman#フック]]を使用します。||{{aur|snap-pac-grub}}}}&lt;br /&gt;
* {{App|snp|シェルコマンドの実行前後に snapper でスナップショットを取るラッパー。例: {{ic|$ snp pacman -Syu}}|https://gist.github.com/erikw/5229436|}}&lt;br /&gt;
&lt;br /&gt;
=== boot パーティションのバックアップ ===&lt;br /&gt;
&lt;br /&gt;
{{ic|/boot}} パーティションが btrfs ファイルシステム上に存在しない場合 (例: [[ESP]])、snapper でバックアップすることはできません。フックを使用してカーネルのアップデート時に boot パーティションを自動的に btrfs ファイルシステムにコピーさせることはできます。{{Pkg|snap-pac}} でも上手くバックアップされます。&lt;br /&gt;
{{hc|1=/etc/pacman.d/hooks/50-bootbackup.hook|2=&lt;br /&gt;
[Trigger]&lt;br /&gt;
Operation = Upgrade&lt;br /&gt;
Operation = Install&lt;br /&gt;
Operation = Remove&lt;br /&gt;
Type = Path&lt;br /&gt;
Target = usr/lib/modules/*/vmlinuz&lt;br /&gt;
&lt;br /&gt;
[Action]&lt;br /&gt;
Depends = rsync&lt;br /&gt;
Description = Backing up /boot...&lt;br /&gt;
When = PostTransaction&lt;br /&gt;
Exec = /usr/bin/rsync -a --delete /boot /.bootbackup&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== 外部ドライブに差分バックアップ ===&lt;br /&gt;
&lt;br /&gt;
以下のパッケージは {{ic|btrfs send}} と {{ic|btrfs receive}} を使用して外部ドライブにバックアップを差分で送信します:&lt;br /&gt;
&lt;br /&gt;
* {{App|buttersink|Btrfs スナップショットの rsync のようなもので、スナップショットの差分だけを送信することで自動的に同期を最適化します。|https://github.com/AmesCornish/buttersink.git|{{AUR|buttersink-git}}}}&lt;br /&gt;
* {{App|snap-sync|snapper スナップショットを使用して外部ドライブにバックアップします。|https://github.com/wesbarnett/snap-sync.git|{{Pkg|snap-sync}}}}&lt;br /&gt;
* {{App|snapsync|snapper 用の同期ツール。|https://github.com/doudou/snapsync|{{AUR|ruby-snapsync}}}}&lt;br /&gt;
&lt;br /&gt;
===推奨ファイルシステムレイアウト===&lt;br /&gt;
&lt;br /&gt;
{{Note|1=以下のレイアウトは {{ic|snapper rollback}} を使用することは想定していませんが、コマンドで {{ic|/}} をリストアしたときの問題を軽減します。[https://bbs.archlinux.org/viewtopic.php?id=194491 フォーラムスレッド] を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
以下は {{ic|/}} を簡単に復元できるようにするための推奨ファイルシステムレイアウトです。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ ファイルシステムレイアウト&lt;br /&gt;
! サブボリューム !! マウントポイント&lt;br /&gt;
|-&lt;br /&gt;
| @ || /&lt;br /&gt;
|-&lt;br /&gt;
| @home || /home&lt;br /&gt;
|-&lt;br /&gt;
| @snapshots || /.snapshots&lt;br /&gt;
|-&lt;br /&gt;
| @var_log || /var/log&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 subvolid=5&lt;br /&gt;
   |&lt;br /&gt;
   ├── @ -|&lt;br /&gt;
   |     含まれるディレクトリ:&lt;br /&gt;
   |       ├── /usr&lt;br /&gt;
   |       ├── /bin&lt;br /&gt;
   |       ├── /.snapshots&lt;br /&gt;
   |       ├── ...&lt;br /&gt;
   |&lt;br /&gt;
   ├── @home&lt;br /&gt;
   ├── @snapshots&lt;br /&gt;
   ├── @var_log&lt;br /&gt;
   └── @...&lt;br /&gt;
&lt;br /&gt;
{{ic|/.snapshots}} は {{ic|@snapshots}} のマウントポイントです。{{ic|@...}} は {{ic|/}} にマウントするサブボリューム ({{ic|@}}) とは別に保存したいサブボリュームになります。{{ic|/}} のスナップショットを作成するとき、他のサブボリュームはスナップショットに含まれません。ただし、別の snapper 設定を作成することで他のサブボリュームもスナップショットで記録できます。システムを {{ic|/}} のスナップショットの時点まで戻したいと思ったときに、他のサブボリュームには影響が及びません。&lt;br /&gt;
&lt;br /&gt;
例えば、{{ic|/}} をスナップショット時に戻したいが {{ic|/home}} は最新の状態のままにしたい場合、サブボリュームを作成して {{ic|/home}} にマウントしてください。詳しくは [[Btrfs#サブボリュームをマウントする]]を参照。&lt;br /&gt;
&lt;br /&gt;
上記のレイアウトは snapper ユーティリティで定期的に {{ic|/}} のスナップショットが作成できるのと同時に、起動できなくなった場合に Arch のライブ CD から {{ic|/}} を簡単に復元することができます。&lt;br /&gt;
&lt;br /&gt;
その場合、初期設定をしたら snapper に特別な設定をする必要はありません。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* サブボリュームが {{ic|@}} 下に入れ子になっていても、{{ic|/}} のスナップショットには含まれません。{{ic|/}} にマウントしているサブボリュームのスナップショットを保存したい場合は snapper でサブボリュームの設定を行ってください。&lt;br /&gt;
* [[Btrfs#スワップファイル|Btrfs の制限]]により、スナップショットされたボリュームは[[スワップ#スワップファイル|スワップファイル]]を含むことができません。スワップファイルを別のサブボリュームに置くか、[[スワップ#スワップパーティション|スワップパーティション]]を作成してください。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
====snapper の設定とマウントポイント====&lt;br /&gt;
&lt;br /&gt;
{{ic|/.snapshots}} がマウントされていないこと、フォルダとして存在しないことを確認してください:&lt;br /&gt;
 # umount /.snapshots&lt;br /&gt;
 # rm -r /.snapshots&lt;br /&gt;
&lt;br /&gt;
それから {{ic|/}} の[[#新しい設定の作成|新しい設定を作成]]します。&lt;br /&gt;
&lt;br /&gt;
そして {{ic|@snapshots}} を {{ic|/.snapshots}} に[[マウント]]してください。例えば、ファイルシステムが {{ic|/dev/sda1}} に存在する場合:&lt;br /&gt;
 # mount -o subvol=@snapshots /dev/sda1 /.snapshots&lt;br /&gt;
マウントを永続化させるには、[[fstab]] にエントリを作成します。&lt;br /&gt;
&lt;br /&gt;
もしくは fstab エントリが既に存在する場合、スナップショットのサブボリュームを再マウントします:&lt;br /&gt;
 # mount -a&lt;br /&gt;
&lt;br /&gt;
フォルダには {{ic|750}} の[[ファイルのパーミッションと属性#数字を使う方法|パーミッション]]を設定してください。&lt;br /&gt;
&lt;br /&gt;
snapper が作成するスナップショットは全て {{ic|@}} サブボリュームの外に保存されるため、snapper のスナップショットを削除しなくても {{ic|@}} を簡単に置き換えることができます。&lt;br /&gt;
&lt;br /&gt;
===={{ic|/}} を {{ic|@}} のスナップショットに復元 ====&lt;br /&gt;
&lt;br /&gt;
snapper のスナップショットを使って {{ic|/}} をリストアしたくなったら、まずは Arch Linux のライブ USB/CD を起動します。&lt;br /&gt;
&lt;br /&gt;
トップレベルのサブボリューム (subvolid=5) を[[マウント]]してください。{{ic|subvolid}} マウントフラグは省略します。&lt;br /&gt;
&lt;br /&gt;
{{ic|/mnt/@snapshots/*/info.xml}} から復元したいスナップショットを確認します:&lt;br /&gt;
{{Tip|{{ic|less}} を使ってファイルを確認できます:&lt;br /&gt;
 # cat /mnt/@snapshots/*/info.xml {{!}} less&lt;br /&gt;
次のページを見たいときは {{ic|space}} を、ファイルの最初に戻りたいときは {{ic|gg}} を使用します。}}&lt;br /&gt;
&lt;br /&gt;
{{ic|&amp;lt;description&amp;gt;}} タグと {{ic|&amp;lt;date&amp;gt;}} タグを見て、リストアしたいスナップショットが確認できたら、{{ic|&amp;lt;num&amp;gt;}} の番号をメモしてください。&lt;br /&gt;
&lt;br /&gt;
そして {{ic|@}} を他の場所 (例: {{ic|/@.broken}}) にして現在のシステムのコピーを保存します。もしくは {{ic|btrfs subvolume delete}} で {{ic|@}} を削除します。&lt;br /&gt;
&lt;br /&gt;
読み取り専用のスナップショットから読み書き可能なスナップショットを作成:&lt;br /&gt;
&lt;br /&gt;
 # btrfs subvol snapshot /mnt/@snapshots/&#039;&#039;#&#039;&#039;/snapshot /mnt/@&lt;br /&gt;
&lt;br /&gt;
{{ic|&#039;&#039;#&#039;&#039;}} は復元したい snapper のスナップショットの番号に置き換えてください。これで {{ic|/}} は前の状態に戻ります。再起動してください。&lt;br /&gt;
&lt;br /&gt;
===スナップショットからファイルを削除===&lt;br /&gt;
&lt;br /&gt;
過去のスナップショットから特定のファイルやフォルダを削除したい場合、[https://pypi.python.org/pypi/snapperS snapperS] というスクリプトが存在します。&lt;br /&gt;
&lt;br /&gt;
スクリプトを使わずにファイルを削除したい場合、以下のコマンドを実行して [https://unix.stackexchange.com/a/149933/3587 スナップショットのサブボリュームを読み書き可能] にする必要があります:&lt;br /&gt;
&lt;br /&gt;
 # btrfs property set /path/to/.snapshots/&amp;lt;snapshot_num&amp;gt;/snapshot ro false&lt;br /&gt;
&lt;br /&gt;
{{ic|1=ro=false}} となっていることを確認:&lt;br /&gt;
&lt;br /&gt;
{{hc|# btrfs property get /path/to/.snapshots/&amp;lt;snapshot_num&amp;gt;/snapshot|2=ro=false}}&lt;br /&gt;
&lt;br /&gt;
これで {{ic|/path/to/.snapshots/&amp;lt;snapshot_num&amp;gt;/snapshot}} のファイルは通常通りに編集することが可能になります。&lt;br /&gt;
&lt;br /&gt;
=== ドライブの負担を抑える ===&lt;br /&gt;
&lt;br /&gt;
頻繁に変更が加わるファイルシステム (例えば多数のシステムアップデートが行われる {{ic|/}} など) で長期間にわたって頻繁にスナップショットを取得すると動作がかなり遅くなることがあります。以下のようにすることで遅くなるのを回避できます:&lt;br /&gt;
* スナップショットを作成する価値がない {{ic|/var/cache/pacman/pkg}}, {{ic|/var/abs}}, {{ic|/var/tmp}}, {{ic|/srv}} などのサブボリュームを[[Btrfs#サブボリュームを作成する|作成]]する。&lt;br /&gt;
* [[#自動タイムラインスナップショット|自動タイムラインスナップショット]]を使う場合に、毎時・毎日・毎周・毎年のスナップショットのデフォルト設定を変更する。&lt;br /&gt;
&lt;br /&gt;
==== updatedb ====&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、{{ic|updatedb}} は snapper によって作成された {{ic|.snapshots}} ディレクトリのインデックスも作成してしまい、スナップショットが大量にある場合、深刻な遅延が発生したりメモリが異常に消費される原因になります。以下のように設定ファイルを編集することでインデックスを作成しないように {{ic|updatedb}} を設定できます:&lt;br /&gt;
{{hc|/etc/updatedb.conf|2=PRUNENAMES = &amp;quot;.snapshots&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
=== ログファイルの保持 ===&lt;br /&gt;
&lt;br /&gt;
{{ic|/var/log}} のサブボリュームを作成して {{ic|/}} のスナップショットに含まれないようにすることを推奨します。{{ic|/}} のスナップショットを復元したときにログファイルまで前の状態に戻ってしまうことがなくなり、トラブルシューティングが楽になります。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
===Snapper のログ===&lt;br /&gt;
Snapper は全ての活動を {{ic|/var/log/snapper.log}} に書き出します。何か問題が発生しているように感じたら真っ先にこのファイルをチェックしてください。&lt;br /&gt;
&lt;br /&gt;
毎時・毎日・毎週のスナップショットに問題がある場合、おそらく cronie サービス (もしくはその他の cron デーモン) が動いていなかったのが原因だということが多くあります。&lt;br /&gt;
&lt;br /&gt;
===IO エラー===&lt;br /&gt;
スナップショットを作成しようとすると IO エラーが表示される場合、スナップショットを作成しようとしたサブボリュームと関連付けられている [https://bbs.archlinux.org/viewtopic.php?id=164404 .snapshots] ディレクトリもサブボリュームになっていることを確認してください。&lt;br /&gt;
&lt;br /&gt;
また、{{ic|.snapshots}} の所有者が root になっていない可能性もあります ({{ic|/var/log/snapper.log}} に {{ic|Btrfs.cc(openInfosDir):219 - .snapshots must have owner root}} というエラーが出力されます)。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
* [http://snapper.io/ Snapper ホームページ]&lt;br /&gt;
* [https://en.opensuse.org/Portal:Snapper openSUSE Snapper ポータル]&lt;br /&gt;
* [https://btrfs.wiki.kernel.org/index.php/Main_Page Btrfs ホームページ]&lt;br /&gt;
* [https://www.linux.com/news/enterprise/systems-management/878490-snapper-suses-ultimate-btrfs-snapshot-manager/ Linux.com: Snapper: SUSE&#039;s Ultimate Btrfs Snapshot Manager]&lt;/div&gt;</summary>
		<author><name>Funcrab</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Picom&amp;diff=23040</id>
		<title>Picom</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Picom&amp;diff=23040"/>
		<updated>2022-01-04T16:53:46Z</updated>

		<summary type="html">&lt;p&gt;Funcrab: /* マルチディスプレイ */ 英語版を反映&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:X サーバー]]&lt;br /&gt;
[[Category:視覚効果]]&lt;br /&gt;
[[en:Picom]]&lt;br /&gt;
[[ko:Compton]]&lt;br /&gt;
[[ru:Compton]]&lt;br /&gt;
[[zh-hans:Compton]]&lt;br /&gt;
[https://github.com/yshui/picom Picom]  は軽量なスタンドアロン型のコンポジットマネージャです。コンポジット機能が含まれていない [[Xorg]] の[[ウィンドウマネージャ]]を使っている場合に向いています。Picom は [https://github.com/chjj/compton/ compton] のフォークであり、compton は [http://oliwer.net/xcompmgr-dana/ xcompmgr-dana] のフォークですが、xcompmgr-dana は [[xcompmgr]] のフォークです。&lt;br /&gt;
&lt;br /&gt;
Picom は大量にあった先行者のバグを修正していることで特に有名で、信頼性があり安定しているということで人気があります。他にも、高速な GLX (OpenGL) バックエンド (デフォルトでは無効になっています) やデフォルトのアクティブ・インアクティブウィンドウの透過、ウィンドウの枠の透過、ウィンドウの背景のブラー、ウィンドウの色の反転、描画レートの調整、垂直同期、条件で分岐する細かい制御、設定ファイルの読み込み、D-Bus の制御など、多数の改善や設定オプションが実装されています。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
{{Pkg|picom}} パッケージをインストールしてください。[[git]] 版を使う場合、{{AUR|picom-git}} をインストールしてください。また、[[Qt]] ベースの設定 GUI を {{AUR|compton-conf}} または {{AUR|compton-conf-git}} をインストールすることで使うことができます。&lt;br /&gt;
&lt;br /&gt;
== 設定 ==&lt;br /&gt;
&lt;br /&gt;
デフォルトの設定は {{ic|/etc/xdg/picom.conf}} にあります。 {{ic|~/.config/picom.conf}} や {{ic|~/.config/picom/picom.conf}}、{{ic|~/.picom.conf}} にコピーしてカスタマイズできます。&lt;br /&gt;
&lt;br /&gt;
picom でカスタム設定ファイルを使うには、次のコマンドを使用:&lt;br /&gt;
&lt;br /&gt;
 $ picom --config &#039;&#039;path/to/&#039;&#039;picom.conf&lt;br /&gt;
&lt;br /&gt;
=== 一部ウィンドウの影を無効化 ===&lt;br /&gt;
&lt;br /&gt;
picom が影を描画することによって、一部のアプリケーションでは見た目がおかしくなってしまうことがあります。{{ic|shadow-exclude}} オプションで picom の影を無効にできます。現在無効になっているウィンドウについては [https://projects.archlinux.org/svntogit/community.git/tree/trunk/compton.conf?h=packages/compton#n80] を見てください。&lt;br /&gt;
&lt;br /&gt;
メニューの影を無効化するには {{ic|picom.conf}} wintypes に以下を追加してください:&lt;br /&gt;
&lt;br /&gt;
 # menu        = { shadow = false; };&lt;br /&gt;
 dropdown_menu = { shadow = false; };&lt;br /&gt;
 popup_menu    = { shadow = false; };&lt;br /&gt;
 utility       = { shadow = false; };&lt;br /&gt;
&lt;br /&gt;
=== 透過 ===&lt;br /&gt;
&lt;br /&gt;
選択・非選択ウィンドウの透過率を設定するには、以下を {{ic|picom.conf}} に追加 (例: ターミナルエミュレータ):&lt;br /&gt;
&lt;br /&gt;
 opacity-rule = [&lt;br /&gt;
   &amp;quot;90:class_g = &#039;URxvt&#039; &amp;amp;&amp;amp; focused&amp;quot;,&lt;br /&gt;
   &amp;quot;60:class_g = &#039;URxvt&#039; &amp;amp;&amp;amp; !focused&amp;quot;&lt;br /&gt;
 ];&lt;br /&gt;
&lt;br /&gt;
[[#タブ化したウィンドウ (影と透過)]]も見てください。&lt;br /&gt;
&lt;br /&gt;
== 使用方法 ==&lt;br /&gt;
&lt;br /&gt;
Picom はいつでも手動で有効化・無効化することができます。また、バックグラウンドで自動起動 ([[デーモン]]) することも可能です。また、コンポジット効果を設定できる任意の引数もあります。引数の一部:&lt;br /&gt;
&lt;br /&gt;
* {{ic|-b}}: バックグラウンドプロセス ([[デーモン]]) で実行 (例: [[Openbox]] などの[[ウィンドウマネージャ]]で自動起動する場合)&lt;br /&gt;
* {{ic|-c}}: 影効果を有効化&lt;br /&gt;
* {{ic|-C}}: パネルとドックの影効果を無効化&lt;br /&gt;
* {{ic|-G}}: アプリケーションウィンドウとドラッグアンドドロップオブジェクトの影効果を無効化&lt;br /&gt;
* {{ic|--config}}: 指定した設定ファイルを使用&lt;br /&gt;
&lt;br /&gt;
他にも、タイミングの設定や、管理するディスプレイ、メニューやウィンドウの縁、インアクティブアプリケーションメニューの透過度など多数のオプションが存在します。詳しくは {{man|1|picom}} を見て下さい。&lt;br /&gt;
&lt;br /&gt;
{{Note|他の[[コンポジットマネージャ]]が動作している場合、&#039;&#039;picom&#039;&#039; を起動する前に無効化してください。}}&lt;br /&gt;
&lt;br /&gt;
セッション中にデフォルトのコンポジット効果を手動で有効化するには、次のコマンドを使用:&lt;br /&gt;
&lt;br /&gt;
 $ picom&lt;br /&gt;
&lt;br /&gt;
また、影効果を全て無効化するには、{{ic|-C}} と {{ic|-G}} 引数を追加します:&lt;br /&gt;
&lt;br /&gt;
 $ picom -CG&lt;br /&gt;
&lt;br /&gt;
バックグラウンドプロセス ([[デーモン]]) として picom を自動起動するには、{{ic|-b}} 引数を使います:&lt;br /&gt;
&lt;br /&gt;
 $ picom -b&lt;br /&gt;
&lt;br /&gt;
[[デーモン]]プロセスの影効果を全て無効化するには、{{ic|-C}} と {{ic|-G}} 引数を追加:&lt;br /&gt;
&lt;br /&gt;
 $ picom -CGb&lt;br /&gt;
&lt;br /&gt;
以下は引数を追加して必要な値を設定した例です:&lt;br /&gt;
&lt;br /&gt;
 $ picom -cCGfF -o 0.38 -O 200 -I 200 -t 0 -l 0 -r 3 -D2 -m 0.88&lt;br /&gt;
&lt;br /&gt;
== マルチディスプレイ ==&lt;br /&gt;
xinerama を使わずに[[マルチディスプレイ]]の設定をしている場合 (複数のスクリーンで X サーバーを実行している場合)、デフォルトでは picom は一つのスクリーンでしか起動しません。{{ic|DISPLAY}} 環境変数を使うことで全てのスクリーンで実行させることができます。&lt;br /&gt;
例えば、バックグラウンドで X スクリーン 0 で実行する場合：&lt;br /&gt;
&lt;br /&gt;
 DISPLAY=&amp;quot;:0&amp;quot; picom -b&lt;br /&gt;
&lt;br /&gt;
上記はすべてのモニタで動作するはずですが、動作しない場合は手動で各モニタを指定する古い方法を試してみてください。&lt;br /&gt;
&lt;br /&gt;
 seq 0 3 | xargs -l1 -I@ picom -b -d :0.@&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
最近のバージョンの picom には DRI2 アクセラレーションに問題があり、DRI2 を使っているときにちらつきが発生していました ([https://github.com/yshui/picom/issues/47 picom バグ], [https://bugs.freedesktop.org/show_bug.cgi?id=108651 mesa バグ])。対処策によって問題は解決していますが、一部のユーザーにはまだ問題が残っているという報告があります。DRI3 にはこのような問題はありません。&lt;br /&gt;
&lt;br /&gt;
他のアプリケーションやプログラムで正しい設定をしていない場合、コンポジット効果を有効にすることで外観がおかしくなる問題が発生することがあります。&lt;br /&gt;
&lt;br /&gt;
=== Conky ===&lt;br /&gt;
&lt;br /&gt;
[[Conky]] のウィンドウの影を無効化するには、{{ic|~/.conkyrc}} に以下を記述します:&lt;br /&gt;
&lt;br /&gt;
 own_window_class conky&lt;br /&gt;
&lt;br /&gt;
=== dwm と dmenu===&lt;br /&gt;
&lt;br /&gt;
dwm のステータスバーは picom の関数から検出されず、自動的にウィンドウマネージャのエレメントが除外されることはありません。また、dwm のステータスバーと dmenu のどちらもウィンドウ id は固定されていません。ステータスバーがウィンドウ透過しないようにしたい場合、ソースコードのウィンドウクラスにパッチをあてるか、他の属性を使って除外してください。dmenu と dwm のステータスバーを上部に表示している場合、位置によって指定することができます:&lt;br /&gt;
 $ picom &amp;lt;any other arguments&amp;gt; --focus-exclude &amp;quot;x = 0 &amp;amp;&amp;amp; y = 0 &amp;amp;&amp;amp; override_redirect = true&amp;quot;&lt;br /&gt;
&lt;br /&gt;
もしくは、設定ファイルを使う場合:&lt;br /&gt;
 focus-exclude = &amp;quot;x = 0 &amp;amp;&amp;amp; y = 0 &amp;amp;&amp;amp; override_redirect = true&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
上書きリダイレクトプロパティは大抵のウィンドウでは false になっています。それによって左下に配置された他のウィンドウが除外されることを防げます (例えば、dwm ステータスバーが非表示になった場合、x0 y0 は dwm のマスタースタックにある全てのウィンドウにマッチします)。&lt;br /&gt;
&lt;br /&gt;
=== Firefox ===&lt;br /&gt;
&lt;br /&gt;
[[#一部ウィンドウの影を無効化]]を見てください。&lt;br /&gt;
&lt;br /&gt;
Firefox の部品の影を無効化するには {{ic|picom.conf}} の shadow-exclude に以下を追加します:&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;class_g = &#039;firefox&#039; &amp;amp;&amp;amp; argb&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
詳しくは [https://github.com/chjj/compton/issues/201#issuecomment-45288510] を参照。&lt;br /&gt;
&lt;br /&gt;
=== Slock ===&lt;br /&gt;
インアクティブウィンドウの透過を有効にしている場合 (コマンドで実行している場合 {{ic|-i}} 引数)、[[アプリケーション一覧/セキュリティ#スクリーンロック|slock]] を使っているときに問題が発生します。透過度を {{ic|0.2}} にすることで解決します。例えばコマンドで picom を実行する場合:&lt;br /&gt;
&lt;br /&gt;
 $ picom &amp;lt;any other arguments&amp;gt; -i 0.2&lt;br /&gt;
&lt;br /&gt;
または、設定ファイルを使う場合:&lt;br /&gt;
&lt;br /&gt;
 inactive-dim = 0.2;&lt;br /&gt;
&lt;br /&gt;
もしくは、slock のウィンドウ ID を使用して slock を除外したり、名前がないウィンドウを全て除外する方法もあります。&lt;br /&gt;
{{note|プログラムによっては新しいインスタンスを起動するたびに id を変化させるものもありますが、slock の id は固定されています。}}&lt;br /&gt;
名前がないウィンドウを全て picom から除外するには:&lt;br /&gt;
 $ picom &amp;lt;other arguments&amp;gt; --focus-exclude &amp;quot;! name~=&#039;&#039;&amp;quot;&lt;br /&gt;
次のコマンドを実行することで slock のウィンドウ id を確認できます:&lt;br /&gt;
 $ xwininfo &amp;amp; slock&lt;br /&gt;
画面の何処かを (slock が終了する前に) 素早くクリックして、パスワードを入力してロックを解除してください。以下のようにウィンドウ id が出力されます:&lt;br /&gt;
 xwininfo: Window id: 0x1800001 (has no name)&lt;br /&gt;
取得できたウィンドウ id を使って picom から除外するには:&lt;br /&gt;
 $ picom &amp;lt;any other arguments&amp;gt; --focus-exclude &#039;id = 0x1800001&#039;&lt;br /&gt;
もしくは、設定ファイルを使う場合:&lt;br /&gt;
 focus-exclude = &amp;quot;id = 0x1800001&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
=== ちらつき ===&lt;br /&gt;
&lt;br /&gt;
デフォルトの {{ic|picom.conf}} を使っているときに最大化されたウィンドウでちらつきが発生する場合、以下のオプションで解決できます:&lt;br /&gt;
&lt;br /&gt;
 unredir-if-possible = false;&lt;br /&gt;
&lt;br /&gt;
詳しくは [https://github.com/chjj/compton/issues/402] を参照。&lt;br /&gt;
&lt;br /&gt;
=== フルスクリーン画面でティアリングが発生する ===&lt;br /&gt;
&lt;br /&gt;
フルスクリーンでビデオ再生するとティアリングが発生する場合、[[Picom#ちらつき|ちらつき]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== xft フォントを使用した場合にラグが発生する ===&lt;br /&gt;
&lt;br /&gt;
[[xterm]] や [[urxvt]] などのアプリケーションで Xft フォントを使用した場合に酷いラグが発生する場合、以下のオプションを使ってみてください:&lt;br /&gt;
&lt;br /&gt;
 --xrender-sync --xrender-sync-fence&lt;br /&gt;
&lt;br /&gt;
もしくは xrender バックエンドを使ってみてください。&lt;br /&gt;
&lt;br /&gt;
詳しくは [https://github.com/chjj/compton/issues/152] を参照。&lt;br /&gt;
&lt;br /&gt;
=== AMD の Catalyst ドライバーを使ってる場合に画面に問題が発生する ===&lt;br /&gt;
次の引数を付けて picom を起動するか:&lt;br /&gt;
&lt;br /&gt;
 --backend xrender&lt;br /&gt;
&lt;br /&gt;
{{ic|picom.conf}} ファイルに以下を追加してください:&lt;br /&gt;
&lt;br /&gt;
 backend = &amp;quot;xrender&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
詳しくは https://github.com/chjj/compton/issues/208 を参照。&lt;br /&gt;
&lt;br /&gt;
=== タブ化したウィンドウ (影と透過) ===&lt;br /&gt;
&lt;br /&gt;
透過されたウィンドウがタブ化されているとき、下のタブになっているウィンドウが見えてしまいます。タブ化されたウィンドウそれぞれが影を描画するため、影が重なります。&lt;br /&gt;
&lt;br /&gt;
既存の [https://projects.archlinux.org/svntogit/community.git/tree/trunk/compton.conf?h=packages/compton#n80 shadow-exclude リスト] に以下を追加することで重複する影の問題を解決できます:&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;_NET_WM_STATE@:32a *= &#039;_NET_WM_STATE_HIDDEN&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
また、{{ic|picom.conf}} に以下を追加することで下のタブになっているウィンドウを描画しないようにできます:&lt;br /&gt;
&lt;br /&gt;
 opacity-rule = [&lt;br /&gt;
   &amp;quot;95:class_g = &#039;URxvt&#039; &amp;amp;&amp;amp; !_NET_WM_STATE@:32a&amp;quot;,&lt;br /&gt;
   &amp;quot;0:_NET_WM_STATE@[0]:32a *= &#039;_NET_WM_STATE_HIDDEN&#039;&amp;quot;,&lt;br /&gt;
   &amp;quot;0:_NET_WM_STATE@[1]:32a *= &#039;_NET_WM_STATE_HIDDEN&#039;&amp;quot;,&lt;br /&gt;
   &amp;quot;0:_NET_WM_STATE@[2]:32a *= &#039;_NET_WM_STATE_HIDDEN&#039;&amp;quot;,&lt;br /&gt;
   &amp;quot;0:_NET_WM_STATE@[3]:32a *= &#039;_NET_WM_STATE_HIDDEN&#039;&amp;quot;,&lt;br /&gt;
   &amp;quot;0:_NET_WM_STATE@[4]:32a *= &#039;_NET_WM_STATE_HIDDEN&#039;&amp;quot;&lt;br /&gt;
 ];&lt;br /&gt;
&lt;br /&gt;
{{ic|URxvt}} はあなたが使っているターミナルの Xorg クラスに置き換えてください。{{ic|xprop WM_CLASS}} コマンドを実行してからウィンドウをクリックすることでウィンドウのクラスを確認できます。&lt;br /&gt;
&lt;br /&gt;
詳しくは [https://www.reddit.com/r/unixporn/comments/330zxl/webmi3_no_more_overlaying_shadows_and_windows_in/] を参照。&lt;br /&gt;
&lt;br /&gt;
{{Warning|i3 と kitty を使っている場合、i3 のリロード時に全ての kitty のタブ化されたインスタンスがフリーズします (2019年6月4日現在) [https://github.com/kovidgoyal/kitty/issues/1681]。}}&lt;br /&gt;
&lt;br /&gt;
=== xsetroot で背景色が変えられない ===&lt;br /&gt;
現在、picom は {{ic|xsetroot}} の {{ic|-solid}} オプションと互換性がありません。解決方法としては {{Pkg|hsetroot}} を使って背景色を設定するようにしてください:&lt;br /&gt;
&lt;br /&gt;
 $ hsetroot -solid &#039;#000000&#039;&lt;br /&gt;
&lt;br /&gt;
詳しくは https://github.com/chjj/compton/issues/162 を参照。&lt;br /&gt;
&lt;br /&gt;
=== NVIDIA のプロプライエタリドライバーでちらつきが発生する ===&lt;br /&gt;
{{ic|picom.conf}} で以下のように設定してみてください:&lt;br /&gt;
 vsync = &amp;quot;opengl&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Nvidia のプロプライエタリドライバーと FullCompositionPipeline でラグが発生する ===&lt;br /&gt;
&lt;br /&gt;
[[#AMD の Catalyst ドライバーを使ってる場合に画面に問題が発生する]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== Nvidia のプロプライエタリドライバーで Xorg によって GPU のメモリリークが発生する ===&lt;br /&gt;
&lt;br /&gt;
[[#AMD の Catalyst ドライバーを使ってる場合に画面に問題が発生する]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== サスペンド後の Slock ===&lt;br /&gt;
systemd サービスを使ってサスペンド・ハイバネート時に slock を起動している場合、復帰後に画面のロックが解除されてしまうことがあります。問題を解決するには、ウィンドウフェーディングを無効化してください:&lt;br /&gt;
 $ picom --no-fading-openclose&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
*[https://ubuntuforums.org/showthread.php?t=2144468&amp;amp;p=12644745#post12644745 Howto: Using Picom for tear-free compositing on XFCE or LXDE]&lt;/div&gt;</summary>
		<author><name>Funcrab</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Snapper&amp;diff=23014</id>
		<title>Snapper</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Snapper&amp;diff=23014"/>
		<updated>2022-01-02T19:52:22Z</updated>

		<summary type="html">&lt;p&gt;Funcrab: /* boot パーティションのバックアップ */ 英語版を反映&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ファイルシステム]]&lt;br /&gt;
[[en:Snapper]]&lt;br /&gt;
[[zh-hans:Snapper]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|Btrfs}}&lt;br /&gt;
{{Related|mkinitcpio}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[http://snapper.io Snapper] は openSUSE の Arvin Schnell によって作られた、[[Btrfs]] のサブボリュームと [[LVM]] のボリュームのスナップショットの管理を助けるツールです。スナップショットを作成して比較したり、前のスナップショットに戻したり、自動スナップショットが行えます。&lt;br /&gt;
&lt;br /&gt;
==インストール==&lt;br /&gt;
安定版は {{Pkg|snapper}} パッケージからインストールできます。開発版は {{AUR|snapper-git}} パッケージで利用可能です。&lt;br /&gt;
&lt;br /&gt;
GUI は {{AUR|snapper-gui-git}} パッケージでインストールすることができます。&lt;br /&gt;
&lt;br /&gt;
==新しい設定の作成==&lt;br /&gt;
&lt;br /&gt;
Btrfs サブボリュームで Snapper の設定を作成する前に、あらかじめサブボリュームが作成されている必要があります。サブボリュームが存在しない場合、Snapper の設定をするまえに[[Btrfs#サブボリュームを作成する|サブボリュームを作成]]してください。&lt;br /&gt;
&lt;br /&gt;
Btrfs サブボリュームが {{ic|&#039;&#039;/path/to/subvolume&#039;&#039;}} に存在していて、{{ic|&#039;&#039;config&#039;&#039;}} という名前で新しく Snapper の設定を作るには:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; create-config &#039;&#039;/path/to/subvolume&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
上記のコマンドを実行すると:&lt;br /&gt;
*{{ic|/etc/snapper/config-templates}} にあるデフォルトのテンプレートに基づいて {{ic|/etc/snapper/configs/&#039;&#039;config&#039;&#039;}} に設定ファイルが作成されます。&lt;br /&gt;
*{{ic|&#039;&#039;/path/to/subvolume&#039;&#039;/.snapshots}} にサブボリュームが作成されてスナップショットが保存されます。スナップショットのパスは {{ic|&#039;&#039;/path/to/subvolume&#039;&#039;/.snapshots/&#039;&#039;#&#039;&#039;/snapshot}} になります ({{ic|&#039;&#039;#&#039;&#039;}} はスナップショット番号です)。&lt;br /&gt;
*{{ic|/etc/conf.d/snapper}} の {{ic|SNAPPER_CONFIGS}} に {{ic|&#039;&#039;config&#039;&#039;}} が追加されます。&lt;br /&gt;
&lt;br /&gt;
例えば、{{ic|/}} にマウントされたサブボリュームの設定ファイルを作成する場合:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c root create-config /&lt;br /&gt;
&lt;br /&gt;
この時点で、設定は有効になっています。[[cron]] デーモンが動作している場合、snapper は[[#自動タイムラインスナップショット|自動タイムラインスナップショット]]を作成します。[[cron]] デーモンを使っていない場合、systemd サービスとタイマーを使用する必要があります。[[#有効化/無効化]]を見てください。&lt;br /&gt;
&lt;br /&gt;
設定について詳しくは {{ic|snapper-configs}} の [[man ページ]]を参照。&lt;br /&gt;
&lt;br /&gt;
== スナップショットの作成 ==&lt;br /&gt;
&lt;br /&gt;
=== 自動タイムラインスナップショット ===&lt;br /&gt;
&lt;br /&gt;
Snapper では毎時・毎日・毎月・毎年に保存するスナップショットの数を設定できるスナップショットタイムラインを作成することができます。デフォルトでは1時間毎にスナップショットが取得されます。そして1日1回、タイムラインのクリーンアップアルゴリズムによって&amp;quot;古くなって要らなくなった&amp;quot;スナップショットを削除します。&lt;br /&gt;
&lt;br /&gt;
==== 有効化/無効化 ====&lt;br /&gt;
&lt;br /&gt;
[[cron]] デーモンが動作している場合、自動タイムラインスナップショットは自動的に起動します。無効化するには、サブボリュームに存在する設定ファイルを編集して以下を設定してください:&lt;br /&gt;
&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;TIMELINE_CREATE=&amp;quot;no&amp;quot;&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
[[cron]] デーモンを使っていない場合、パッケージに含まれている systemd ユニットを使うことができます。{{ic|snapper-timeline.timer}} を[[起動]]・[[有効化]]することで自動タイムラインスナップショットが開始されます。さらに、{{ic|snapper-cleanup.timer}} を[[起動]]・[[有効化]]すると定期的に古いスナップショットが消去されます。&lt;br /&gt;
&lt;br /&gt;
{{Note|cron デーモンと有効化された systemd ユニットがともに動作すると、重複したスナップショットが作成される結果になる場合があります。systemd ユニットを使いつつ cron 側を無効にできるかもしれない一つの手法に、[[pacman]] の [[pacman#インストールさせないファイルを設定|NoExtract]] および [[pacman#アップグレードさせないファイルを設定|NoUpgrade]] を使い、snapper のパッケージの cron ファイルをインストールしない方法があります。[https://unix.stackexchange.com/questions/425570/snapper-has-recently-started-performing-duplicate-snapshots-each-hour] を見てください。}}&lt;br /&gt;
&lt;br /&gt;
==== スナップショットのリミットの設定 ====&lt;br /&gt;
&lt;br /&gt;
デフォルト設定では、毎時間10個、毎日10個、毎月10個、毎年10個のスナップショットが保存されます。{{ic|/}} など頻繁にサブボリュームに変更を加える場合は、この設定を変更したほうが良いでしょう。[[#ドライブの負担を抑える]]を見て下さい。&lt;br /&gt;
&lt;br /&gt;
以下は、5時間、毎日7個のスナップショットだけを維持して、毎月・毎年は保存しない設定の例です:&lt;br /&gt;
{{hc|head=/etc/snapper/configs/&#039;&#039;config&#039;&#039;|output=&lt;br /&gt;
TIMELINE_MIN_AGE=&amp;quot;1800&amp;quot;&lt;br /&gt;
TIMELINE_LIMIT_HOURLY=&amp;quot;5&amp;quot;&lt;br /&gt;
TIMELINE_LIMIT_DAILY=&amp;quot;7&amp;quot;&lt;br /&gt;
TIMELINE_LIMIT_WEEKLY=&amp;quot;0&amp;quot;&lt;br /&gt;
TIMELINE_LIMIT_MONTHLY=&amp;quot;0&amp;quot;&lt;br /&gt;
TIMELINE_LIMIT_YEARLY=&amp;quot;0&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== スナップショットとクリーンアップの頻度を変更する ====&lt;br /&gt;
&lt;br /&gt;
systemd タイマーを使っている場合、タイマーを[[Systemd#ユニットファイルの編集|編集]]してスナップショットの頻度を変更できます。&lt;br /&gt;
&lt;br /&gt;
例えば、{{ic|snapper-timeline.timer}} を編集して以下のようにすることで5分毎にスナップショットが作成されます:&lt;br /&gt;
&lt;br /&gt;
 [Timer]&lt;br /&gt;
 OnCalendar=&lt;br /&gt;
 OnCalendar=*:0/5&lt;br /&gt;
&lt;br /&gt;
{{Note|設定パラメータ {{ic|TIMELINE_LIMIT_HOURLY}} は上記の設定に関連付けられています。上の例では5分毎にスナップショットが作成されるようになります。}}&lt;br /&gt;
&lt;br /&gt;
{{ic|snapper-cleanup.timer}} を編集するときは {{ic|OnUnitActiveSec}} を変更してください。1時間毎に古いスナップショットを消去するには、以下を追加:&lt;br /&gt;
&lt;br /&gt;
 [Timer]&lt;br /&gt;
 OnUnitActiveSec=1h&lt;br /&gt;
&lt;br /&gt;
詳しくは [[Systemd/タイマー]]や [[Systemd#ドロップインファイル]]を参照。&lt;br /&gt;
&lt;br /&gt;
=== 手動スナップショット ===&lt;br /&gt;
&lt;br /&gt;
==== シンプルなスナップショット ====&lt;br /&gt;
&lt;br /&gt;
デフォルトでは Snapper は他のスナップショットと特別な関係を持たない、単純なスナップショットを作成します。&lt;br /&gt;
&lt;br /&gt;
手動でサブボリュームのスナップショットを作成するには、以下のコマンドを実行:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; create --description &#039;&#039;desc&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
上記のコマンドはクリーンアップアルゴリズムを使用しないため、スナップショットは明示的に[[#スナップショットの削除|削除]]するまでずっと残り続けます。&lt;br /&gt;
&lt;br /&gt;
クリーンアップアルゴリズムを設定するには {{ic|create}} の後に {{ic|-c}} フラグを使用して {{ic|number}}, {{ic|timeline}}, {{ic|pre}}, {{ic|post}} のどれかを選択してください。{{ic|number}} は設定ファイルで指定された番号にあわせて定期的にスナップショットを削除します。例えば、{{ic|number}} アルゴリズムを使用するスナップショットを作成するには:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; create -c number&lt;br /&gt;
&lt;br /&gt;
{{ic|timeline}} スナップショットについては[[#自動タイムラインスナップショット|自動タイムラインスナップショット]]を、{{ic|pre}} と {{ic|post}} については[[#事前事後のスナップショット|事前事後のスナップショット]]を見てください。&lt;br /&gt;
&lt;br /&gt;
==== 事前事後のスナップショット ====&lt;br /&gt;
&lt;br /&gt;
シンプルなスナップショットだけでなく、Snapper では事前事後のスナップショットを作成できます。事前 (&#039;&#039;pre&#039;&#039;) スナップショットには必ず対応する事後 (&#039;&#039;post&#039;&#039;) スナップショットが存在します。このペアによってシステムに変更を加える前後のスナップショットを作成することができます。&lt;br /&gt;
&lt;br /&gt;
事前事後のスナップショットを作成するには、まず事前スナップショットを作成:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; create -t pre -p&lt;br /&gt;
&lt;br /&gt;
上記のコマンドでスナップショット番号が出力されます。&lt;br /&gt;
&lt;br /&gt;
それからシステムに何らかの変更を加えます (例えば新しいプログラムをインストールしたり、ソフトウェアをアップグレードするなど)。&lt;br /&gt;
&lt;br /&gt;
次に事後のスナップショットを作成:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; create -t post --pre-number &#039;&#039;#&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|&#039;&#039;#&#039;&#039;}} は事前スナップショットの番号に置き換えてください。&lt;br /&gt;
&lt;br /&gt;
{{ic|create}} に {{ic|--command}} フラグを指定して、コマンドをラップすることもできます:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; create --command &#039;&#039;cmd&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|&#039;&#039;cmd&#039;&#039;}} は事前事後のスナップショットを作成する間に実行したいコマンドに置き換えてください。&lt;br /&gt;
&lt;br /&gt;
[[#pacman のトランザクションをスナップショットで記録|pacman のトランザクションをスナップショットで記録]]も見てください。&lt;br /&gt;
&lt;br /&gt;
=== 起動時にスナップショットを作成 ===&lt;br /&gt;
&lt;br /&gt;
snapper で {{ic|root}} 設定のスナップショットを作成するには {{ic|snapper-boot.timer}} を[[有効化]]してください。&lt;br /&gt;
&lt;br /&gt;
== スナップショットの確認 ==&lt;br /&gt;
&lt;br /&gt;
作成されたスナップショットを確認するには:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; list&lt;br /&gt;
&lt;br /&gt;
== 設定の確認 ==&lt;br /&gt;
&lt;br /&gt;
全ての[[#新しい設定の作成|設定]]を確認するには:&lt;br /&gt;
&lt;br /&gt;
 # snapper list-configs&lt;br /&gt;
&lt;br /&gt;
== スナップショットの削除 ==&lt;br /&gt;
&lt;br /&gt;
スナップショット番号 {{ic|&#039;&#039;#&#039;&#039;}} を削除するには:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; delete &#039;&#039;#&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
一度に複数のスナップショットを削除できます。例えば、root 設定の65と70のスナップショットを削除するには:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c root delete 65 70&lt;br /&gt;
&lt;br /&gt;
{{Note|事前スナップショットを削除した場合、事後スナップショットも一緒に削除してください。逆も然りです。}}&lt;br /&gt;
&lt;br /&gt;
==root 以外のユーザーでアクセス==&lt;br /&gt;
設定は root ユーザーによって作成され、デフォルトでは、root だけが設定を確認したり変更できます。&lt;br /&gt;
&lt;br /&gt;
特定のユーザーからもスナップショットを確認できるようにしたいときは、{{ic|/etc/snapper/configs/&#039;&#039;config&#039;&#039;}} ファイルの {{ic|ALLOW_USERS}} の値を変更してください。そうすれば通常ユーザーでも {{ic|snapper -c &#039;&#039;config&#039;&#039;list}} を実行できるようになります。&lt;br /&gt;
&lt;br /&gt;
さらに、ユーザーを使って {{ic|.snapshots}} ディレクトリを閲覧できるようにしたい、それでいてディレクトリの所有者は root のままにしておきたいということが考えられます。そのような場合、使用したいユーザーが属しているグループに、グループ所有者を変更してください。例えば {{ic|users}}　を使う場合:&lt;br /&gt;
&lt;br /&gt;
 # chmod a+rx .snapshots&lt;br /&gt;
 # chown :users .snapshots&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== pacman のトランザクションをスナップショットで記録 ===&lt;br /&gt;
&lt;br /&gt;
pacman の操作時に自動的にスナップショットを作成するためのパッケージが複数存在します:&lt;br /&gt;
&lt;br /&gt;
* {{App|pacupg|Btrfs のスナップショットでパッケージと AUR のアップグレードを記録して、簡単にロールバックできるようにするスクリプト。|https://github.com/crossroads1112/bin/tree/master/pacupg|{{AUR|pacupg}}}}&lt;br /&gt;
* {{App|snap-pac|openSUSE の YaST のように自動的に[[#事前事後のスナップショット|事前事後のスナップショット]]を作成します。[[Pacman#フック]]を使用しています。|https://github.com/wesbarnett/snap-pac|{{Pkg|snap-pac}}}}&lt;br /&gt;
* {{App|snap-pac-grub|{{pkg|snap-pac}} でスナップショットが作成された後に {{Pkg|grub-btrfs}} 用に GRUB エントリを更新します。[[Pacman#フック]]を使用します。||{{aur|snap-pac-grub}}}}&lt;br /&gt;
* {{App|snp|シェルコマンドの実行前後に snapper でスナップショットを取るラッパー。例: {{ic|$ snp pacman -Syu}}|https://gist.github.com/erikw/5229436|}}&lt;br /&gt;
&lt;br /&gt;
=== boot パーティションのバックアップ ===&lt;br /&gt;
&lt;br /&gt;
{{ic|/boot}} パーティションが btrfs ファイルシステム上に存在しない場合 (例: [[ESP]])、snapper でバックアップすることはできません。フックを使用してカーネルのアップデート時に boot パーティションを自動的に btrfs ファイルシステムにコピーさせることはできます。{{Pkg|snap-pac}} でも上手くバックアップされます。&lt;br /&gt;
{{hc|1=/etc/pacman.d/hooks/50-bootbackup.hook|2=&lt;br /&gt;
[Trigger]&lt;br /&gt;
Operation = Upgrade&lt;br /&gt;
Operation = Install&lt;br /&gt;
Operation = Remove&lt;br /&gt;
Type = Path&lt;br /&gt;
Target = usr/lib/modules/*/vmlinuz&lt;br /&gt;
&lt;br /&gt;
[Action]&lt;br /&gt;
Depends = rsync&lt;br /&gt;
Description = Backing up /boot...&lt;br /&gt;
When = PostTransaction&lt;br /&gt;
Exec = /usr/bin/rsync -a --delete /boot /.bootbackup&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== 外部ドライブに差分バックアップ ===&lt;br /&gt;
&lt;br /&gt;
以下のパッケージは {{ic|btrfs send}} と {{ic|btrfs receive}} を使用して外部ドライブにバックアップを差分で送信します:&lt;br /&gt;
&lt;br /&gt;
* {{App|buttersink|Btrfs スナップショットの rsync のようなもので、スナップショットの差分だけを送信することで自動的に同期を最適化します。|https://github.com/AmesCornish/buttersink.git|{{AUR|buttersink-git}}}}&lt;br /&gt;
* {{App|snap-sync|snapper スナップショットを使用して外部ドライブにバックアップします。|https://github.com/wesbarnett/snap-sync.git|{{Pkg|snap-sync}}}}&lt;br /&gt;
* {{App|snapsync|snapper 用の同期ツール。|https://github.com/doudou/snapsync|{{AUR|ruby-snapsync}}}}&lt;br /&gt;
&lt;br /&gt;
===推奨ファイルシステムレイアウト===&lt;br /&gt;
&lt;br /&gt;
{{Note|1=以下のレイアウトは {{ic|snapper rollback}} を使用することは想定していませんが、コマンドで {{ic|/}} をリストアしたときの問題を軽減します。[https://bbs.archlinux.org/viewtopic.php?id=194491 フォーラムスレッド] を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
以下は {{ic|/}} を簡単に復元できるようにするための推奨ファイルシステムレイアウトです。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ ファイルシステムレイアウト&lt;br /&gt;
! サブボリューム !! マウントポイント&lt;br /&gt;
|-&lt;br /&gt;
| @ || /&lt;br /&gt;
|-&lt;br /&gt;
| @home || /home&lt;br /&gt;
|-&lt;br /&gt;
| @snapshots || /.snapshots&lt;br /&gt;
|-&lt;br /&gt;
| @var_log || /var/log&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 subvolid=5&lt;br /&gt;
   |&lt;br /&gt;
   ├── @ -|&lt;br /&gt;
   |     含まれるディレクトリ:&lt;br /&gt;
   |       ├── /usr&lt;br /&gt;
   |       ├── /bin&lt;br /&gt;
   |       ├── /.snapshots&lt;br /&gt;
   |       ├── ...&lt;br /&gt;
   |&lt;br /&gt;
   ├── @home&lt;br /&gt;
   ├── @snapshots&lt;br /&gt;
   ├── @var_log&lt;br /&gt;
   └── @...&lt;br /&gt;
&lt;br /&gt;
{{ic|/.snapshots}} は {{ic|@snapshots}} のマウントポイントです。{{ic|@...}} は {{ic|/}} にマウントするサブボリューム ({{ic|@}}) とは別に保存したいサブボリュームになります。{{ic|/}} のスナップショットを作成するとき、他のサブボリュームはスナップショットに含まれません。ただし、別の snapper 設定を作成することで他のサブボリュームもスナップショットで記録できます。システムを {{ic|/}} のスナップショットの時点まで戻したいと思ったときに、他のサブボリュームには影響が及びません。&lt;br /&gt;
&lt;br /&gt;
例えば、{{ic|/}} をスナップショット時に戻したいが {{ic|/home}} は最新の状態のままにしたい場合、サブボリュームを作成して {{ic|/home}} にマウントしてください。詳しくは [[Btrfs#サブボリュームをマウントする]]を参照。&lt;br /&gt;
&lt;br /&gt;
上記のレイアウトは snapper ユーティリティで定期的に {{ic|/}} のスナップショットが作成できるのと同時に、起動できなくなった場合に Arch のライブ CD から {{ic|/}} を簡単に復元することができます。&lt;br /&gt;
&lt;br /&gt;
その場合、初期設定をしたら snapper に特別な設定をする必要はありません。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* サブボリュームが {{ic|@}} 下に入れ子になっていても、{{ic|/}} のスナップショットには含まれません。{{ic|/}} にマウントしているサブボリュームのスナップショットを保存したい場合は snapper でサブボリュームの設定を行ってください。&lt;br /&gt;
* [[Btrfs#スワップファイル|Btrfs の制限]]により、スナップショットされたボリュームは[[スワップ#スワップファイル|スワップファイル]]を含むことができません。スワップファイルを別のサブボリュームに置くか、[[スワップ#スワップパーティション|スワップパーティション]]を作成してください。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
====snapper の設定とマウントポイント====&lt;br /&gt;
&lt;br /&gt;
{{ic|/.snapshots}} がマウントされていないこと、フォルダとして存在しないことを確認してください:&lt;br /&gt;
 # umount /.snapshots&lt;br /&gt;
 # rm -r /.snapshots&lt;br /&gt;
&lt;br /&gt;
それから {{ic|/}} の[[#新しい設定の作成|新しい設定を作成]]します。&lt;br /&gt;
&lt;br /&gt;
そして {{ic|@snapshots}} を {{ic|/.snapshots}} に[[マウント]]してください。例えば、ファイルシステムが {{ic|/dev/sda1}} に存在する場合:&lt;br /&gt;
 # mount -o subvol=@snapshots /dev/sda1 /.snapshots&lt;br /&gt;
マウントを永続化させるには、[[fstab]] にエントリを作成します。&lt;br /&gt;
&lt;br /&gt;
もしくは fstab エントリが既に存在する場合、スナップショットのサブボリュームを再マウントします:&lt;br /&gt;
 # mount -a&lt;br /&gt;
&lt;br /&gt;
フォルダには {{ic|750}} の[[ファイルのパーミッションと属性#数字を使う方法|パーミッション]]を設定してください。&lt;br /&gt;
&lt;br /&gt;
snapper が作成するスナップショットは全て {{ic|@}} サブボリュームの外に保存されるため、snapper のスナップショットを削除しなくても {{ic|@}} を簡単に置き換えることができます。&lt;br /&gt;
&lt;br /&gt;
===={{ic|/}} を {{ic|@}} のスナップショットに復元 ====&lt;br /&gt;
&lt;br /&gt;
snapper のスナップショットを使って {{ic|/}} をリストアしたくなったら、まずは Arch Linux のライブ USB/CD を起動します。&lt;br /&gt;
&lt;br /&gt;
トップレベルのサブボリューム (subvolid=5) を[[マウント]]してください。{{ic|subvolid}} マウントフラグは省略します。&lt;br /&gt;
&lt;br /&gt;
{{ic|/mnt/@snapshots/*/info.xml}} から復元したいスナップショットを確認します:&lt;br /&gt;
{{Tip|{{ic|vi}} を使ってファイルを確認できます:&lt;br /&gt;
 # vi /mnt/@snapshots/*/info.xml&lt;br /&gt;
次のファイルを見たいときは {{ic|:n}} を、最初のファイルに戻りたいときは {{ic|:rew}} を使用します。}}&lt;br /&gt;
&lt;br /&gt;
{{ic|&amp;lt;description&amp;gt;}} タグと {{ic|&amp;lt;date&amp;gt;}} タグを見て、リストアしたいスナップショットが確認できたら、{{ic|&amp;lt;num&amp;gt;}} の番号をメモしてください。&lt;br /&gt;
&lt;br /&gt;
そして {{ic|@}} を他の場所 (例: {{ic|/@.broken}}) にして現在のシステムのコピーを保存します。もしくは {{ic|btrfs subvolume delete}} で {{ic|@}} を削除します。&lt;br /&gt;
&lt;br /&gt;
読み取り専用のスナップショットから読み書き可能なスナップショットを作成:&lt;br /&gt;
&lt;br /&gt;
 # btrfs subvol snapshot /mnt/@snapshots/&#039;&#039;#&#039;&#039;/snapshot /mnt/@&lt;br /&gt;
&lt;br /&gt;
{{ic|&#039;&#039;#&#039;&#039;}} は復元したい snapper のスナップショットの番号に置き換えてください。これで {{ic|/}} は前の状態に戻ります。再起動してください。&lt;br /&gt;
&lt;br /&gt;
===スナップショットからファイルを削除===&lt;br /&gt;
&lt;br /&gt;
過去のスナップショットから特定のファイルやフォルダを削除したい場合、[https://pypi.python.org/pypi/snapperS snapperS] というスクリプトが存在します。&lt;br /&gt;
&lt;br /&gt;
スクリプトを使わずにファイルを削除したい場合、以下のコマンドを実行して [https://unix.stackexchange.com/a/149933/3587 スナップショットのサブボリュームを読み書き可能] にする必要があります:&lt;br /&gt;
&lt;br /&gt;
 # btrfs property set /path/to/.snapshots/&amp;lt;snapshot_num&amp;gt;/snapshot ro false&lt;br /&gt;
&lt;br /&gt;
{{ic|1=ro=false}} となっていることを確認:&lt;br /&gt;
&lt;br /&gt;
{{hc|# btrfs property get /path/to/.snapshots/&amp;lt;snapshot_num&amp;gt;/snapshot|2=ro=false}}&lt;br /&gt;
&lt;br /&gt;
これで {{ic|/path/to/.snapshots/&amp;lt;snapshot_num&amp;gt;/snapshot}} のファイルは通常通りに編集することが可能になります。&lt;br /&gt;
&lt;br /&gt;
=== ドライブの負担を抑える ===&lt;br /&gt;
&lt;br /&gt;
頻繁に変更が加わるファイルシステム (例えば多数のシステムアップデートが行われる {{ic|/}} など) で長期間にわたって頻繁にスナップショットを取得すると動作がかなり遅くなることがあります。以下のようにすることで遅くなるのを回避できます:&lt;br /&gt;
* スナップショットを作成する価値がない {{ic|/var/cache/pacman/pkg}}, {{ic|/var/abs}}, {{ic|/var/tmp}}, {{ic|/srv}} などのサブボリュームを[[Btrfs#サブボリュームを作成する|作成]]する。&lt;br /&gt;
* [[#自動タイムラインスナップショット|自動タイムラインスナップショット]]を使う場合に、毎時・毎日・毎周・毎年のスナップショットのデフォルト設定を変更する。&lt;br /&gt;
&lt;br /&gt;
==== updatedb ====&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、{{ic|updatedb}} は snapper によって作成された {{ic|.snapshots}} ディレクトリのインデックスも作成してしまい、スナップショットが大量にある場合、深刻な遅延が発生したりメモリが異常に消費される原因になります。以下のように設定ファイルを編集することでインデックスを作成しないように {{ic|updatedb}} を設定できます:&lt;br /&gt;
{{hc|/etc/updatedb.conf|2=PRUNENAMES = &amp;quot;.snapshots&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
=== ログファイルの保持 ===&lt;br /&gt;
&lt;br /&gt;
{{ic|/var/log}} のサブボリュームを作成して {{ic|/}} のスナップショットに含まれないようにすることを推奨します。{{ic|/}} のスナップショットを復元したときにログファイルまで前の状態に戻ってしまうことがなくなり、トラブルシューティングが楽になります。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
===Snapper のログ===&lt;br /&gt;
Snapper は全ての活動を {{ic|/var/log/snapper.log}} に書き出します。何か問題が発生しているように感じたら真っ先にこのファイルをチェックしてください。&lt;br /&gt;
&lt;br /&gt;
毎時・毎日・毎週のスナップショットに問題がある場合、おそらく cronie サービス (もしくはその他の cron デーモン) が動いていなかったのが原因だということが多くあります。&lt;br /&gt;
&lt;br /&gt;
===IO エラー===&lt;br /&gt;
スナップショットを作成しようとすると IO エラーが表示される場合、スナップショットを作成しようとしたサブボリュームと関連付けられている [https://bbs.archlinux.org/viewtopic.php?id=164404 .snapshots] ディレクトリもサブボリュームになっていることを確認してください。&lt;br /&gt;
&lt;br /&gt;
また、{{ic|.snapshots}} の所有者が root になっていない可能性もあります ({{ic|/var/log/snapper.log}} に {{ic|Btrfs.cc(openInfosDir):219 - .snapshots must have owner root}} というエラーが出力されます)。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
* [http://snapper.io/ Snapper ホームページ]&lt;br /&gt;
* [https://en.opensuse.org/Portal:Snapper openSUSE Snapper ポータル]&lt;br /&gt;
* [https://btrfs.wiki.kernel.org/index.php/Main_Page Btrfs ホームページ]&lt;br /&gt;
* [https://www.linux.com/news/enterprise/systems-management/878490-snapper-suses-ultimate-btrfs-snapshot-manager/ Linux.com: Snapper: SUSE&#039;s Ultimate Btrfs Snapshot Manager]&lt;/div&gt;</summary>
		<author><name>Funcrab</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Solo&amp;diff=23007</id>
		<title>Solo</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Solo&amp;diff=23007"/>
		<updated>2021-12-31T13:21:06Z</updated>

		<summary type="html">&lt;p&gt;Funcrab: 英語版へのリンクを追加&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Universal 2nd Factor]]&lt;br /&gt;
[[en:Solo]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|Universal 2nd Factor}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
The [https://solokeys.com/ Solo] is an open-source FIDO2 security key. This article describes how to set up and use it.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The Solo (or SoloKey) is a small [[Wikipedia:Security token|USB Security token]] supporting [[Wikipedia:Universal_2nd_Factor|Universal 2nd Factor]] (U2F) requests, thus acting as a second factor for authentication. It also supports the newer [[Wikipedia:FIDO2 Project|FIDO2]] standard allowing for passwordless logins.&lt;br /&gt;
&lt;br /&gt;
Compared to a [[YubiKey]] it offers less features but supports firmware upgrades to extend the functionality in the future. Both hardware and software are released as open source.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Special drivers are not required for the key to work. It is recommended to install the Solo software and upgrade the firmware of your Solo.&lt;br /&gt;
&lt;br /&gt;
=== Upgrading the firmware ===&lt;br /&gt;
&lt;br /&gt;
Managing your Solo, e.g. upgrading the firmware or setting a PIN, requires the {{AUR|solo-python}} package. After installing the package, first check if your key is detected.&lt;br /&gt;
&lt;br /&gt;
{{hc|$ solo ls|:: Solos&lt;br /&gt;
123456XXXXXX: SoloKeys Solo 3.0.1}}&lt;br /&gt;
&lt;br /&gt;
Then you can use {{ic|solo key update}} to perform a firmware upgrade, {{ic|solo key set-pin}} to set a PIN, and {{ic|solo key change-pin}} to change your pin.&lt;br /&gt;
&lt;br /&gt;
=== Test the Solo in your browser ===&lt;br /&gt;
&lt;br /&gt;
Visit the [https://webauthn.io/ Webauthn demo], type in a username and click on &amp;quot;Register&amp;quot;. Your Solo&#039;s LED will flash until you click it. After that, you can login to the page only using your Solo, no need for username or password.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [https://solokeys.com/ SoloKeys Official Website]&lt;br /&gt;
* [https://docs.solokeys.io/solo/ Solo Technical Documentation]&lt;/div&gt;</summary>
		<author><name>Funcrab</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Snapper&amp;diff=22911</id>
		<title>Snapper</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Snapper&amp;diff=22911"/>
		<updated>2021-12-21T11:49:37Z</updated>

		<summary type="html">&lt;p&gt;Funcrab: /* 推奨ファイルシステムレイアウト */ 英語版を反映&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ファイルシステム]]&lt;br /&gt;
[[en:Snapper]]&lt;br /&gt;
[[zh-hans:Snapper]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|Btrfs}}&lt;br /&gt;
{{Related|mkinitcpio}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[http://snapper.io Snapper] は openSUSE の Arvin Schnell によって作られた、[[Btrfs]] のサブボリュームと [[LVM]] のボリュームのスナップショットの管理を助けるツールです。スナップショットを作成して比較したり、前のスナップショットに戻したり、自動スナップショットが行えます。&lt;br /&gt;
&lt;br /&gt;
==インストール==&lt;br /&gt;
安定版は {{Pkg|snapper}} パッケージからインストールできます。開発版は {{AUR|snapper-git}} パッケージで利用可能です。&lt;br /&gt;
&lt;br /&gt;
GUI は {{AUR|snapper-gui-git}} パッケージでインストールすることができます。&lt;br /&gt;
&lt;br /&gt;
==新しい設定の作成==&lt;br /&gt;
&lt;br /&gt;
Btrfs サブボリュームで Snapper の設定を作成する前に、あらかじめサブボリュームが作成されている必要があります。サブボリュームが存在しない場合、Snapper の設定をするまえに[[Btrfs#サブボリュームを作成する|サブボリュームを作成]]してください。&lt;br /&gt;
&lt;br /&gt;
Btrfs サブボリュームが {{ic|&#039;&#039;/path/to/subvolume&#039;&#039;}} に存在していて、{{ic|&#039;&#039;config&#039;&#039;}} という名前で新しく Snapper の設定を作るには:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; create-config &#039;&#039;/path/to/subvolume&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
上記のコマンドを実行すると:&lt;br /&gt;
*{{ic|/etc/snapper/config-templates}} にあるデフォルトのテンプレートに基づいて {{ic|/etc/snapper/configs/&#039;&#039;config&#039;&#039;}} に設定ファイルが作成されます。&lt;br /&gt;
*{{ic|&#039;&#039;/path/to/subvolume&#039;&#039;/.snapshots}} にサブボリュームが作成されてスナップショットが保存されます。スナップショットのパスは {{ic|&#039;&#039;/path/to/subvolume&#039;&#039;/.snapshots/&#039;&#039;#&#039;&#039;/snapshot}} になります ({{ic|&#039;&#039;#&#039;&#039;}} はスナップショット番号です)。&lt;br /&gt;
*{{ic|/etc/conf.d/snapper}} の {{ic|SNAPPER_CONFIGS}} に {{ic|&#039;&#039;config&#039;&#039;}} が追加されます。&lt;br /&gt;
&lt;br /&gt;
例えば、{{ic|/}} にマウントされたサブボリュームの設定ファイルを作成する場合:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c root create-config /&lt;br /&gt;
&lt;br /&gt;
この時点で、設定は有効になっています。[[cron]] デーモンが動作している場合、snapper は[[#自動タイムラインスナップショット|自動タイムラインスナップショット]]を作成します。[[cron]] デーモンを使っていない場合、systemd サービスとタイマーを使用する必要があります。[[#有効化/無効化]]を見てください。&lt;br /&gt;
&lt;br /&gt;
設定について詳しくは {{ic|snapper-configs}} の [[man ページ]]を参照。&lt;br /&gt;
&lt;br /&gt;
== スナップショットの作成 ==&lt;br /&gt;
&lt;br /&gt;
=== 自動タイムラインスナップショット ===&lt;br /&gt;
&lt;br /&gt;
Snapper では毎時・毎日・毎月・毎年に保存するスナップショットの数を設定できるスナップショットタイムラインを作成することができます。デフォルトでは1時間毎にスナップショットが取得されます。そして1日1回、タイムラインのクリーンアップアルゴリズムによって&amp;quot;古くなって要らなくなった&amp;quot;スナップショットを削除します。&lt;br /&gt;
&lt;br /&gt;
==== 有効化/無効化 ====&lt;br /&gt;
&lt;br /&gt;
[[cron]] デーモンが動作している場合、自動タイムラインスナップショットは自動的に起動します。無効化するには、サブボリュームに存在する設定ファイルを編集して以下を設定してください:&lt;br /&gt;
&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;TIMELINE_CREATE=&amp;quot;no&amp;quot;&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
[[cron]] デーモンを使っていない場合、パッケージに含まれている systemd ユニットを使うことができます。{{ic|snapper-timeline.timer}} を[[起動]]・[[有効化]]することで自動タイムラインスナップショットが開始されます。さらに、{{ic|snapper-cleanup.timer}} を[[起動]]・[[有効化]]すると定期的に古いスナップショットが消去されます。&lt;br /&gt;
&lt;br /&gt;
{{Note|cron デーモンと有効化された systemd ユニットがともに動作すると、重複したスナップショットが作成される結果になる場合があります。systemd ユニットを使いつつ cron 側を無効にできるかもしれない一つの手法に、[[pacman]] の [[pacman#インストールさせないファイルを設定|NoExtract]] および [[pacman#アップグレードさせないファイルを設定|NoUpgrade]] を使い、snapper のパッケージの cron ファイルをインストールしない方法があります。[https://unix.stackexchange.com/questions/425570/snapper-has-recently-started-performing-duplicate-snapshots-each-hour] を見てください。}}&lt;br /&gt;
&lt;br /&gt;
==== スナップショットのリミットの設定 ====&lt;br /&gt;
&lt;br /&gt;
デフォルト設定では、毎時間10個、毎日10個、毎月10個、毎年10個のスナップショットが保存されます。{{ic|/}} など頻繁にサブボリュームに変更を加える場合は、この設定を変更したほうが良いでしょう。[[#ドライブの負担を抑える]]を見て下さい。&lt;br /&gt;
&lt;br /&gt;
以下は、5時間、毎日7個のスナップショットだけを維持して、毎月・毎年は保存しない設定の例です:&lt;br /&gt;
{{hc|head=/etc/snapper/configs/&#039;&#039;config&#039;&#039;|output=&lt;br /&gt;
TIMELINE_MIN_AGE=&amp;quot;1800&amp;quot;&lt;br /&gt;
TIMELINE_LIMIT_HOURLY=&amp;quot;5&amp;quot;&lt;br /&gt;
TIMELINE_LIMIT_DAILY=&amp;quot;7&amp;quot;&lt;br /&gt;
TIMELINE_LIMIT_WEEKLY=&amp;quot;0&amp;quot;&lt;br /&gt;
TIMELINE_LIMIT_MONTHLY=&amp;quot;0&amp;quot;&lt;br /&gt;
TIMELINE_LIMIT_YEARLY=&amp;quot;0&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== スナップショットとクリーンアップの頻度を変更する ====&lt;br /&gt;
&lt;br /&gt;
systemd タイマーを使っている場合、タイマーを[[Systemd#ユニットファイルの編集|編集]]してスナップショットの頻度を変更できます。&lt;br /&gt;
&lt;br /&gt;
例えば、{{ic|snapper-timeline.timer}} を編集して以下のようにすることで5分毎にスナップショットが作成されます:&lt;br /&gt;
&lt;br /&gt;
 [Timer]&lt;br /&gt;
 OnCalendar=&lt;br /&gt;
 OnCalendar=*:0/5&lt;br /&gt;
&lt;br /&gt;
{{Note|設定パラメータ {{ic|TIMELINE_LIMIT_HOURLY}} は上記の設定に関連付けられています。上の例では5分毎にスナップショットが作成されるようになります。}}&lt;br /&gt;
&lt;br /&gt;
{{ic|snapper-cleanup.timer}} を編集するときは {{ic|OnUnitActiveSec}} を変更してください。1時間毎に古いスナップショットを消去するには、以下を追加:&lt;br /&gt;
&lt;br /&gt;
 [Timer]&lt;br /&gt;
 OnUnitActiveSec=1h&lt;br /&gt;
&lt;br /&gt;
詳しくは [[Systemd/タイマー]]や [[Systemd#ドロップインファイル]]を参照。&lt;br /&gt;
&lt;br /&gt;
=== 手動スナップショット ===&lt;br /&gt;
&lt;br /&gt;
==== シンプルなスナップショット ====&lt;br /&gt;
&lt;br /&gt;
デフォルトでは Snapper は他のスナップショットと特別な関係を持たない、単純なスナップショットを作成します。&lt;br /&gt;
&lt;br /&gt;
手動でサブボリュームのスナップショットを作成するには、以下のコマンドを実行:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; create --description &#039;&#039;desc&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
上記のコマンドはクリーンアップアルゴリズムを使用しないため、スナップショットは明示的に[[#スナップショットの削除|削除]]するまでずっと残り続けます。&lt;br /&gt;
&lt;br /&gt;
クリーンアップアルゴリズムを設定するには {{ic|create}} の後に {{ic|-c}} フラグを使用して {{ic|number}}, {{ic|timeline}}, {{ic|pre}}, {{ic|post}} のどれかを選択してください。{{ic|number}} は設定ファイルで指定された番号にあわせて定期的にスナップショットを削除します。例えば、{{ic|number}} アルゴリズムを使用するスナップショットを作成するには:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; create -c number&lt;br /&gt;
&lt;br /&gt;
{{ic|timeline}} スナップショットについては[[#自動タイムラインスナップショット|自動タイムラインスナップショット]]を、{{ic|pre}} と {{ic|post}} については[[#事前事後のスナップショット|事前事後のスナップショット]]を見てください。&lt;br /&gt;
&lt;br /&gt;
==== 事前事後のスナップショット ====&lt;br /&gt;
&lt;br /&gt;
シンプルなスナップショットだけでなく、Snapper では事前事後のスナップショットを作成できます。事前 (&#039;&#039;pre&#039;&#039;) スナップショットには必ず対応する事後 (&#039;&#039;post&#039;&#039;) スナップショットが存在します。このペアによってシステムに変更を加える前後のスナップショットを作成することができます。&lt;br /&gt;
&lt;br /&gt;
事前事後のスナップショットを作成するには、まず事前スナップショットを作成:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; create -t pre -p&lt;br /&gt;
&lt;br /&gt;
上記のコマンドでスナップショット番号が出力されます。&lt;br /&gt;
&lt;br /&gt;
それからシステムに何らかの変更を加えます (例えば新しいプログラムをインストールしたり、ソフトウェアをアップグレードするなど)。&lt;br /&gt;
&lt;br /&gt;
次に事後のスナップショットを作成:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; create -t post --pre-number &#039;&#039;#&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|&#039;&#039;#&#039;&#039;}} は事前スナップショットの番号に置き換えてください。&lt;br /&gt;
&lt;br /&gt;
{{ic|create}} に {{ic|--command}} フラグを指定して、コマンドをラップすることもできます:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; create --command &#039;&#039;cmd&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|&#039;&#039;cmd&#039;&#039;}} は事前事後のスナップショットを作成する間に実行したいコマンドに置き換えてください。&lt;br /&gt;
&lt;br /&gt;
[[#pacman のトランザクションをスナップショットで記録|pacman のトランザクションをスナップショットで記録]]も見てください。&lt;br /&gt;
&lt;br /&gt;
=== 起動時にスナップショットを作成 ===&lt;br /&gt;
&lt;br /&gt;
snapper で {{ic|root}} 設定のスナップショットを作成するには {{ic|snapper-boot.timer}} を[[有効化]]してください。&lt;br /&gt;
&lt;br /&gt;
== スナップショットの確認 ==&lt;br /&gt;
&lt;br /&gt;
作成されたスナップショットを確認するには:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; list&lt;br /&gt;
&lt;br /&gt;
== 設定の確認 ==&lt;br /&gt;
&lt;br /&gt;
全ての[[#新しい設定の作成|設定]]を確認するには:&lt;br /&gt;
&lt;br /&gt;
 # snapper list-configs&lt;br /&gt;
&lt;br /&gt;
== スナップショットの削除 ==&lt;br /&gt;
&lt;br /&gt;
スナップショット番号 {{ic|&#039;&#039;#&#039;&#039;}} を削除するには:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; delete &#039;&#039;#&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
一度に複数のスナップショットを削除できます。例えば、root 設定の65と70のスナップショットを削除するには:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c root delete 65 70&lt;br /&gt;
&lt;br /&gt;
{{Note|事前スナップショットを削除した場合、事後スナップショットも一緒に削除してください。逆も然りです。}}&lt;br /&gt;
&lt;br /&gt;
==root 以外のユーザーでアクセス==&lt;br /&gt;
設定は root ユーザーによって作成され、デフォルトでは、root だけが設定を確認したり変更できます。&lt;br /&gt;
&lt;br /&gt;
特定のユーザーからもスナップショットを確認できるようにしたいときは、{{ic|/etc/snapper/configs/&#039;&#039;config&#039;&#039;}} ファイルの {{ic|ALLOW_USERS}} の値を変更してください。そうすれば通常ユーザーでも {{ic|snapper -c &#039;&#039;config&#039;&#039;list}} を実行できるようになります。&lt;br /&gt;
&lt;br /&gt;
さらに、ユーザーを使って {{ic|.snapshots}} ディレクトリを閲覧できるようにしたい、それでいてディレクトリの所有者は root のままにしておきたいということが考えられます。そのような場合、使用したいユーザーが属しているグループに、グループ所有者を変更してください。例えば {{ic|users}}　を使う場合:&lt;br /&gt;
&lt;br /&gt;
 # chmod a+rx .snapshots&lt;br /&gt;
 # chown :users .snapshots&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== pacman のトランザクションをスナップショットで記録 ===&lt;br /&gt;
&lt;br /&gt;
pacman の操作時に自動的にスナップショットを作成するためのパッケージが複数存在します:&lt;br /&gt;
&lt;br /&gt;
* {{App|pacupg|Btrfs のスナップショットでパッケージと AUR のアップグレードを記録して、簡単にロールバックできるようにするスクリプト。|https://github.com/crossroads1112/bin/tree/master/pacupg|{{AUR|pacupg}}}}&lt;br /&gt;
* {{App|snap-pac|openSUSE の YaST のように自動的に[[#事前事後のスナップショット|事前事後のスナップショット]]を作成します。[[Pacman#フック]]を使用しています。|https://github.com/wesbarnett/snap-pac|{{Pkg|snap-pac}}}}&lt;br /&gt;
* {{App|snap-pac-grub|{{pkg|snap-pac}} でスナップショットが作成された後に {{Pkg|grub-btrfs}} 用に GRUB エントリを更新します。[[Pacman#フック]]を使用します。||{{aur|snap-pac-grub}}}}&lt;br /&gt;
* {{App|snp|シェルコマンドの実行前後に snapper でスナップショットを取るラッパー。例: {{ic|$ snp pacman -Syu}}|https://gist.github.com/erikw/5229436|}}&lt;br /&gt;
&lt;br /&gt;
=== boot パーティションのバックアップ ===&lt;br /&gt;
&lt;br /&gt;
{{ic|/boot}} パーティションが btrfs ファイルシステム上に存在しない場合 (例: [[ESP]])、snapper でバックアップすることはできません。フックを使用してカーネルのアップデート時に boot パーティションを自動的に btrfs ファイルシステムにコピーさせることはできます。{{Pkg|snap-pac}} でも上手くバックアップされます。&lt;br /&gt;
{{hc|1=/usr/share/libalpm/hooks/50_bootbackup.hook|2=&lt;br /&gt;
[Trigger]&lt;br /&gt;
Operation = Upgrade&lt;br /&gt;
Operation = Install&lt;br /&gt;
Operation = Remove&lt;br /&gt;
Type = Package&lt;br /&gt;
Target = linux*&lt;br /&gt;
&lt;br /&gt;
[Action]&lt;br /&gt;
Depends = rsync&lt;br /&gt;
Description = Backing up /boot...&lt;br /&gt;
When = PreTransaction&lt;br /&gt;
Exec = /usr/bin/rsync -a --delete /boot /.bootbackup&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== 外部ドライブに差分バックアップ ===&lt;br /&gt;
&lt;br /&gt;
以下のパッケージは {{ic|btrfs send}} と {{ic|btrfs receive}} を使用して外部ドライブにバックアップを差分で送信します:&lt;br /&gt;
&lt;br /&gt;
* {{App|buttersink|Btrfs スナップショットの rsync のようなもので、スナップショットの差分だけを送信することで自動的に同期を最適化します。|https://github.com/AmesCornish/buttersink.git|{{AUR|buttersink-git}}}}&lt;br /&gt;
* {{App|snap-sync|snapper スナップショットを使用して外部ドライブにバックアップします。|https://github.com/wesbarnett/snap-sync.git|{{Pkg|snap-sync}}}}&lt;br /&gt;
* {{App|snapsync|snapper 用の同期ツール。|https://github.com/doudou/snapsync|{{AUR|ruby-snapsync}}}}&lt;br /&gt;
&lt;br /&gt;
===推奨ファイルシステムレイアウト===&lt;br /&gt;
&lt;br /&gt;
{{Note|1=以下のレイアウトは {{ic|snapper rollback}} を使用することは想定していませんが、コマンドで {{ic|/}} をリストアしたときの問題を軽減します。[https://bbs.archlinux.org/viewtopic.php?id=194491 フォーラムスレッド] を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
以下は {{ic|/}} を簡単に復元できるようにするための推奨ファイルシステムレイアウトです。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ ファイルシステムレイアウト&lt;br /&gt;
! サブボリューム !! マウントポイント&lt;br /&gt;
|-&lt;br /&gt;
| @ || /&lt;br /&gt;
|-&lt;br /&gt;
| @home || /home&lt;br /&gt;
|-&lt;br /&gt;
| @snapshots || /.snapshots&lt;br /&gt;
|-&lt;br /&gt;
| @var_log || /var/log&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 subvolid=5&lt;br /&gt;
   |&lt;br /&gt;
   ├── @ -|&lt;br /&gt;
   |     含まれるディレクトリ:&lt;br /&gt;
   |       ├── /usr&lt;br /&gt;
   |       ├── /bin&lt;br /&gt;
   |       ├── /.snapshots&lt;br /&gt;
   |       ├── ...&lt;br /&gt;
   |&lt;br /&gt;
   ├── @home&lt;br /&gt;
   ├── @snapshots&lt;br /&gt;
   ├── @var_log&lt;br /&gt;
   └── @...&lt;br /&gt;
&lt;br /&gt;
{{ic|/.snapshots}} は {{ic|@snapshots}} のマウントポイントです。{{ic|@...}} は {{ic|/}} にマウントするサブボリューム ({{ic|@}}) とは別に保存したいサブボリュームになります。{{ic|/}} のスナップショットを作成するとき、他のサブボリュームはスナップショットに含まれません。ただし、別の snapper 設定を作成することで他のサブボリュームもスナップショットで記録できます。システムを {{ic|/}} のスナップショットの時点まで戻したいと思ったときに、他のサブボリュームには影響が及びません。&lt;br /&gt;
&lt;br /&gt;
例えば、{{ic|/}} をスナップショット時に戻したいが {{ic|/home}} は最新の状態のままにしたい場合、サブボリュームを作成して {{ic|/home}} にマウントしてください。詳しくは [[Btrfs#サブボリュームをマウントする]]を参照。&lt;br /&gt;
&lt;br /&gt;
上記のレイアウトは snapper ユーティリティで定期的に {{ic|/}} のスナップショットが作成できるのと同時に、起動できなくなった場合に Arch のライブ CD から {{ic|/}} を簡単に復元することができます。&lt;br /&gt;
&lt;br /&gt;
その場合、初期設定をしたら snapper に特別な設定をする必要はありません。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* サブボリュームが {{ic|@}} 下に入れ子になっていても、{{ic|/}} のスナップショットには含まれません。{{ic|/}} にマウントしているサブボリュームのスナップショットを保存したい場合は snapper でサブボリュームの設定を行ってください。&lt;br /&gt;
* [[Btrfs#スワップファイル|Btrfs の制限]]により、スナップショットされたボリュームは[[スワップ#スワップファイル|スワップファイル]]を含むことができません。スワップファイルを別のサブボリュームに置くか、[[スワップ#スワップパーティション|スワップパーティション]]を作成してください。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
====snapper の設定とマウントポイント====&lt;br /&gt;
&lt;br /&gt;
{{ic|/.snapshots}} がマウントされていないこと、フォルダとして存在しないことを確認してください:&lt;br /&gt;
 # umount /.snapshots&lt;br /&gt;
 # rm -r /.snapshots&lt;br /&gt;
&lt;br /&gt;
それから {{ic|/}} の[[#新しい設定の作成|新しい設定を作成]]します。&lt;br /&gt;
&lt;br /&gt;
そして {{ic|@snapshots}} を {{ic|/.snapshots}} に[[マウント]]してください。例えば、ファイルシステムが {{ic|/dev/sda1}} に存在する場合:&lt;br /&gt;
 # mount -o subvol=@snapshots /dev/sda1 /.snapshots&lt;br /&gt;
マウントを永続化させるには、[[fstab]] にエントリを作成します。&lt;br /&gt;
&lt;br /&gt;
もしくは fstab エントリが既に存在する場合、スナップショットのサブボリュームを再マウントします:&lt;br /&gt;
 # mount -a&lt;br /&gt;
&lt;br /&gt;
フォルダには {{ic|750}} の[[ファイルのパーミッションと属性#数字を使う方法|パーミッション]]を設定してください。&lt;br /&gt;
&lt;br /&gt;
snapper が作成するスナップショットは全て {{ic|@}} サブボリュームの外に保存されるため、snapper のスナップショットを削除しなくても {{ic|@}} を簡単に置き換えることができます。&lt;br /&gt;
&lt;br /&gt;
===={{ic|/}} を {{ic|@}} のスナップショットに復元 ====&lt;br /&gt;
&lt;br /&gt;
snapper のスナップショットを使って {{ic|/}} をリストアしたくなったら、まずは Arch Linux のライブ USB/CD を起動します。&lt;br /&gt;
&lt;br /&gt;
トップレベルのサブボリューム (subvolid=5) を[[マウント]]してください。{{ic|subvolid}} マウントフラグは省略します。&lt;br /&gt;
&lt;br /&gt;
{{ic|/mnt/@snapshots/*/info.xml}} から復元したいスナップショットを確認します:&lt;br /&gt;
{{Tip|{{ic|vi}} を使ってファイルを確認できます:&lt;br /&gt;
 # vi /mnt/@snapshots/*/info.xml&lt;br /&gt;
次のファイルを見たいときは {{ic|:n}} を、最初のファイルに戻りたいときは {{ic|:rew}} を使用します。}}&lt;br /&gt;
&lt;br /&gt;
{{ic|&amp;lt;description&amp;gt;}} タグと {{ic|&amp;lt;date&amp;gt;}} タグを見て、リストアしたいスナップショットが確認できたら、{{ic|&amp;lt;num&amp;gt;}} の番号をメモしてください。&lt;br /&gt;
&lt;br /&gt;
そして {{ic|@}} を他の場所 (例: {{ic|/@.broken}}) にして現在のシステムのコピーを保存します。もしくは {{ic|btrfs subvolume delete}} で {{ic|@}} を削除します。&lt;br /&gt;
&lt;br /&gt;
読み取り専用のスナップショットから読み書き可能なスナップショットを作成:&lt;br /&gt;
&lt;br /&gt;
 # btrfs subvol snapshot /mnt/@snapshots/&#039;&#039;#&#039;&#039;/snapshot /mnt/@&lt;br /&gt;
&lt;br /&gt;
{{ic|&#039;&#039;#&#039;&#039;}} は復元したい snapper のスナップショットの番号に置き換えてください。これで {{ic|/}} は前の状態に戻ります。再起動してください。&lt;br /&gt;
&lt;br /&gt;
===スナップショットからファイルを削除===&lt;br /&gt;
&lt;br /&gt;
過去のスナップショットから特定のファイルやフォルダを削除したい場合、[https://pypi.python.org/pypi/snapperS snapperS] というスクリプトが存在します。&lt;br /&gt;
&lt;br /&gt;
スクリプトを使わずにファイルを削除したい場合、以下のコマンドを実行して [https://unix.stackexchange.com/a/149933/3587 スナップショットのサブボリュームを読み書き可能] にする必要があります:&lt;br /&gt;
&lt;br /&gt;
 # btrfs property set /path/to/.snapshots/&amp;lt;snapshot_num&amp;gt;/snapshot ro false&lt;br /&gt;
&lt;br /&gt;
{{ic|1=ro=false}} となっていることを確認:&lt;br /&gt;
&lt;br /&gt;
{{hc|# btrfs property get /path/to/.snapshots/&amp;lt;snapshot_num&amp;gt;/snapshot|2=ro=false}}&lt;br /&gt;
&lt;br /&gt;
これで {{ic|/path/to/.snapshots/&amp;lt;snapshot_num&amp;gt;/snapshot}} のファイルは通常通りに編集することが可能になります。&lt;br /&gt;
&lt;br /&gt;
=== ドライブの負担を抑える ===&lt;br /&gt;
&lt;br /&gt;
頻繁に変更が加わるファイルシステム (例えば多数のシステムアップデートが行われる {{ic|/}} など) で長期間にわたって頻繁にスナップショットを取得すると動作がかなり遅くなることがあります。以下のようにすることで遅くなるのを回避できます:&lt;br /&gt;
* スナップショットを作成する価値がない {{ic|/var/cache/pacman/pkg}}, {{ic|/var/abs}}, {{ic|/var/tmp}}, {{ic|/srv}} などのサブボリュームを[[Btrfs#サブボリュームを作成する|作成]]する。&lt;br /&gt;
* [[#自動タイムラインスナップショット|自動タイムラインスナップショット]]を使う場合に、毎時・毎日・毎周・毎年のスナップショットのデフォルト設定を変更する。&lt;br /&gt;
&lt;br /&gt;
==== updatedb ====&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、{{ic|updatedb}} は snapper によって作成された {{ic|.snapshots}} ディレクトリのインデックスも作成してしまい、スナップショットが大量にある場合、深刻な遅延が発生したりメモリが異常に消費される原因になります。以下のように設定ファイルを編集することでインデックスを作成しないように {{ic|updatedb}} を設定できます:&lt;br /&gt;
{{hc|/etc/updatedb.conf|2=PRUNENAMES = &amp;quot;.snapshots&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
=== ログファイルの保持 ===&lt;br /&gt;
&lt;br /&gt;
{{ic|/var/log}} のサブボリュームを作成して {{ic|/}} のスナップショットに含まれないようにすることを推奨します。{{ic|/}} のスナップショットを復元したときにログファイルまで前の状態に戻ってしまうことがなくなり、トラブルシューティングが楽になります。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
===Snapper のログ===&lt;br /&gt;
Snapper は全ての活動を {{ic|/var/log/snapper.log}} に書き出します。何か問題が発生しているように感じたら真っ先にこのファイルをチェックしてください。&lt;br /&gt;
&lt;br /&gt;
毎時・毎日・毎週のスナップショットに問題がある場合、おそらく cronie サービス (もしくはその他の cron デーモン) が動いていなかったのが原因だということが多くあります。&lt;br /&gt;
&lt;br /&gt;
===IO エラー===&lt;br /&gt;
スナップショットを作成しようとすると IO エラーが表示される場合、スナップショットを作成しようとしたサブボリュームと関連付けられている [https://bbs.archlinux.org/viewtopic.php?id=164404 .snapshots] ディレクトリもサブボリュームになっていることを確認してください。&lt;br /&gt;
&lt;br /&gt;
また、{{ic|.snapshots}} の所有者が root になっていない可能性もあります ({{ic|/var/log/snapper.log}} に {{ic|Btrfs.cc(openInfosDir):219 - .snapshots must have owner root}} というエラーが出力されます)。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
* [http://snapper.io/ Snapper ホームページ]&lt;br /&gt;
* [https://en.opensuse.org/Portal:Snapper openSUSE Snapper ポータル]&lt;br /&gt;
* [https://btrfs.wiki.kernel.org/index.php/Main_Page Btrfs ホームページ]&lt;br /&gt;
* [https://www.linux.com/news/enterprise/systems-management/878490-snapper-suses-ultimate-btrfs-snapshot-manager/ Linux.com: Snapper: SUSE&#039;s Ultimate Btrfs Snapshot Manager]&lt;/div&gt;</summary>
		<author><name>Funcrab</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Pacman&amp;diff=22903</id>
		<title>Pacman</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Pacman&amp;diff=22903"/>
		<updated>2021-12-20T15:04:51Z</updated>

		<summary type="html">&lt;p&gt;Funcrab: /* パッケージ・データベースに問い合わせる pacman -Fo ⇒ pacman -F コマンド表記を英語版に合わせた&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:パッケージ管理]]&lt;br /&gt;
[[Category:Arch プロジェクト]]&lt;br /&gt;
[[Category:コマンド]]&lt;br /&gt;
[[ar:Pacman]]&lt;br /&gt;
[[cs:Pacman]]&lt;br /&gt;
[[da:Pacman]]&lt;br /&gt;
[[de:Pacman]]&lt;br /&gt;
[[el:Pacman]]&lt;br /&gt;
[[en:Pacman]]&lt;br /&gt;
[[es:Pacman]]&lt;br /&gt;
[[fa:Pacman]]&lt;br /&gt;
[[fr:Pacman]]&lt;br /&gt;
[[id:Pacman]]&lt;br /&gt;
[[it:Pacman]]&lt;br /&gt;
[[ko:Pacman]]&lt;br /&gt;
[[nl:Pacman]]&lt;br /&gt;
[[pl:Pacman]]&lt;br /&gt;
[[pt:Pacman]]&lt;br /&gt;
[[ru:Pacman]]&lt;br /&gt;
[[sr:Pacman]]&lt;br /&gt;
[[sv:Pacman]]&lt;br /&gt;
[[zh-hans:Pacman]]&lt;br /&gt;
[[zh-hant:Pacman]]&lt;br /&gt;
{{Lowercase title}}&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|パッケージの作成}}&lt;br /&gt;
{{Related|パッケージのダウングレード}}&lt;br /&gt;
{{Related|Pacman のパフォーマンスの向上}}&lt;br /&gt;
{{Related|Pacman GUI フロントエンド}}&lt;br /&gt;
{{Related|Pacman 比較表}}&lt;br /&gt;
{{Related|Pacman ヒント}}&lt;br /&gt;
{{Related|FAQ#パッケージ管理}}&lt;br /&gt;
{{Related|pacman-key}}&lt;br /&gt;
{{Related|Pacnew と Pacsave ファイル}}&lt;br /&gt;
{{Related|Pacman/ローカルデータベースの復元}}&lt;br /&gt;
{{Related|アプリケーション一覧/ユーティリティ#パッケージ管理}}&lt;br /&gt;
{{Related|Arch Build System}}&lt;br /&gt;
{{Related|公式リポジトリ}}&lt;br /&gt;
{{Related|Arch User Repository}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[https://www.archlinux.org/pacman/ pacman]&#039;&#039;&#039; [[Wikipedia:ja:パッケージ管理システム|パッケージマネージャ]]は Arch Linux の主要な機能のひとつです。pacman はシンプルなバイナリのパッケージ形式と簡単に利用できる[[Arch Build System|ビルドシステム]]から成っています。pacman のゴールはパッケージ管理を楽にすることであり、[[公式リポジトリ|公式 Arch リポジトリ]]にあるパッケージや、ユーザー自身が作成したパッケージを容易に管理することができます。&lt;br /&gt;
&lt;br /&gt;
Pacman はマスターサーバーと同期してシステムを最新に保ちます。このサーバー・クライアントモデルによって、シンプルなコマンドだけで必要な依存性を解決してパッケージのダウンロード・インストールをすることができます。&lt;br /&gt;
&lt;br /&gt;
Pacman は C 言語で書かれており {{ic|.pkg.tar.xz}} パッケージフォーマットを使います。&lt;br /&gt;
&lt;br /&gt;
{{Tip|1=公式の {{Pkg|pacman}} パッケージには [[makepkg]] や &#039;&#039;&#039;vercmp&#039;&#039;&#039; などのツールが含まれています。&#039;&#039;&#039;pactree&#039;&#039;&#039; や [[#部分的なアップグレードはサポートされていません|checkupdates]] など他の有用なツールは {{Pkg|pacman-contrib}} パッケージに含まれています([https://git.archlinux.org/pacman.git/commit/?id=0c99eabd50752310f42ec808c8734a338122ec86 以前] は pacman パッケージに含まれていました)。ツールの一覧を見るには {{ic|pacman -Ql pacman pacman-contrib {{!}} grep -E &#039;bin/.+&#039;}} を実行してください。 }}&lt;br /&gt;
&lt;br /&gt;
==使い方==&lt;br /&gt;
&lt;br /&gt;
pacman で何ができるかをちゃんと学びたい場合、{{man|8|pacman}} を参照してください。以下にあるのは pacman でできることのほんの一例です。&lt;br /&gt;
&lt;br /&gt;
{{Tip|他の Linux ディストリビューションを使ったことがある場合、[[Pacman 比較表]]の記事が役に立つでしょう。}}&lt;br /&gt;
&lt;br /&gt;
===パッケージのインストール===&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* パッケージには [[PKGBUILD#optdepends|optdepends]] が設定されていることがあります。必ずインストールする必要はありませんが、インストールすることで機能が追加されます。[[#パッケージ・データベースに問い合わせる|パッケージ・データベースに問い合わせる]]ことで情報を参照することができます。&lt;br /&gt;
* 他のパッケージの依存パッケージとしてパッケージをインストールする場合 (そのパッケージ自体は必要としていない場合)、{{ic|--asdeps}} オプションを使用することを推奨します。詳しくは[[#インストール理由|インストール理由]]を参照。}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|1=パッケージのインストールをする際に、[[#パッケージのアップグレード|アップグレード]]をせずにパッケージリストを更新しないでください (つまり {{ic|pacman -Sy &#039;&#039;パッケージ名&#039;&#039;}} をしてはいけない)。これを実行すると依存関係に問題がおこる可能性があります。[[#部分的なアップグレードはサポートされていません]] や https://bbs.archlinux.org/viewtopic.php?id=89328 を参照。}}&lt;br /&gt;
&lt;br /&gt;
====特定のパッケージのインストール====&lt;br /&gt;
&lt;br /&gt;
ひとつ、あるいは複数の（依存を含む）パッケージをインストールするときは:&lt;br /&gt;
&lt;br /&gt;
 # pacman -S &#039;&#039;パッケージ名1&#039;&#039; &#039;&#039;パッケージ名2&#039;&#039; ...&lt;br /&gt;
&lt;br /&gt;
異なるリポジトリにそれぞれ同じ名前のパッケージが存在することがあります (例: [extra] リポジトリと [testing] リポジトリ)。このような場合、どちらをインストールするかを明示してください:&lt;br /&gt;
&lt;br /&gt;
 # pacman -S extra/&#039;&#039;パッケージ名&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
名前に類似パターンが存在するパッケージをインストールしたい場合 (グループ全体ではなくマッチするパッケージのみ、例: {{Grp|plasma}}):&lt;br /&gt;
&lt;br /&gt;
 # pacman -S plasma-{desktop,mediacenter,nm}&lt;br /&gt;
&lt;br /&gt;
もちろん、必要に応じて更に複雑なパターンを指定することもできます:&lt;br /&gt;
&lt;br /&gt;
 # pacman -S plasma-{workspace{,-wallpapers},pa}&lt;br /&gt;
&lt;br /&gt;
====パッケージグループのインストール====&lt;br /&gt;
&lt;br /&gt;
パッケージグループに属しているパッケージを同時にインストールすることができます。例えば:&lt;br /&gt;
&lt;br /&gt;
 # pacman -S gnome&lt;br /&gt;
&lt;br /&gt;
を実行すると {{Grp|gnome}} グループからインストールしたいパッケージを選択するように表示されます。&lt;br /&gt;
&lt;br /&gt;
パッケージグループには大量のパッケージが含まれており、しばしばインストールしたいパッケージはそのうちの少しだけということがあるかもしれません。インストールするパッケージの番号を全て入力するという方法でもよいですが、以下のようにすることで簡単にパッケージを選択することが可能です:&lt;br /&gt;
&lt;br /&gt;
 Enter a selection (default=all): 1-10 15&lt;br /&gt;
&lt;br /&gt;
以上で1番から10番までと15番のパッケージがインストールされます。&lt;br /&gt;
&lt;br /&gt;
 Enter a selection (default=all): ^5-8 ^2&lt;br /&gt;
&lt;br /&gt;
以上で5番から8番までと2番のパッケージ以外の全てのパッケージをインストールします。&lt;br /&gt;
&lt;br /&gt;
どのパッケージが gnome グループに属しているか見るには:&lt;br /&gt;
&lt;br /&gt;
 # pacman -Sg gnome&lt;br /&gt;
&lt;br /&gt;
どのようなパッケージグループがあるかは https://www.archlinux.jp/groups/ を見て下さい。&lt;br /&gt;
&lt;br /&gt;
{{Note|グループの中にインストール済みのパッケージがある場合でも、グループにあわせて再インストールされます。{{ic|--needed}} オプションを使うことで無視できます。}}&lt;br /&gt;
&lt;br /&gt;
===パッケージの削除===&lt;br /&gt;
&lt;br /&gt;
あるパッケージを、そのパッケージが必要としていたものを残したまま削除するには:&lt;br /&gt;
&lt;br /&gt;
 # pacman -R &#039;&#039;パッケージ名&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
削除したいパッケージと、そのパッケージだけが必要としている他のパッケージを一緒に削除するには:&lt;br /&gt;
&lt;br /&gt;
 # pacman -Rs &#039;&#039;パッケージ名&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
削除したいパッケージと、そのパッケージが必要としている他のパッケージ、さらに削除したいパッケージに依存しているパッケージを削除するには:&lt;br /&gt;
&lt;br /&gt;
{{Warning|この操作は再帰的です。必要なパッケージを削除してしまうこともあるので、気をつけて使って下さい。}}&lt;br /&gt;
&lt;br /&gt;
 # pacman -Rsc &#039;&#039;パッケージ名&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
他のパッケージから依存されているパッケージを、依存しているパッケージを削除しないで削除するには:&lt;br /&gt;
&lt;br /&gt;
 # pacman -Rdd &#039;&#039;パッケージ名&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、pacman は削除されたパッケージの設定ファイルを *.pacsave という拡張子をつけてバックアップします。もしこれらのファイルも一緒に削除したい場合:&lt;br /&gt;
&lt;br /&gt;
 # pacman -Rn &#039;&#039;パッケージ名&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Note|Pacman はパッケージがインストールされた後に作成された設定ファイルを削除しません。$HOME ディレクトリ下の設定ファイルなどは手動で削除してください。}}&lt;br /&gt;
&lt;br /&gt;
===パッケージのアップグレード===&lt;br /&gt;
&lt;br /&gt;
Pacman は以下のコマンドひとつでシステムの全てのパッケージのアップデートができます。システムがどれだけ新しいかによってかかる時間が変わります。このコマンドはリポジトリデータベースと同期して&#039;&#039;それから&#039;&#039;システムのパッケージをアップデートします(リポジトリにない&#039;ローカル&#039;パッケージは別です):&lt;br /&gt;
&lt;br /&gt;
 # pacman -Syu&lt;br /&gt;
&lt;br /&gt;
{{Warning|アップデートがきたらすぐにアップデートしようとする前に、Arch のローリングリリースのことを再確認してください、アップデートが思いがけない結果になることもあります。つまり、重要なプレゼンをやらなくちゃいけないからといってアップデートするのは賢いとは言えません。手の空いた時間に、何が起こっても対処できるように準備をしてからアップデートしましょう。}}&lt;br /&gt;
&lt;br /&gt;
Pacman は強力なパッケージ管理ツールですが、全ての問題を解決できるわけではありません。混乱したのなら [[The Arch Way]] を読んで下さい。ユーザーは用心深くなって、システムのメンテナンスの責任を自分でとらなくてはなりません。&#039;&#039;&#039;システムアップデートをしたときは、pacman からの表示を全て読み常識を働かせることが肝要です&#039;&#039;&#039;。[[Arch Linux の安定化#Arch のメンテナンス]]を見てください。もし（ユーザーによって作られた）設定ファイルを新しいパッケージのバージョンにあわせて変更する必要があるときは、ユーザーの設定を上書きするのを回避するために {{ic|.pacnew}} ファイルが作られます。Pacman はユーザーにそれらをマージするよう表示します。これらのファイルはユーザーが手動で修正しなくてはなりません。パッケージのアップグレードや削除のあとチェックするのが良いでしょう。詳しくは [[Pacnew と Pacsave ファイル]]を見てください。&lt;br /&gt;
&lt;br /&gt;
{{Tip|&lt;br /&gt;
* Pacman からの出力は {{ic|/var/log/pacman.log}} に記録されています。&lt;br /&gt;
* {{AUR|wat-git}} などのログビューアを使うことで pacman のログを検索できます。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
アップグレードするまえに、[https://www.archlinux.jp/ Arch Linux ホームページ] の最新ニュースをチェックしておくとよいでしょう (もしくは [https://www.archlinux.jp/feeds/ RSS フィード], [https://lists.archlinux.org/listinfo/arch-announce/ arch-announce メーリングリスト]を講読したり Twitter の [https://twitter.com/archlinux_jp @archlinux_jp] をフォローする): アップデートの際にいつもとは違うユーザーの操作が必要になった時 (pacman から与えられる指示だけでは不十分な場合など)、それに関してニュースが作られているはずです。&lt;br /&gt;
&lt;br /&gt;
もし解決できない問題にあたったときは、フォーラムを検索してみましょう。他の人も同じ問題にぶつかり、解決法が投稿されているかもしれません。&lt;br /&gt;
&lt;br /&gt;
====部分的なアップグレードはサポートされていません====&lt;br /&gt;
&lt;br /&gt;
Arch Linux はローリングリリースであり、常に新しいバージョンの[[Wikipedia:ja:ライブラリ|ライブラリ]]がリポジトリにプッシュされます。開発者や Trusted User はライブラリにあわせてリポジトリの全てのパッケージをリビルドします。ローカルでパッケージをインストールした場合 ([[Arch User Repository|AUR]] のパッケージなど)、ユーザーは必要に応じて[[Wikipedia:soname|共有ライブラリ]]にあわせてリビルドしなくてはなりません。&lt;br /&gt;
&lt;br /&gt;
つまり部分的なアップグレードは&#039;&#039;&#039;サポートされていません&#039;&#039;&#039;。{{ic|pacman -Sy package}} や、それと同等の {{ic|pacman -Sy}} からの {{ic|pacman -S package}} などをしないでください。どんなときでも、パッケージをインストールする前に ({{ic|pacman -Syu}} で) アップグレードしてください。{{ic|IgnorePkg}} や {{ic|IgnoreGroup}} を使用する場合は気をつけて扱って下さい。{{ic|pacman -Sy}} は基本的に使ってはいけないコマンドで、代わりに {{ic|pacman -Syu}} を使って下さい。&lt;br /&gt;
&lt;br /&gt;
一度、部分的なアップグレードがなされると、リンクしていたライブラリが見つからなくなってバイナリが壊れてしまいます。&#039;&#039;&#039;シンボリックリンクを張ることでこの問題を&amp;quot;解決&amp;quot;しようとしてはいけません&#039;&#039;&#039;。ライブラリは&#039;&#039;後方互換性がない&#039;&#039;ときには [[Wikipedia:soname|soname]] のバージョンアップに対応します。{{ic|pacman -Syu}} を実行しさえすれば、ミラーと同期して &#039;&#039;pacman&#039;&#039; が壊れていないかぎり問題が修正されます。&lt;br /&gt;
&lt;br /&gt;
インストールされているパッケージのアップグレードを確認したいときは {{Pkg|pacman-contrib}} パッケージに含まれている bash スクリプト &#039;&#039;&#039;checkupdates&#039;&#039;&#039; を使うことで、システムアップデートを行わずに安全に確認が行えます。&lt;br /&gt;
&lt;br /&gt;
===パッケージ・データベースに問い合わせる===&lt;br /&gt;
&lt;br /&gt;
Pacman からローカルデータベースに問い合わせるときは {{ic|-Q}} フラグを、同期データベースに問い合わせるときは {{ic|-S}} フラグを、ファイルデータベースに問い合わせるときは {{ic|-F}} フラグを使います。それぞれのフラグのサブオプションについては {{ic|pacman -Q --help}}, {{ic|pacman -S --help}}, {{ic|pacman -F --help}} を見てください。&lt;br /&gt;
&lt;br /&gt;
Pacman を使ってパッケージ名と説明の両方をデータベースの検索にかけるには:&lt;br /&gt;
&lt;br /&gt;
 $ pacman -Ss &#039;&#039;検索ワード1&#039;&#039; &#039;&#039;検索ワード2&#039;&#039; ...&lt;br /&gt;
&lt;br /&gt;
場合によって {{Ic|-s}} の組み込みの ERE (拡張正規表現) が望まない結果を生むことがあります。そのようなときは検索対象をパッケージ名だけに絞ってみてください:&lt;br /&gt;
&lt;br /&gt;
 $ pacman -Ss &#039;^vim-&#039;&lt;br /&gt;
&lt;br /&gt;
既にインストール済みのパッケージから検索するには:&lt;br /&gt;
&lt;br /&gt;
 $ pacman -Qs &#039;&#039;検索ワード1&#039;&#039; &#039;&#039;検索ワード2&#039;&#039; ...&lt;br /&gt;
&lt;br /&gt;
リモートパッケージからパッケージファイルの名前で検索するには:&lt;br /&gt;
&lt;br /&gt;
 $ pacman -Fs &#039;&#039;検索ワード1&#039;&#039; &#039;&#039;検索ワード2&#039;&#039; ...&lt;br /&gt;
&lt;br /&gt;
パッケージ名が分かっていれば、より詳しい情報を得ることができます:&lt;br /&gt;
&lt;br /&gt;
 $ pacman -Si &#039;&#039;パッケージ名&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
既にインストールしたパッケージの情報を得るには:&lt;br /&gt;
&lt;br /&gt;
 $ pacman -Qi &#039;&#039;パッケージ名&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|-i}} フラグをふたつ付けることでバックアップファイルの一覧と状態を表示できます:&lt;br /&gt;
&lt;br /&gt;
 $ pacman -Qii &#039;&#039;パッケージ名&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
あるパッケージによってインストールされたファイルの一覧を得るには:&lt;br /&gt;
&lt;br /&gt;
 $ pacman -Ql &#039;&#039;パッケージ名&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
リモートパッケージによってインストールされるファイルのリストを得るには:&lt;br /&gt;
&lt;br /&gt;
 $ pacman -Fl &#039;&#039;パッケージ名&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
あるファイルがどのパッケージによってインストールされたかを調べるには:&lt;br /&gt;
&lt;br /&gt;
 $ pacman -Qo &#039;&#039;/パス/ファイル名&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
あるファイルがどのリモートパッケージに属しているかデータベースに問い合わせるには:&lt;br /&gt;
&lt;br /&gt;
 $ pacman -F &#039;&#039;/パス/ファイル名&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
孤立した、他のパッケージに必要とされていないパッケージの一覧を得るには:&lt;br /&gt;
&lt;br /&gt;
 $ pacman -Qdt&lt;br /&gt;
&lt;br /&gt;
{{Tip|上記のコマンドを pacman の post-transaction [[#フック|フック]]に追加することで、トランザクションによってパッケージが孤立したときに通知することができます。(明示的にインストールしたのでない限り) リポジトリから消されたパッケージはローカルでは孤児になるため、パッケージがリポジトリから消されたときに知ることができます。孤児が見つからなかったときに &amp;quot;failed to execute command&amp;quot; エラーを表示しないようにするため、フックの {{ic|Exec}} では次のコマンドを使用してください: {{ic|&amp;lt;nowiki&amp;gt;/usr/bin/bash -c &amp;quot;/usr/bin/pacman -Qtd || /usr/bin/echo &#039;=&amp;gt; None found.&#039;&amp;quot;&amp;lt;/nowiki&amp;gt;}}。}}&lt;br /&gt;
&lt;br /&gt;
明示的にインストールしたパッケージで、依存関係で必要とされていないパッケージを全て表示するには:&lt;br /&gt;
&lt;br /&gt;
 $ pacman -Qet&lt;br /&gt;
&lt;br /&gt;
[[pacman ヒント]]には他の例も載っています。&lt;br /&gt;
&lt;br /&gt;
====Pactree====&lt;br /&gt;
&lt;br /&gt;
パッケージの依存のツリーを見るには:&lt;br /&gt;
&lt;br /&gt;
 $ pactree &#039;&#039;パッケージ名&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
あるパッケージを必要としている全てのパッケージを見るには [[pkgtools]] の {{ic|whoneeds}} を使います:&lt;br /&gt;
&lt;br /&gt;
 $ whoneeds &#039;&#039;パッケージ名&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
もしくは &#039;&#039;pactree&#039;&#039; のリバースフラグを使って:&lt;br /&gt;
&lt;br /&gt;
 $ pactree -r &#039;&#039;package_name&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====データベースの構造====&lt;br /&gt;
&lt;br /&gt;
通常 pacman のデータベースは {{ic|/var/lib/pacman/sync}} に配置され、{{ic|/etc/pacman.conf}} で指定したリポジトリのデータベースファイルがそこに作成されます。データベースファイルは gzip で圧縮された tar アーカイブになっており、パッケージごとにディレクトリが含まれています。例えば {{Pkg|which}} パッケージの場合:&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
% tree which-2.20-6 &lt;br /&gt;
which-2.20-6&amp;lt;nowiki&amp;gt;&lt;br /&gt;
|-- depends&lt;br /&gt;
`-- desc&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|depends}} ファイルにはパッケージが依存するパッケージのリストが記載されており、{{ic|desc}} にはファイルサイズや MD5 ハッシュなどのパッケージの情報が入っています。&lt;br /&gt;
&lt;br /&gt;
===パッケージキャッシュの削除===&lt;br /&gt;
&lt;br /&gt;
pacman はダウンロードしたパッケージを {{ic|/var/cache/pacman/pkg/}} に保存し、古いバージョンやアンインストールされたパッケージを自動では削除しません。従ってこのフォルダのサイズをあまりにも大きくしすぎないために定期的・計画的にこのフォルダを掃除する必要があります。&lt;br /&gt;
&lt;br /&gt;
現在インストールされていないパッケージキャッシュを全て削除するオプションは:&lt;br /&gt;
&lt;br /&gt;
 # pacman -Sc&lt;br /&gt;
&lt;br /&gt;
{{Warning|&lt;br /&gt;
* インストールしたパッケージが安定していて、[[パッケージのダウングレード|ダウングレード]]が必要ないときだけ行なって下さい。この操作をするとキャッシュフォルダから全ての古いバージョンを削除するため、現在インストールされているバージョンのパッケージだけが残ります。将来のアップグレードでパッケージが破損したときに古いパッケージが必要になることがあり、バージョンを戻したいと思ったときに、キャッシュに古いパッケージがないと [[Arch Linux Archive]] などから古いパッケージを取得するしか方法がなくなってしまいます。&lt;br /&gt;
* {{ic|pacman -Scc}} でキャッシュフォルダを完全に削除することも可能ですが、これはあまり推奨されてはいません。上の欠点に加えて、必要なときにキャッシュフォルダから直接パッケージを再インストールすることができなくなってしまい、再ダウンロードが強いられるためです。よっぽどディスク容量を欲しているとき以外は使うべきではありません。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
上記の欠点のため、{{ic|-Sc}} や {{ic|-Scc}} スイッチを使う代わりに、キャッシュから削除するパッケージの数をもっと細かく制御できるスクリプトを使うのが推奨されます:&lt;br /&gt;
&lt;br /&gt;
*{{Pkg|pacman-contrib}} パッケージに入っている &#039;&#039;paccache&#039;&#039; コマンドは、デフォルトでそれぞれのパッケージのキャッシュで一番新しい3つのバージョンを残して後を全て削除します: {{bc|$ paccache -r}} ただし、この方法では &#039;&#039;paccache&#039;&#039; はパッケージがインストールされているかどうかを確認&#039;&#039;しない&#039;&#039;ため、既にアンインストールしたパッケージも保持されます。アンインストールしたパッケージのキャッシュを全て削除するには、次のコマンドを実行する必要があります: {{bc|$ paccache -ruk0}} 他のオプションは {{ic|paccache -h}} を見て下さい。&lt;br /&gt;
&lt;br /&gt;
*もしくは、{{AUR|pkgcacheclean}} をインストールして使うこともできます: {{bc|# pkgcacheclean}}&lt;br /&gt;
&lt;br /&gt;
{{Tip|1=[[#フック]]を作成して pacman の操作後に上記のコマンドを自動的に実行することができます。サンプルが [https://bbs.archlinux.org/viewtopic.php?pid=1694743#p1694743 こちらのスレッド] に載っています。}}&lt;br /&gt;
&lt;br /&gt;
===追加コマンド===&lt;br /&gt;
&lt;br /&gt;
システムのアップグレードとパッケージのインストール (ワンライナー):&lt;br /&gt;
&lt;br /&gt;
 # pacman -Syu &#039;&#039;パッケージ名1&#039;&#039; &#039;&#039;パッケージ名2&#039;&#039; ...&lt;br /&gt;
&lt;br /&gt;
インストールをしないで、パッケージをダウンロードする:&lt;br /&gt;
&lt;br /&gt;
 # pacman -Sw &#039;&#039;パッケージ名&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
リポジトリに存在しない&#039;ローカル&#039;のパッケージ (例: [[Arch User Repository|AUR]] のパッケージ) をインストール:&lt;br /&gt;
&lt;br /&gt;
 # pacman -U /パス/パッケージ名-version.pkg.tar.xz&lt;br /&gt;
&lt;br /&gt;
リポジトリにない、リモートのパッケージを URI を入力してインストール:&lt;br /&gt;
&lt;br /&gt;
 # pacman -U &amp;lt;nowiki&amp;gt;http://www.example.com/repo/example.pkg.tar.xz&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Tip|pacman のキャッシュにローカルパッケージのコピーを残したいときは、次を使って下さい:&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
# pacman -U file://path/to/package/package_name-version.pkg.tar.xz&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|{{ic|--force}} スイッチを使う時は細心の注意を払って下さい、誤って使用すると大きな問題が起こる場合があります。Arch ニュースでこのスイッチを使うように指示があってとき&#039;&#039;だけ&#039;&#039;使用することを強く推奨します。}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;pacman&#039;&#039; で何か操作を行うときは、必ず、インストールしたり削除したりするパッケージのリストが表示され、権限が要求されます。{{ic|-p}} を使うことで {{ic|-S}}, {{ic|-U}}, {{ic|-R}} などの操作を阻止することができます。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;pacman&#039;&#039; にはシステムの操作を簡単にする多数のユーティリティが入っています。それぞれのユーティリティは {{ic|--help}} スイッチを付けて呼び出すことでコマンドオプションを表示できます。&lt;br /&gt;
&lt;br /&gt;
===インストール理由===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;pacman&#039;&#039; データベースではインストールしたパッケージはインストールしたときの理由によって2つのグループに分別されます:&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;明示的にインストール&#039;&#039;&#039;: &#039;&#039;pacman&#039;&#039; の {{ic|-S}} や {{ic|-U}} コマンドによって文字通り指定されたパッケージ。&lt;br /&gt;
*&#039;&#039;&#039;依存パッケージ&#039;&#039;&#039;: &#039;&#039;pacman&#039;&#039; のインストールコマンドにパッケージの名前は指定されず、明示的にインストールした他のパッケージから[[PKGBUILD#依存関係|必要]]とされたためにインストールされたパッケージ。&lt;br /&gt;
&lt;br /&gt;
パッケージのインストール時、以下のようにすることでインストール理由を&#039;&#039;依存パッケージ&#039;&#039;に強制的に変えることができます:&lt;br /&gt;
&lt;br /&gt;
 # pacman -S --asdeps &#039;&#039;package_name&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Tip|任意の依存パッケージを {{ic|--asdeps}} でインストールすると、[[Pacman ヒント#使用していないパッケージの削除 (孤立したパッケージ)|孤立したパッケージを削除]]するときに &#039;&#039;pacman&#039;&#039; によって任意の依存パッケージも削除されるようになります。}}&lt;br /&gt;
&lt;br /&gt;
パッケージの再インストールを行っても、デフォルトではインストール理由は変更されません。&lt;br /&gt;
&lt;br /&gt;
明示的にインストールしたパッケージのリストは {{ic|pacman -Qe}} で表示でき、依存パッケージのリストは {{ic|pacman -Qd}} で表示できます。&lt;br /&gt;
&lt;br /&gt;
既にインストールしたパッケージのインストール理由を変更したい場合、以下のコマンドを実行:&lt;br /&gt;
&lt;br /&gt;
 # pacman -D --asdeps &#039;&#039;package_name&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
インストール理由を「明示的にインストール」に変えたいときは {{ic|--asexplicit}} を使ってください。&lt;br /&gt;
&lt;br /&gt;
{{Note|{{ic|pacman -Syu &#039;&#039;package_name&#039;&#039; --asdeps}} のように、アップグレードをするときに {{ic|--asdeps}} や {{ic|--asexplicit}} オプションを使用するのは推奨されません。インストールされるパッケージだけでなく、アップグレードされるパッケージのインストール理由まで変更されてしまうためです。}}&lt;br /&gt;
&lt;br /&gt;
===特定のファイルが含まれているパッケージを検索===&lt;br /&gt;
&lt;br /&gt;
ファイルデータベースを同期してください:&lt;br /&gt;
&lt;br /&gt;
 # pacman -Fy&lt;br /&gt;
&lt;br /&gt;
ファイルが含まれているパッケージを検索するには:&lt;br /&gt;
&lt;br /&gt;
 $ pacman -Fs pacman&lt;br /&gt;
 core/pacman 5.0.1-4&lt;br /&gt;
     usr/bin/pacman&lt;br /&gt;
     usr/share/bash-completion/completions/pacman&lt;br /&gt;
 extra/xscreensaver 5.36-1&lt;br /&gt;
     usr/lib/xscreensaver/pacman&lt;br /&gt;
&lt;br /&gt;
{{Tip|[[cron]] ジョブや [[systemd/タイマー|systemd タイマー]]を設定してファイルデータベースを定期的に同期させることができます。}}&lt;br /&gt;
&lt;br /&gt;
高度な使い方をしたい場合、全てのファイルと関連するパッケージのデータベースを使用する [[pkgfile]] をインストールしてください。&lt;br /&gt;
&lt;br /&gt;
==設定==&lt;br /&gt;
&lt;br /&gt;
pacman の設定は {{ic|/etc/pacman.conf}} に記述されています。ここで pacman がどのように動作するかを決めることができます。より詳しい情報は {{man|5|pacman.conf}} にあります。&lt;br /&gt;
&lt;br /&gt;
===全般設定===&lt;br /&gt;
&lt;br /&gt;
全般的な設定は {{ic|[options]}} セクションにあります。ここで設定されている項目については {{man|5|pacman.conf}} かデフォルトの {{ic|pacman.conf}} を参照してください。 &lt;br /&gt;
&lt;br /&gt;
====カラー出力====&lt;br /&gt;
&lt;br /&gt;
[[コンソールのカラー出力#pacman]] を見てください。&lt;br /&gt;
&lt;br /&gt;
==== 並列ダウンロードを有効にする ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;pacman&#039;&#039; 6.0 はパッケージを同時にダウンロードするオプションを導入しました。この機能を使用するには、{{ic|/etc/pacman.conf}} で {{ic|ParallelDownloads}} を正の整数に (例:{{ic|5}}) など設定する必要があります。このオプションが設定されていない場合、パッケージは順番にダウンロードされます。&lt;br /&gt;
&lt;br /&gt;
====アップデートする前にバージョンを比較====&lt;br /&gt;
&lt;br /&gt;
利用可能なパッケージの新旧バージョンを確認したい場合、{{ic|/etc/pacman.conf}} の &amp;quot;VerbosePkgLists&amp;quot; 行をアンコメントしてください。{{ic|pacman -Syu}} の出力が以下のようになります:&lt;br /&gt;
&lt;br /&gt;
 Package (6)             Old Version  New Version  Net Change  Download Size&lt;br /&gt;
 &lt;br /&gt;
 extra/libmariadbclient  10.1.9-4     10.1.10-1      0.03 MiB       4.35 MiB&lt;br /&gt;
 extra/libpng            1.6.19-1     1.6.20-1       0.00 MiB       0.23 MiB&lt;br /&gt;
 extra/mariadb           10.1.9-4     10.1.10-1      0.26 MiB      13.80 MiB&lt;br /&gt;
&lt;br /&gt;
====アップグレードさせないパッケージを設定====&lt;br /&gt;
&lt;br /&gt;
ある特定のパッケージをアップデートさせないようにするには:&lt;br /&gt;
&lt;br /&gt;
 IgnorePkg=linux&lt;br /&gt;
&lt;br /&gt;
複数のパッケージを記述するときはスペースで区切るか、{{ic|IgnorePkg}} 行を追加してください。&lt;br /&gt;
&lt;br /&gt;
====アップグレードさせないグループを設定====&lt;br /&gt;
&lt;br /&gt;
パッケージの場合と同様に、アップグレードさせないグループを指定することができます:&lt;br /&gt;
&lt;br /&gt;
 IgnoreGroup=gnome&lt;br /&gt;
&lt;br /&gt;
====アップグレードさせないファイルを設定====&lt;br /&gt;
&lt;br /&gt;
{{Ic|NoUpgrade}} ディレクティブで指定されたファイルはパッケージのインストール・アップグレードで変更を加えられることがなくなり、&#039;&#039;.pacnew&#039;&#039; 拡張子が付いたファイルが新しくインストールされます:&lt;br /&gt;
&lt;br /&gt;
 NoUpgrade=&#039;&#039;path/to/file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Note|パスはパッケージ内のファイルを参照します。したがって、一番最初のスラッシュは必要ありません。}}&lt;br /&gt;
&lt;br /&gt;
====インストールさせないファイルを設定====&lt;br /&gt;
&lt;br /&gt;
特定のディレクトリのインストールをさせないようにするには {{Ic|NoExtract}} リストにディレクトリを加えます。例えば、[[systemd]] ユニットのインストールを避けるには:&lt;br /&gt;
&lt;br /&gt;
 NoExtract=usr/lib/systemd/system/*&lt;br /&gt;
&lt;br /&gt;
もしくは {{AUR|localepurge}} と同じように、英語以外のローカライゼーションのインストールを止めるには:&lt;br /&gt;
&lt;br /&gt;
 NoExtract = usr/share/help/* !usr/share/help/en*&lt;br /&gt;
 NoExtract = usr/share/locale/* !usr/share/locale/en* !usr/share/locale/locale.alias&lt;br /&gt;
 NoExtract = usr/share/man/* !usr/share/man/man*&lt;br /&gt;
 NoExtract = usr/share/vim/vim74/lang/*&lt;br /&gt;
&lt;br /&gt;
後ろのルールは前のルールを上書きします。また、{{ic|!}} でルールを打ち消すことで、必要なロケールだけを維持できます。&lt;br /&gt;
&lt;br /&gt;
{{Tip|pacman 5 から、&#039;&#039;localepurge&#039;&#039; や &#039;&#039;bleachbit&#039;&#039; で消去したロケールがあるパッケージをアップデートする際に、&#039;&#039;pacman&#039;&#039; はロケールが存在しないという警告メッセージを表示します。警告を表示しないようにするには {{ic|pacman.conf}} の {{ic|CheckSpace}} オプションをコメントアウトしてください。ただし容量チェック機能は全てのパッケージで無効になります。}}&lt;br /&gt;
&lt;br /&gt;
====複数の設定ファイルを使用====&lt;br /&gt;
&lt;br /&gt;
設定ファイルが複数あって (メインの設定と [[公式リポジトリ|testing]] リポジトリを有効にした設定がある場合など)、設定ファイルのオプションを共有したい場合、設定ファイルで {{ic|Include}} オプションを宣言することができます。例:&lt;br /&gt;
&lt;br /&gt;
 Include = /path/to/common/settings&lt;br /&gt;
&lt;br /&gt;
{{ic|/path/to/common/settings}} は共有したいオプションが存在するファイルに置き換えてください。&lt;br /&gt;
&lt;br /&gt;
===フック===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;pacman&#039;&#039; は {{ic|/usr/share/libalpm/hooks/}} ディレクトリのフックを処理の前後に実行することができます。さらに {{ic|pacman.conf}} の {{ic|HookDir}} オプションでフックディレクトリを指定できます (デフォルトは {{ic|/etc/pacman.d/hooks}} です)。フックファイルの名前には必ず &#039;&#039;.hook&#039;&#039; を後ろに付ける必要があります。&lt;br /&gt;
&lt;br /&gt;
Pacman フックは様々なことに使われています。例えば、{{ic|systemd-sysusers}} と {{ic|systemd-tmpfiles}} を組み合わせてパッケージのインストール時に自動的にシステムユーザーを作成します。例として {{pkg|tomcat8}} パッケージでは {{ic|tomcat8}} という名前のシステムユーザーが必要だと指定されており特定のディレクトリの所有者がこのユーザーになるように設定されています。pacman フックの {{ic|systemd-sysusers.hook}} と {{ic|systemd-tmpfiles.hook}} は {{ic|tomcat8}} パッケージにシステムユーザーと一時ファイルが含まれていることを認識して {{ic|systemd-sysusers}} と {{ic|systemd-tmpfiles}} を実行します。&lt;br /&gt;
&lt;br /&gt;
alpm のフックに関する詳細は {{man|5|alpm-hooks}} の man ページを参照。&lt;br /&gt;
&lt;br /&gt;
===リポジトリ===&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/pacman.conf}} に書かれているように、Repositories セクションではどの[[公式リポジトリ|リポジトリ]]を使うか定義します。リポジトリはここで直接設定することもできますし、他のファイル ({{ic|/etc/pacman.d/mirrorlist}}) から読み込ませることもできます。ただしどれかひとつのファイルを使うようにしてください。ミラーの設定は[[ミラー|ここ]]を見て下さい。&lt;br /&gt;
&lt;br /&gt;
{{Warning|[testing] リポジトリを使う場合には注意が必要です。このリポジトリにあるパッケージは活発に開発が進んでいるため、更新したら動かなくなるものもあります。testing リポジトリを使う場合は、最新情報が流れている [https://lists.archlinux.org/listinfo/arch-dev-public arch-dev-public メーリングリスト] を購読するのをお薦めします。}}&lt;br /&gt;
&lt;br /&gt;
===パッケージのセキュリティ===&lt;br /&gt;
&lt;br /&gt;
Pacman 4 は署名済みのパッケージをサポートしていて、パッケージにセキュリティレイヤーを加えています。{{ic|SigLevel}} を使うことでリポジトリ毎に（もしくは全体的に）セキュリティレベルを設定することが可能です。デフォルトの設定では {{ic|SigLevel &amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt; Required DatabaseOptional}} によって全てのリポジトリで全てのパッケージの署名検証が有効にされています。上述したようにリポジトリ毎に {{ic|SigLevel}} を使うことでこの設定を上書きすることができます。パッケージに署名する方法や署名の検証について詳しくは、[[pacman-key]] を見てください。&lt;br /&gt;
&lt;br /&gt;
==トラブルシューティング==&lt;br /&gt;
&lt;br /&gt;
===パッケージ XYZ にアップデートしたらシステムが壊れました===&lt;br /&gt;
&lt;br /&gt;
Arch Linux はローリングリリースで最前線のディストリビューションです。一般的な使用については安定していると判断されるとすぐにパッケージがアップデートされます。しかしながら、アップデートにユーザーの介入が必要になるときが時々あります: 設定ファイルをアップデートしたり、追加の依存パッケージを変更したりなど。&lt;br /&gt;
&lt;br /&gt;
一番重要なことは&amp;quot;やみくもに&amp;quot; Arch のシステムをアップデートしないということです。常時、アップデートされるパッケージの一覧を読みましょう。&amp;quot;重要な&amp;quot;パッケージ ({{Pkg|linux}}, {{Pkg|xorg-server}} など) がアップデートされるのか確認しましょう。もしそうであれば、https://www.archlinux.jp/ でニュースをチェックしたり最近のフォーラムの投稿を見て同じ問題が発生している人がいないか確認したりするのが大抵の場合役に立ちます。&lt;br /&gt;
&lt;br /&gt;
パッケージをアップデートすると問題が発生することを予期される・知られている場合は、パッケージ作成者はパッケージがアップデートされた時、pacman が正しいメッセージを表示しているか確認します。アップデート後に問題がおこった時は、pacman の出力をログ ({{ic|/var/log/pacman.log}}) を見て再チェックしてください。&lt;br /&gt;
&lt;br /&gt;
この段階で &#039;&#039;&#039;pacman から何も有用な情報が得られなく、https://www.archlinux.jp/ に関連するニュースもなく、フォーラムにもそのアップデートに関連する投稿がされていない時は&#039;&#039;&#039;、助けを求めるのにフォーラムや [[IRC チャンネル|IRC]] を使ったり問題のあるパッケージを[[パッケージのダウングレード|ダウングレード]]してください。&lt;br /&gt;
&lt;br /&gt;
===パッケージ ABC のアップデートが公開されているはずなのに、pacman はシステムは最新だと言っています===&lt;br /&gt;
&lt;br /&gt;
Pacman のミラーはすぐに同期されるわけではありません。あなたのアップデートが有効になるまで 24 時間以上かかることもあります。おとなしく待つか他のミラーを使ってください。[https://www.archlinux.jp/mirrors/status/ MirrorStatus] にミラーの更新状況がのっています。&lt;br /&gt;
&lt;br /&gt;
===アップデートでこんなエラーが出ました: &amp;quot;file exists in filesystem&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
関連: &#039;&#039;Taken from https://bbs.archlinux.org/viewtopic.php?id=56373 by Misfit138.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 error: could not prepare transaction&lt;br /&gt;
 error: failed to commit transaction (conflicting files)&lt;br /&gt;
 package: /path/to/file exists in filesystem&lt;br /&gt;
 Errors occurred, no packages were upgraded.&lt;br /&gt;
&lt;br /&gt;
なぜこれが起こるというと: pacman がファイル衝突を検知して、あなたのために、故意に、ファイルを上書きしないようにしているからです。これは仕様であり、欠陥ではありません。&lt;br /&gt;
&lt;br /&gt;
この問題は簡単に解決できます。安全な方法は初めに他のパッケージがファイルを使っていないか確認する ({{ic|pacman -Qo &#039;&#039;/path/to/file&#039;&#039;}}) ことです。ファイルが他のパッケージによって使われている場合、[[バグ報告ガイドライン|バグレポートをしてください]]。他のパッケージによって使われていない場合、&#039;ファイルシステムに存在している&#039;ファイルの名前を変えてもう一度アップデートしてください。うまくいったならば、そのファイルは削除してかまいません。&lt;br /&gt;
&lt;br /&gt;
pacman やフロントエンドを使わずに手動でプログラムをインストールしたときは、プログラムとファイルを削除して pacman を使って正しく再インストールしなくてはなりません。&lt;br /&gt;
&lt;br /&gt;
全てのパッケージはインストールされるとパッケージのメタデータを含んだ {{ic|/var/lib/pacman/local/$package-$version/files}} ファイルを作ります。このファイルが壊れている（または空だったり見つからない）と、パッケージをアップデートしようしたときに &amp;quot;file exists in filesystem&amp;quot; エラーが出ます。このようなエラーは大抵一つのパッケージだけが関わっていて、手動で名前を変更してその後削除する代わりに、{{ic|pacman -S --overwrite glob パッケージ名}} で pacman に glob に一致するファイルを上書きさせることができます。&lt;br /&gt;
&lt;br /&gt;
{{Warning|一般的に --overwrite スイッチの使用は避けてください。}}&lt;br /&gt;
&lt;br /&gt;
===パッケージのインストール時にこんなエラーが出ました: &amp;quot;not found in sync db&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
まず、パッケージが本当に存在しているか確認しましょう（打ち間違いも見逃さずに！）。パッケージが存在しているのなら、あなたのパッケージリストが古くなっているかリポジトリが正しく設定されていない可能性があります。{{ic|pacman -Syy}} で全てのパッケージリストを更新してください。&lt;br /&gt;
&lt;br /&gt;
===パッケージをインストールする時にエラーが表示されます: &amp;quot;target not found&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
まず、パッケージが本当に存在するか確認してください (typo がないかよく見てください)。確かにパッケージが存在する場合、パッケージリストが古くなっていたりあなたの使っているリポジトリが正しく設定されていない可能性があります。{{ic|pacman -Syy}} を実行して強制的に全てのパッケージリストを更新してみましょう。&lt;br /&gt;
&lt;br /&gt;
また、パッケージが含まれているリポジトリがあなたのシステムで有効になっていないのかもしれません。例えば、パッケージは &#039;&#039;multilib&#039;&#039; リポジトリにあるが、&#039;&#039;multilib&#039;&#039; が {{ic|pacman.conf}} で有効になっていないということが考えられます。&lt;br /&gt;
&lt;br /&gt;
=== pacman の手動再インストール ===&lt;br /&gt;
&lt;br /&gt;
==== pacman-static を使用====&lt;br /&gt;
&lt;br /&gt;
{{AUR|pacman-static}} は pacman を静的にコンパイルしたものなので、システム上のライブラリが動作していなくても実行できます。これは、 [https://wiki.archlinux.jp/index.php/%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%83%A1%E3%83%B3%E3%83%86%E3%83%8A%E3%83%B3%E3%82%B9#.E9.83.A8.E5.88.86.E7.9A.84.E3.81.AA.E3.82.A2.E3.83.83.E3.83.97.E3.82.B0.E3.83.AC.E3.83.BC.E3.83.89.E3.81.AF.E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88.E3.81.95.E3.82.8C.E3.81.A6.E3.81.84.E3.81.BE.E3.81.9B.E3.82.93 部分的なアップグレード] が実行され、 pacman が実行できなくなった場合にも便利です。&lt;br /&gt;
&lt;br /&gt;
固定コメントと PKGBUILD は、バイナリを直接ダウンロードする方法を提供し、 pacman を再インストールしたり、部分的なアップグレードの場合にシステム全体をアップグレードしたりするために使用できます。&lt;br /&gt;
&lt;br /&gt;
==== 外部の pacman を使用する ====&lt;br /&gt;
&lt;br /&gt;
{{ic|pacman-static}} でさえ動作しない場合は、外部の pacman を使用してリカバリできます。最も簡単な方法の1つは、 [[archiso]] を使用し、 {{ic|--sysroot}}} または {{ic|--root}} を使用してマウントポイントを指定する方法です。 {{ic|--sysroot}} に必要なファイルシステムをマウントする方法については、 [[Chroot#chrootの使用]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
==== 手動で抽出する ====&lt;br /&gt;
&lt;br /&gt;
{{Warning|以下の方法でシステムをさらに再起不能にまで壊してしまう可能性があります。[[#アップグレード中に Pacman がクラッシュしました]]に書かれている方法で直らない場合の最後の手段として使ってください。}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;pacman&#039;&#039; がどうしようもなく破壊されたとしても、最新のパッケージを手動でダウンロードして適切な場所に展開することで修復が可能です。以下のような手順で行います:&lt;br /&gt;
&lt;br /&gt;
#インストールするパッケージを確認&lt;br /&gt;
#適当なミラーからパッケージをそれぞれダウンロード&lt;br /&gt;
#パッケージをルートディレクトリに展開&lt;br /&gt;
#{{ic|pacman -S --force}} でパッケージを再インストールしてパッケージデータベースを更新&lt;br /&gt;
#フルシステムアップグレードを実行&lt;br /&gt;
&lt;br /&gt;
問題なく動く Arch 環境があるのであれば、以下のコマンドで依存パッケージのリストを確認できます:&lt;br /&gt;
&lt;br /&gt;
 $ pacman -Q $(pactree -u pacman)&lt;br /&gt;
&lt;br /&gt;
問題によってはアップデートしなくてはならないパッケージは少数かもしれません。パッケージは以下のようにして展開します:&lt;br /&gt;
&lt;br /&gt;
 # tar -xvpwf &#039;&#039;package.tar.xz&#039;&#039; -C / --exclude .PKGINFO --exclude .INSTALL --exclude .MTREE --exclude .BUILDINFO&lt;br /&gt;
&lt;br /&gt;
{{ic|w}} フラグを使ってインタラクティブモードにしていることに注意してください。インタラクティブで実行しないと重要なファイルを誤って上書きしてしまう可能性があります。また、パッケージは適切な順番で展開するようにしてください。[https://bbs.archlinux.org/viewtopic.php?id=95007 こちらのフォーラムの投稿] には &#039;&#039;pacman&#039;&#039; の一部の依存パッケージだけが壊れた時の解決方法の例が載っています。&lt;br /&gt;
&lt;br /&gt;
===アップグレード中に Pacman がクラッシュしました===&lt;br /&gt;
&lt;br /&gt;
パッケージの削除・再インストール・アップグレード中に &amp;quot;database write&amp;quot; エラーを残して pacman がクラッシュする場合:&lt;br /&gt;
&lt;br /&gt;
#Arch インストールメディアを使って起動してください。&lt;br /&gt;
#root でルートファイルシステムをマウントします ({{ic|mount /dev/sdaX /mnt}})。{{ic|df -h}} で十分な空き容量があることを確認してください。&lt;br /&gt;
#proc, sys, dev ファイルシステムもマウントしてください: {{ic|mount -t proc proc /mnt/proc; mount --rbind /sys /mnt/sys; mount --rbind /dev /mnt/dev}}。&lt;br /&gt;
#システムがデフォルトのデータベースとディレクトリの場所を使っている場合、root で {{ic|1=pacman --root=/mnt --cachedir=/mnt/var/cache/pacman/pkg -Syyu}} を実行することでシステムの &amp;quot;pacman&amp;quot; データベースを更新してアップグレードすることができます。&lt;br /&gt;
#アップグレード後、アップグレードがないことと壊れているパッケージを確認してください: {{ic|find /mnt/usr/lib -size 0}}。&lt;br /&gt;
#{{ic|1=pacman --root /mnt --cachedir=/mnt/var/cache/pacman/pkg -S &#039;&#039;package&#039;&#039;}} で壊れているパッケージを再インストールしてください。&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;make install&amp;quot; を使ってソフトウェアをインストールしましたが、ファイルがどのパッケージにも属していません===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;conflicting files&amp;quot; エラーが出る場合、{{ic|--force}} スイッチをつけると pacman が手動でインストールしたソフトウェアを上書きします ({{ic|pacman -S --force}})。ファイルシステム中の&#039;&#039;所有されていない&#039;&#039;ファイルを検索するスクリプトについては [[Pacman ヒント#ファイルがどのパッケージにも所有されていないことを確認]] を見て下さい。&lt;br /&gt;
{{Warning|{{ic|--force}} スイッチを使う時は気をつけてください。間違った使用で重大な問題が発生することがあります。Arch ニュースで使うように指示が出ている時にだけ使うことを推奨します。}}&lt;br /&gt;
&lt;br /&gt;
===システムをアップグレードした後、再起動すると &amp;quot;unable to find root device&amp;quot; エラーが出て起動できません===&lt;br /&gt;
&lt;br /&gt;
おそらく initramfs がカーネルアップデート中に破損しています(不正に {{ic|--force}} オプションを使うと起こりえます)。2つの解決方法があります:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.&#039;&#039;&#039; &#039;&#039;Fallback&#039;&#039; エントリを試す:&lt;br /&gt;
&lt;br /&gt;
{{Tip|いずれの理由でエントリを削除した場合でも、ブートローダのメニューが表示された時に {{ic|Tab}} キー ([[Syslinux]] の場合) や {{ic|e}} ([[GRUB]] や [[systemd-boot]] の場合) を押して、{{ic|initramfs-linux-fallback.img}} に名前を変更して {{ic|Enter}} や {{ic|b}} を押して（ブートローダによる）新しいパラメータを使って起動できます。}}&lt;br /&gt;
&lt;br /&gt;
システムが起動したら、コンソールかターミナルから次のコマンド (持ち合わせの {{Pkg|linux}} カーネル用)を入力して initramfs イメージを再生成します:&lt;br /&gt;
&lt;br /&gt;
{{bc|# mkinitcpio -p linux}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2.&#039;&#039;&#039; それが機能しない場合は、現在の Arch リリース （CD/DVDまたはUSBスティック） から、ルートパーティションとブートパーティションをマウントします。次に、chroot します。&lt;br /&gt;
&lt;br /&gt;
 # arch-chroot /mnt&lt;br /&gt;
 # pacman -Syu mkinitcpio systemd linux&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* もしあなたが現在のリリースを持っていなかったり、他の &amp;quot;Live&amp;quot;  Linux ディストリビューションを持っていないなら、昔ながらの方法で [[chroot]] することができます。もちろん、単に {{ic|arch-chroot}} スクリプトを実行するよりも、より多くの入力が必要になります。&lt;br /&gt;
* &amp;quot;pacman&amp;quot; が {{ic|Could not resolve host}} で失敗した場合は、 [https://wiki.archlinux.jp/index.php/%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E8%A8%AD%E5%AE%9A#.E6.8E.A5.E7.B6.9A.E3.81.AE.E7.A2.BA.E8.AA.8D 接続の確認] をクリックしてください。&lt;br /&gt;
* arch-chroot または chroot 環境に入れないが、パッケージを再インストールする必要がある場合は、ルートパーティションで &amp;quot;pacman&amp;quot; コマンド {{ic|pacman--sysroot/mnt-Syu foo bar}} を使用できます。}}&lt;br /&gt;
&lt;br /&gt;
カーネル ({{Pkg|linux}} パッケージ) を再インストールすると、自動的に {{ic|mkinitcpio-p linux}} で initramfsイメージが再生成されます。これを個別に行う必要はありません。&lt;br /&gt;
&lt;br /&gt;
その後、{{ic|exit}}、{{ic|umount/mnt/{boot,} }} および {{ic|reboot}} を実行してください。&lt;br /&gt;
&lt;br /&gt;
===signature from &amp;quot;User &amp;lt;email@gmail.com&amp;gt;&amp;quot; is unknown trust===&lt;br /&gt;
&lt;br /&gt;
以下の方法を試してみてください:&lt;br /&gt;
&lt;br /&gt;
*{{ic|pacman-key --refresh-keys}} で既知のキーを更新してください。&lt;br /&gt;
*手動で {{ic|archlinux-keyring}} パッケージをアップグレードしてください: {{ic|pacman -Sy archlinux-keyring &amp;amp;&amp;amp; pacman -Su}}。&lt;br /&gt;
*[[pacman-key#全ての鍵のリセット]]に従って下さい。&lt;br /&gt;
&lt;br /&gt;
===PGP 鍵のインポートが要求される===&lt;br /&gt;
&lt;br /&gt;
古いバージョンの ISO で Arch を[[インストールガイド|インストール]]しようとすると、PGP 鍵のインポートが要求されることがあります。鍵のダウンロードに同意して先に進んでください。PGP 鍵を追加できない場合、キーリングを更新したり {{Pkg|archlinux-keyring}} をアップグレードしてください ([[#signature from &amp;quot;User &amp;lt;email@gmail.com&amp;gt;&amp;quot; is unknown trust|上]]を参照)。&lt;br /&gt;
&lt;br /&gt;
===エラー: key &amp;quot;0123456789ABCDEF&amp;quot; could not be looked up remotely===&lt;br /&gt;
&lt;br /&gt;
パッケージが {{Pkg|archlinux-keyring}} に最近追加された新しい鍵で署名されている場合、アップグレード時にはまだローカルで鍵が利用できない状態になっていることがあります (鶏が先か、卵が先か)。インストール済みの {{Pkg|archlinux-keyring}} に鍵が含まれていない場合、Pacman は鍵サーバーを確認しにいきますが、プロキシやファイアウォールを使っているなどの理由でエラーになることがあります。[[#signature from &amp;quot;User &amp;lt;email@gmail.com&amp;gt;&amp;quot; is unknown trust|上]]で書かれているように {{Pkg|archlinux-keyring}} を先にアップグレードしてください。&lt;br /&gt;
&lt;br /&gt;
===signature from &amp;quot;User &amp;lt;email@archlinux.org&amp;gt;&amp;quot; is invalid===&lt;br /&gt;
&lt;br /&gt;
システム[[時刻]]が間違っていると、署名鍵が期限切れとして扱われたりパッケージの署名チェックが失敗して、以下のようなエラーが表示されます:&lt;br /&gt;
&lt;br /&gt;
 error: &#039;&#039;package&#039;&#039;: signature from &amp;quot;User &amp;lt;email@archlinux.org&amp;gt;&amp;quot; is invalid&lt;br /&gt;
 error: failed to commit transaction (invalid or corrupted package (PGP signature))&lt;br /&gt;
 Errors occured, no packages were upgraded.&lt;br /&gt;
&lt;br /&gt;
パッケージをインストール・アップグレードする前に　{{ic|ntpd -qg}} と {{ic|hwclock -w}} を root で実行して下さい。&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;failed to commit transaction (invalid or corrupted package)&amp;quot; エラー===&lt;br /&gt;
&lt;br /&gt;
{{ic|/var/cache/pacman/pkg}} にある {{ic|*.part}} ファイル (部分ダウンロードファイル) を探して、ファイルを削除して下さい ({{ic|pacman.conf}} で {{ic|XferCommand}} を設定しているとこのエラーがよく起こります)。&lt;br /&gt;
&lt;br /&gt;
 # find /var/cache/pacman/pkg/ -iname &amp;quot;*.part&amp;quot; -exec rm {} \;&lt;br /&gt;
&lt;br /&gt;
===pacman を使うたびにエラーが表示されます: &#039;warning: current locale is invalid; using default &amp;quot;C&amp;quot; locale&#039;===&lt;br /&gt;
&lt;br /&gt;
そのエラーは、あなたの locale が正しく設定されていないと言っています。[[ロケール]]を見て下さい。&lt;br /&gt;
&lt;br /&gt;
===pacman でプロキシ設定を使うにはどうすればいいですか？===&lt;br /&gt;
&lt;br /&gt;
環境変数 ({{ic|$http_proxy}}, {{ic|$ftp_proxy}} など) を使って下さい。[[sudo]] と一緒に Pacman を使う時は、[[sudo#環境変数|環境変数を pacman に渡すように]] sudo を設定してください。&lt;br /&gt;
&lt;br /&gt;
===明示的にインストールしたか依存でインストールしたかの情報を保ちながら、全てのパッケージを再インストールするにはどうすればいいですか===&lt;br /&gt;
&lt;br /&gt;
ネイティブのパッケージを全て再インストールするには: {{ic|&amp;lt;nowiki&amp;gt;pacman -Qnq | pacman -S -&amp;lt;/nowiki&amp;gt;}} ({{ic|-S}} オプションはデフォルトでインストールの理由を維持します)。&lt;br /&gt;
&lt;br /&gt;
次に自分で作成したパッケージを全て再インストールしてください、{{ic|pacman -Qmq}} でパッケージを確認できます。&lt;br /&gt;
&lt;br /&gt;
===パッケージのダウンロード時にフリーズする===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;pacman&#039;&#039; がリポジトリのアップデートや同期をできないというネットワークの問題がいくつか報告されています [https://bbs.archlinux.org/viewtopic.php?id&amp;amp;#61;68944] [https://bbs.archlinux.org/viewtopic.php?id&amp;amp;#61;65728]。Arch Linux のインストール時にこの問題が発生する場合、&#039;&#039;pacman&#039;&#039; のデフォルトのファイルダウンローダを置き換えることで解決します (詳しくは [[pacman のパフォーマンスの向上]]を参照)。[[VirtualBox]] で Arch Linux をゲスト OS としてインストールする時にこの問題が起こる場合、マシンのプロパティで &#039;&#039;NAT&#039;&#039; の代わりに &#039;&#039;Host interface&#039;&#039; を使うことで解決します。&lt;br /&gt;
&lt;br /&gt;
===Failed retrieving file &#039;core.db&#039; from mirror===&lt;br /&gt;
&lt;br /&gt;
[[ミラー]]を正しく設定しているのにこのエラーメッセージが表示される場合、[[Resolv.conf|ネームサーバ]]を設定してみてください。&lt;br /&gt;
&lt;br /&gt;
==参照==&lt;br /&gt;
&lt;br /&gt;
*[https://www.archlinux.org/pacman/ Pacman ホームページ]&lt;br /&gt;
*{{man|3|libalpm}}&lt;br /&gt;
*{{man|8|pacman}}&lt;br /&gt;
*{{man|5|pacman.conf}}&lt;br /&gt;
*{{man|8|repo-add}}&lt;/div&gt;</summary>
		<author><name>Funcrab</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Snapper&amp;diff=22813</id>
		<title>Snapper</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Snapper&amp;diff=22813"/>
		<updated>2021-12-16T12:49:25Z</updated>

		<summary type="html">&lt;p&gt;Funcrab: /* 推奨ファイルシステムレイアウト */ ノート にBtrfsの制限「スナップショットにはスワップファイルを含むことができない」を記載&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ファイルシステム]]&lt;br /&gt;
[[en:Snapper]]&lt;br /&gt;
[[zh-hans:Snapper]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|Btrfs}}&lt;br /&gt;
{{Related|mkinitcpio}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[http://snapper.io Snapper] は openSUSE の Arvin Schnell によって作られた、[[Btrfs]] のサブボリュームと [[LVM]] のボリュームのスナップショットの管理を助けるツールです。スナップショットを作成して比較したり、前のスナップショットに戻したり、自動スナップショットが行えます。&lt;br /&gt;
&lt;br /&gt;
==インストール==&lt;br /&gt;
安定版は {{Pkg|snapper}} パッケージからインストールできます。開発版は {{AUR|snapper-git}} パッケージで利用可能です。&lt;br /&gt;
&lt;br /&gt;
GUI は {{AUR|snapper-gui-git}} パッケージでインストールすることができます。&lt;br /&gt;
&lt;br /&gt;
==新しい設定の作成==&lt;br /&gt;
&lt;br /&gt;
Btrfs サブボリュームで Snapper の設定を作成する前に、あらかじめサブボリュームが作成されている必要があります。サブボリュームが存在しない場合、Snapper の設定をするまえに[[Btrfs#サブボリュームを作成する|サブボリュームを作成]]してください。&lt;br /&gt;
&lt;br /&gt;
Btrfs サブボリュームが {{ic|&#039;&#039;/path/to/subvolume&#039;&#039;}} に存在していて、{{ic|&#039;&#039;config&#039;&#039;}} という名前で新しく Snapper の設定を作るには:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; create-config &#039;&#039;/path/to/subvolume&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
上記のコマンドを実行すると:&lt;br /&gt;
*{{ic|/etc/snapper/config-templates}} にあるデフォルトのテンプレートに基づいて {{ic|/etc/snapper/configs/&#039;&#039;config&#039;&#039;}} に設定ファイルが作成されます。&lt;br /&gt;
*{{ic|&#039;&#039;/path/to/subvolume&#039;&#039;/.snapshots}} にサブボリュームが作成されてスナップショットが保存されます。スナップショットのパスは {{ic|&#039;&#039;/path/to/subvolume&#039;&#039;/.snapshots/&#039;&#039;#&#039;&#039;/snapshot}} になります ({{ic|&#039;&#039;#&#039;&#039;}} はスナップショット番号です)。&lt;br /&gt;
*{{ic|/etc/conf.d/snapper}} の {{ic|SNAPPER_CONFIGS}} に {{ic|&#039;&#039;config&#039;&#039;}} が追加されます。&lt;br /&gt;
&lt;br /&gt;
例えば、{{ic|/}} にマウントされたサブボリュームの設定ファイルを作成する場合:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c root create-config /&lt;br /&gt;
&lt;br /&gt;
この時点で、設定は有効になっています。[[cron]] デーモンが動作している場合、snapper は[[#自動タイムラインスナップショット|自動タイムラインスナップショット]]を作成します。[[cron]] デーモンを使っていない場合、systemd サービスとタイマーを使用する必要があります。[[#有効化/無効化]]を見てください。&lt;br /&gt;
&lt;br /&gt;
設定について詳しくは {{ic|snapper-configs}} の [[man ページ]]を参照。&lt;br /&gt;
&lt;br /&gt;
== スナップショットの作成 ==&lt;br /&gt;
&lt;br /&gt;
=== 自動タイムラインスナップショット ===&lt;br /&gt;
&lt;br /&gt;
Snapper では毎時・毎日・毎月・毎年に保存するスナップショットの数を設定できるスナップショットタイムラインを作成することができます。デフォルトでは1時間毎にスナップショットが取得されます。そして1日1回、タイムラインのクリーンアップアルゴリズムによって&amp;quot;古くなって要らなくなった&amp;quot;スナップショットを削除します。&lt;br /&gt;
&lt;br /&gt;
==== 有効化/無効化 ====&lt;br /&gt;
&lt;br /&gt;
[[cron]] デーモンが動作している場合、自動タイムラインスナップショットは自動的に起動します。無効化するには、サブボリュームに存在する設定ファイルを編集して以下を設定してください:&lt;br /&gt;
&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;TIMELINE_CREATE=&amp;quot;no&amp;quot;&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
[[cron]] デーモンを使っていない場合、パッケージに含まれている systemd ユニットを使うことができます。{{ic|snapper-timeline.timer}} を[[起動]]・[[有効化]]することで自動タイムラインスナップショットが開始されます。さらに、{{ic|snapper-cleanup.timer}} を[[起動]]・[[有効化]]すると定期的に古いスナップショットが消去されます。&lt;br /&gt;
&lt;br /&gt;
{{Note|cron デーモンと有効化された systemd ユニットがともに動作すると、重複したスナップショットが作成される結果になる場合があります。systemd ユニットを使いつつ cron 側を無効にできるかもしれない一つの手法に、[[pacman]] の [[pacman#インストールさせないファイルを設定|NoExtract]] および [[pacman#アップグレードさせないファイルを設定|NoUpgrade]] を使い、snapper のパッケージの cron ファイルをインストールしない方法があります。[https://unix.stackexchange.com/questions/425570/snapper-has-recently-started-performing-duplicate-snapshots-each-hour] を見てください。}}&lt;br /&gt;
&lt;br /&gt;
==== スナップショットのリミットの設定 ====&lt;br /&gt;
&lt;br /&gt;
デフォルト設定では、毎時間10個、毎日10個、毎月10個、毎年10個のスナップショットが保存されます。{{ic|/}} など頻繁にサブボリュームに変更を加える場合は、この設定を変更したほうが良いでしょう。[[#ドライブの負担を抑える]]を見て下さい。&lt;br /&gt;
&lt;br /&gt;
以下は、5時間、毎日7個のスナップショットだけを維持して、毎月・毎年は保存しない設定の例です:&lt;br /&gt;
{{hc|head=/etc/snapper/configs/&#039;&#039;config&#039;&#039;|output=&lt;br /&gt;
TIMELINE_MIN_AGE=&amp;quot;1800&amp;quot;&lt;br /&gt;
TIMELINE_LIMIT_HOURLY=&amp;quot;5&amp;quot;&lt;br /&gt;
TIMELINE_LIMIT_DAILY=&amp;quot;7&amp;quot;&lt;br /&gt;
TIMELINE_LIMIT_WEEKLY=&amp;quot;0&amp;quot;&lt;br /&gt;
TIMELINE_LIMIT_MONTHLY=&amp;quot;0&amp;quot;&lt;br /&gt;
TIMELINE_LIMIT_YEARLY=&amp;quot;0&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== スナップショットとクリーンアップの頻度を変更する ====&lt;br /&gt;
&lt;br /&gt;
systemd タイマーを使っている場合、タイマーを[[Systemd#ユニットファイルの編集|編集]]してスナップショットの頻度を変更できます。&lt;br /&gt;
&lt;br /&gt;
例えば、{{ic|snapper-timeline.timer}} を編集して以下のようにすることで5分毎にスナップショットが作成されます:&lt;br /&gt;
&lt;br /&gt;
 [Timer]&lt;br /&gt;
 OnCalendar=&lt;br /&gt;
 OnCalendar=*:0/5&lt;br /&gt;
&lt;br /&gt;
{{Note|設定パラメータ {{ic|TIMELINE_LIMIT_HOURLY}} は上記の設定に関連付けられています。上の例では5分毎にスナップショットが作成されるようになります。}}&lt;br /&gt;
&lt;br /&gt;
{{ic|snapper-cleanup.timer}} を編集するときは {{ic|OnUnitActiveSec}} を変更してください。1時間毎に古いスナップショットを消去するには、以下を追加:&lt;br /&gt;
&lt;br /&gt;
 [Timer]&lt;br /&gt;
 OnUnitActiveSec=1h&lt;br /&gt;
&lt;br /&gt;
詳しくは [[Systemd/タイマー]]や [[Systemd#ドロップインファイル]]を参照。&lt;br /&gt;
&lt;br /&gt;
=== 手動スナップショット ===&lt;br /&gt;
&lt;br /&gt;
==== シンプルなスナップショット ====&lt;br /&gt;
&lt;br /&gt;
デフォルトでは Snapper は他のスナップショットと特別な関係を持たない、単純なスナップショットを作成します。&lt;br /&gt;
&lt;br /&gt;
手動でサブボリュームのスナップショットを作成するには、以下のコマンドを実行:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; create --description &#039;&#039;desc&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
上記のコマンドはクリーンアップアルゴリズムを使用しないため、スナップショットは明示的に[[#スナップショットの削除|削除]]するまでずっと残り続けます。&lt;br /&gt;
&lt;br /&gt;
クリーンアップアルゴリズムを設定するには {{ic|create}} の後に {{ic|-c}} フラグを使用して {{ic|number}}, {{ic|timeline}}, {{ic|pre}}, {{ic|post}} のどれかを選択してください。{{ic|number}} は設定ファイルで指定された番号にあわせて定期的にスナップショットを削除します。例えば、{{ic|number}} アルゴリズムを使用するスナップショットを作成するには:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; create -c number&lt;br /&gt;
&lt;br /&gt;
{{ic|timeline}} スナップショットについては[[#自動タイムラインスナップショット|自動タイムラインスナップショット]]を、{{ic|pre}} と {{ic|post}} については[[#事前事後のスナップショット|事前事後のスナップショット]]を見てください。&lt;br /&gt;
&lt;br /&gt;
==== 事前事後のスナップショット ====&lt;br /&gt;
&lt;br /&gt;
シンプルなスナップショットだけでなく、Snapper では事前事後のスナップショットを作成できます。事前 (&#039;&#039;pre&#039;&#039;) スナップショットには必ず対応する事後 (&#039;&#039;post&#039;&#039;) スナップショットが存在します。このペアによってシステムに変更を加える前後のスナップショットを作成することができます。&lt;br /&gt;
&lt;br /&gt;
事前事後のスナップショットを作成するには、まず事前スナップショットを作成:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; create -t pre -p&lt;br /&gt;
&lt;br /&gt;
上記のコマンドでスナップショット番号が出力されます。&lt;br /&gt;
&lt;br /&gt;
それからシステムに何らかの変更を加えます (例えば新しいプログラムをインストールしたり、ソフトウェアをアップグレードするなど)。&lt;br /&gt;
&lt;br /&gt;
次に事後のスナップショットを作成:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; create -t post --pre-number &#039;&#039;#&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|&#039;&#039;#&#039;&#039;}} は事前スナップショットの番号に置き換えてください。&lt;br /&gt;
&lt;br /&gt;
{{ic|create}} に {{ic|--command}} フラグを指定して、コマンドをラップすることもできます:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; create --command &#039;&#039;cmd&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|&#039;&#039;cmd&#039;&#039;}} は事前事後のスナップショットを作成する間に実行したいコマンドに置き換えてください。&lt;br /&gt;
&lt;br /&gt;
[[#pacman のトランザクションをスナップショットで記録|pacman のトランザクションをスナップショットで記録]]も見てください。&lt;br /&gt;
&lt;br /&gt;
=== 起動時にスナップショットを作成 ===&lt;br /&gt;
&lt;br /&gt;
snapper で {{ic|root}} 設定のスナップショットを作成するには {{ic|snapper-boot.timer}} を[[有効化]]してください。&lt;br /&gt;
&lt;br /&gt;
== スナップショットの確認 ==&lt;br /&gt;
&lt;br /&gt;
作成されたスナップショットを確認するには:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; list&lt;br /&gt;
&lt;br /&gt;
== 設定の確認 ==&lt;br /&gt;
&lt;br /&gt;
全ての[[#新しい設定の作成|設定]]を確認するには:&lt;br /&gt;
&lt;br /&gt;
 # snapper list-configs&lt;br /&gt;
&lt;br /&gt;
== スナップショットの削除 ==&lt;br /&gt;
&lt;br /&gt;
スナップショット番号 {{ic|&#039;&#039;#&#039;&#039;}} を削除するには:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c &#039;&#039;config&#039;&#039; delete &#039;&#039;#&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
一度に複数のスナップショットを削除できます。例えば、root 設定の65と70のスナップショットを削除するには:&lt;br /&gt;
&lt;br /&gt;
 # snapper -c root delete 65 70&lt;br /&gt;
&lt;br /&gt;
{{Note|事前スナップショットを削除した場合、事後スナップショットも一緒に削除してください。逆も然りです。}}&lt;br /&gt;
&lt;br /&gt;
==root 以外のユーザーでアクセス==&lt;br /&gt;
設定は root ユーザーによって作成され、デフォルトでは、root だけが設定を確認したり変更できます。&lt;br /&gt;
&lt;br /&gt;
特定のユーザーからもスナップショットを確認できるようにしたいときは、{{ic|/etc/snapper/configs/&#039;&#039;config&#039;&#039;}} ファイルの {{ic|ALLOW_USERS}} の値を変更してください。そうすれば通常ユーザーでも {{ic|snapper -c &#039;&#039;config&#039;&#039;list}} を実行できるようになります。&lt;br /&gt;
&lt;br /&gt;
さらに、ユーザーを使って {{ic|.snapshots}} ディレクトリを閲覧できるようにしたい、それでいてディレクトリの所有者は root のままにしておきたいということが考えられます。そのような場合、使用したいユーザーが属しているグループに、グループ所有者を変更してください。例えば {{ic|users}}　を使う場合:&lt;br /&gt;
&lt;br /&gt;
 # chmod a+rx .snapshots&lt;br /&gt;
 # chown :users .snapshots&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== pacman のトランザクションをスナップショットで記録 ===&lt;br /&gt;
&lt;br /&gt;
pacman の操作時に自動的にスナップショットを作成するためのパッケージが複数存在します:&lt;br /&gt;
&lt;br /&gt;
* {{App|pacupg|Btrfs のスナップショットでパッケージと AUR のアップグレードを記録して、簡単にロールバックできるようにするスクリプト。|https://github.com/crossroads1112/bin/tree/master/pacupg|{{AUR|pacupg}}}}&lt;br /&gt;
* {{App|snap-pac|openSUSE の YaST のように自動的に[[#事前事後のスナップショット|事前事後のスナップショット]]を作成します。[[Pacman#フック]]を使用しています。|https://github.com/wesbarnett/snap-pac|{{Pkg|snap-pac}}}}&lt;br /&gt;
* {{App|snap-pac-grub|{{pkg|snap-pac}} でスナップショットが作成された後に {{Pkg|grub-btrfs}} 用に GRUB エントリを更新します。[[Pacman#フック]]を使用します。||{{aur|snap-pac-grub}}}}&lt;br /&gt;
* {{App|snp|シェルコマンドの実行前後に snapper でスナップショットを取るラッパー。例: {{ic|$ snp pacman -Syu}}|https://gist.github.com/erikw/5229436|}}&lt;br /&gt;
&lt;br /&gt;
=== boot パーティションのバックアップ ===&lt;br /&gt;
&lt;br /&gt;
{{ic|/boot}} パーティションが btrfs ファイルシステム上に存在しない場合 (例: [[ESP]])、snapper でバックアップすることはできません。フックを使用してカーネルのアップデート時に boot パーティションを自動的に btrfs ファイルシステムにコピーさせることはできます。{{Pkg|snap-pac}} でも上手くバックアップされます。&lt;br /&gt;
{{hc|1=/usr/share/libalpm/hooks/50_bootbackup.hook|2=&lt;br /&gt;
[Trigger]&lt;br /&gt;
Operation = Upgrade&lt;br /&gt;
Operation = Install&lt;br /&gt;
Operation = Remove&lt;br /&gt;
Type = Package&lt;br /&gt;
Target = linux*&lt;br /&gt;
&lt;br /&gt;
[Action]&lt;br /&gt;
Depends = rsync&lt;br /&gt;
Description = Backing up /boot...&lt;br /&gt;
When = PreTransaction&lt;br /&gt;
Exec = /usr/bin/rsync -a --delete /boot /.bootbackup&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== 外部ドライブに差分バックアップ ===&lt;br /&gt;
&lt;br /&gt;
以下のパッケージは {{ic|btrfs send}} と {{ic|btrfs receive}} を使用して外部ドライブにバックアップを差分で送信します:&lt;br /&gt;
&lt;br /&gt;
* {{App|buttersink|Btrfs スナップショットの rsync のようなもので、スナップショットの差分だけを送信することで自動的に同期を最適化します。|https://github.com/AmesCornish/buttersink.git|{{AUR|buttersink-git}}}}&lt;br /&gt;
* {{App|snap-sync|snapper スナップショットを使用して外部ドライブにバックアップします。|https://github.com/wesbarnett/snap-sync.git|{{Pkg|snap-sync}}}}&lt;br /&gt;
* {{App|snapsync|snapper 用の同期ツール。|https://github.com/doudou/snapsync|{{AUR|ruby-snapsync}}}}&lt;br /&gt;
&lt;br /&gt;
===推奨ファイルシステムレイアウト===&lt;br /&gt;
&lt;br /&gt;
{{Note|1=以下のレイアウトは {{ic|snapper rollback}} を使用することは想定していませんが、コマンドで {{ic|/}} をリストアしたときの問題を軽減します。[https://bbs.archlinux.org/viewtopic.php?id=194491 フォーラムスレッド] を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
以下は {{ic|/}} を簡単に復元できるようにするための推奨ファイルシステムレイアウトです:&lt;br /&gt;
&lt;br /&gt;
 subvolid=5&lt;br /&gt;
    |&lt;br /&gt;
    ├── @&lt;br /&gt;
    |       |&lt;br /&gt;
    |       ├── /usr&lt;br /&gt;
    |       |&lt;br /&gt;
    |       ├── /bin&lt;br /&gt;
    |       |&lt;br /&gt;
    |       ├── /.snapshots&lt;br /&gt;
    |       |&lt;br /&gt;
    |       ├── ...&lt;br /&gt;
    |&lt;br /&gt;
    ├── @snapshots&lt;br /&gt;
    |&lt;br /&gt;
    └── @...&lt;br /&gt;
&lt;br /&gt;
{{ic|/.snapshots}} は {{ic|@snapshots}} のマウントポイントです。{{ic|@...}} は {{ic|/}} にマウントするサブボリューム ({{ic|@}}) とは別に保存したいサブボリュームになります。{{ic|/}} のスナップショットを作成するとき、他のサブボリュームはスナップショットに含まれません。ただし、別の snapper 設定を作成することで他のサブボリュームもスナップショットで記録できます。システムを {{ic|/}} のスナップショットの時点まで戻したいと思ったときに、他のサブボリュームには影響が及びません。&lt;br /&gt;
&lt;br /&gt;
例えば、{{ic|/}} をスナップショット時に戻したいが {{ic|/home}} は最新の状態のままにしたい場合、サブボリュームを作成して {{ic|/home}} にマウントしてください。詳しくは [[Btrfs#サブボリュームをマウントする]]を参照。&lt;br /&gt;
&lt;br /&gt;
上記のレイアウトは snapper ユーティリティで定期的に {{ic|/}} のスナップショットが作成できるのと同時に、起動できなくなった場合に Arch のライブ CD から {{ic|/}} を簡単に復元することができます。&lt;br /&gt;
&lt;br /&gt;
その場合、初期設定をしたら snapper に特別な設定をする必要はありません。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* サブボリュームが {{ic|@}} 下に入れ子になっていても、{{ic|/}} のスナップショットには含まれません。{{ic|/}} にマウントしているサブボリュームのスナップショットを保存したい場合は snapper でサブボリュームの設定を行ってください。&lt;br /&gt;
* [[Btrfs#スワップファイル|Btrfs の制限]]により、スナップショットされたボリュームは[[スワップ#スワップファイル|スワップファイル]]を含むことができません。スワップファイルを別のサブボリュームに置くか、[[スワップ#スワップパーティション|スワップパーティション]]を作成してください。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
====snapper の設定とマウントポイント====&lt;br /&gt;
&lt;br /&gt;
{{ic|/.snapshots}} がマウントされていないこと、フォルダとして存在しないことを確認してください:&lt;br /&gt;
 # umount /.snapshots&lt;br /&gt;
 # rm -r /.snapshots&lt;br /&gt;
&lt;br /&gt;
それから {{ic|/}} の[[#新しい設定の作成|新しい設定を作成]]します。&lt;br /&gt;
&lt;br /&gt;
そして {{ic|@snapshots}} を {{ic|/.snapshots}} に[[マウント]]してください。例えば、ファイルシステムが {{ic|/dev/sda1}} に存在する場合:&lt;br /&gt;
 # mount -o subvol=@snapshots /dev/sda1 /.snapshots&lt;br /&gt;
マウントを永続化させるには、[[fstab]] にエントリを作成します。&lt;br /&gt;
&lt;br /&gt;
もしくは fstab エントリが既に存在する場合、スナップショットのサブボリュームを再マウントします:&lt;br /&gt;
 # mount -a&lt;br /&gt;
&lt;br /&gt;
フォルダには {{ic|750}} の[[ファイルのパーミッションと属性#数字を使う方法|パーミッション]]を設定してください。&lt;br /&gt;
&lt;br /&gt;
snapper が作成するスナップショットは全て {{ic|@}} サブボリュームの外に保存されるため、snapper のスナップショットを削除しなくても {{ic|@}} を簡単に置き換えることができます。&lt;br /&gt;
&lt;br /&gt;
===={{ic|/}} を {{ic|@}} のスナップショットに復元 ====&lt;br /&gt;
&lt;br /&gt;
snapper のスナップショットを使って {{ic|/}} をリストアしたくなったら、まずは Arch Linux のライブ USB/CD を起動します。&lt;br /&gt;
&lt;br /&gt;
トップレベルのサブボリューム (subvolid=5) を[[マウント]]してください。{{ic|subvolid}} マウントフラグは省略します。&lt;br /&gt;
&lt;br /&gt;
{{ic|/mnt/@snapshots/*/info.xml}} から復元したいスナップショットを確認します:&lt;br /&gt;
{{Tip|{{ic|vi}} を使ってファイルを確認できます:&lt;br /&gt;
 # vi /mnt/@snapshots/*/info.xml&lt;br /&gt;
次のファイルを見たいときは {{ic|:n}} を、最初のファイルに戻りたいときは {{ic|:rew}} を使用します。}}&lt;br /&gt;
&lt;br /&gt;
{{ic|&amp;lt;description&amp;gt;}} タグと {{ic|&amp;lt;date&amp;gt;}} タグを見て、リストアしたいスナップショットが確認できたら、{{ic|&amp;lt;num&amp;gt;}} の番号をメモしてください。&lt;br /&gt;
&lt;br /&gt;
そして {{ic|@}} を他の場所 (例: {{ic|/@.broken}}) にして現在のシステムのコピーを保存します。もしくは {{ic|btrfs subvolume delete}} で {{ic|@}} を削除します。&lt;br /&gt;
&lt;br /&gt;
読み取り専用のスナップショットから読み書き可能なスナップショットを作成:&lt;br /&gt;
&lt;br /&gt;
 # btrfs subvol snapshot /mnt/@snapshots/&#039;&#039;#&#039;&#039;/snapshot /mnt/@&lt;br /&gt;
&lt;br /&gt;
{{ic|&#039;&#039;#&#039;&#039;}} は復元したい snapper のスナップショットの番号に置き換えてください。これで {{ic|/}} は前の状態に戻ります。再起動してください。&lt;br /&gt;
&lt;br /&gt;
===スナップショットからファイルを削除===&lt;br /&gt;
&lt;br /&gt;
過去のスナップショットから特定のファイルやフォルダを削除したい場合、[https://pypi.python.org/pypi/snapperS snapperS] というスクリプトが存在します。&lt;br /&gt;
&lt;br /&gt;
スクリプトを使わずにファイルを削除したい場合、以下のコマンドを実行して [https://unix.stackexchange.com/a/149933/3587 スナップショットのサブボリュームを読み書き可能] にする必要があります:&lt;br /&gt;
&lt;br /&gt;
 # btrfs property set /path/to/.snapshots/&amp;lt;snapshot_num&amp;gt;/snapshot ro false&lt;br /&gt;
&lt;br /&gt;
{{ic|1=ro=false}} となっていることを確認:&lt;br /&gt;
&lt;br /&gt;
{{hc|# btrfs property get /path/to/.snapshots/&amp;lt;snapshot_num&amp;gt;/snapshot|2=ro=false}}&lt;br /&gt;
&lt;br /&gt;
これで {{ic|/path/to/.snapshots/&amp;lt;snapshot_num&amp;gt;/snapshot}} のファイルは通常通りに編集することが可能になります。&lt;br /&gt;
&lt;br /&gt;
=== ドライブの負担を抑える ===&lt;br /&gt;
&lt;br /&gt;
頻繁に変更が加わるファイルシステム (例えば多数のシステムアップデートが行われる {{ic|/}} など) で長期間にわたって頻繁にスナップショットを取得すると動作がかなり遅くなることがあります。以下のようにすることで遅くなるのを回避できます:&lt;br /&gt;
* スナップショットを作成する価値がない {{ic|/var/cache/pacman/pkg}}, {{ic|/var/abs}}, {{ic|/var/tmp}}, {{ic|/srv}} などのサブボリュームを[[Btrfs#サブボリュームを作成する|作成]]する。&lt;br /&gt;
* [[#自動タイムラインスナップショット|自動タイムラインスナップショット]]を使う場合に、毎時・毎日・毎周・毎年のスナップショットのデフォルト設定を変更する。&lt;br /&gt;
&lt;br /&gt;
==== updatedb ====&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、{{ic|updatedb}} は snapper によって作成された {{ic|.snapshots}} ディレクトリのインデックスも作成してしまい、スナップショットが大量にある場合、深刻な遅延が発生したりメモリが異常に消費される原因になります。以下のように設定ファイルを編集することでインデックスを作成しないように {{ic|updatedb}} を設定できます:&lt;br /&gt;
{{hc|/etc/updatedb.conf|2=PRUNENAMES = &amp;quot;.snapshots&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
=== ログファイルの保持 ===&lt;br /&gt;
&lt;br /&gt;
{{ic|/var/log}} のサブボリュームを作成して {{ic|/}} のスナップショットに含まれないようにすることを推奨します。{{ic|/}} のスナップショットを復元したときにログファイルまで前の状態に戻ってしまうことがなくなり、トラブルシューティングが楽になります。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
===Snapper のログ===&lt;br /&gt;
Snapper は全ての活動を {{ic|/var/log/snapper.log}} に書き出します。何か問題が発生しているように感じたら真っ先にこのファイルをチェックしてください。&lt;br /&gt;
&lt;br /&gt;
毎時・毎日・毎週のスナップショットに問題がある場合、おそらく cronie サービス (もしくはその他の cron デーモン) が動いていなかったのが原因だということが多くあります。&lt;br /&gt;
&lt;br /&gt;
===IO エラー===&lt;br /&gt;
スナップショットを作成しようとすると IO エラーが表示される場合、スナップショットを作成しようとしたサブボリュームと関連付けられている [https://bbs.archlinux.org/viewtopic.php?id=164404 .snapshots] ディレクトリもサブボリュームになっていることを確認してください。&lt;br /&gt;
&lt;br /&gt;
また、{{ic|.snapshots}} の所有者が root になっていない可能性もあります ({{ic|/var/log/snapper.log}} に {{ic|Btrfs.cc(openInfosDir):219 - .snapshots must have owner root}} というエラーが出力されます)。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
* [http://snapper.io/ Snapper ホームページ]&lt;br /&gt;
* [https://en.opensuse.org/Portal:Snapper openSUSE Snapper ポータル]&lt;br /&gt;
* [https://btrfs.wiki.kernel.org/index.php/Main_Page Btrfs ホームページ]&lt;br /&gt;
* [https://www.linux.com/news/enterprise/systems-management/878490-snapper-suses-ultimate-btrfs-snapshot-manager/ Linux.com: Snapper: SUSE&#039;s Ultimate Btrfs Snapshot Manager]&lt;/div&gt;</summary>
		<author><name>Funcrab</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Greenclip&amp;diff=22805</id>
		<title>Greenclip</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Greenclip&amp;diff=22805"/>
		<updated>2021-12-15T13:46:34Z</updated>

		<summary type="html">&lt;p&gt;Funcrab: トラブルシューティングを追加: i3でクリップボード記録がされない問題の対応を記載&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:アプリケーションランチャー]]&lt;br /&gt;
[[en:Greenclip]]&lt;br /&gt;
[https://github.com/erebe/greenclip Greenclip] はシンプルなクリップボードマネージャです。[[Haskell]] で書かれており [[Rofi]] と統合して動作するように作られています。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
{{AUR|rofi-greenclip}} パッケージを[[インストール]]してください。&lt;br /&gt;
&lt;br /&gt;
起動時にサービスを開始できるようにします:&lt;br /&gt;
&lt;br /&gt;
 $ systemctl --user enable greenclip.service&lt;br /&gt;
&lt;br /&gt;
== 使用方法 ==&lt;br /&gt;
&lt;br /&gt;
デーモンを生成:&lt;br /&gt;
 $ /usr/bin/greenclip daemon&lt;br /&gt;
&lt;br /&gt;
あるいはサービスを起動・有効化:&lt;br /&gt;
&lt;br /&gt;
 $ systemctl --user start greenclip.service&lt;br /&gt;
&lt;br /&gt;
[[rofi]] の中でリストとしてエントリを表示:&lt;br /&gt;
 $ rofi -modi &amp;quot;clipboard:greenclip print&amp;quot; -show clipboard&lt;br /&gt;
選択したエントリが[[クリップボード]]に保存されます。&lt;br /&gt;
&lt;br /&gt;
クリップボードの履歴を全て消去するには:&lt;br /&gt;
 $ greenclip clear&lt;br /&gt;
&lt;br /&gt;
== 設定 ==&lt;br /&gt;
&lt;br /&gt;
設定ファイルは {{ic|~/.config/greenclip.cfg}} に存在します。&lt;br /&gt;
&lt;br /&gt;
=== 設定例 ===&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/greenclip.cfg|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
Config {&lt;br /&gt;
 maxHistoryLength = 250,&lt;br /&gt;
 historyPath = &amp;quot;~/.cache/greenclip.history&amp;quot;,&lt;br /&gt;
 staticHistoryPath = &amp;quot;~/.cache/greenclip.staticHistory&amp;quot;,&lt;br /&gt;
 imageCachePath = &amp;quot;/tmp/&amp;quot;,&lt;br /&gt;
 usePrimarySelectionAsInput = False,&lt;br /&gt;
 blacklistedApps = [],&lt;br /&gt;
 trimSpaceFromSelection = True&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
=== i3-wm でクリップボードの記録ができない ===&lt;br /&gt;
&lt;br /&gt;
i3設定ファイルに下記を入れてください。サービス起動は必要ありません。&lt;br /&gt;
[[https://github.com/erebe/greenclip/issues/70 greenclip issue #70]]&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/i3/config|&lt;br /&gt;
# clipboard tool&lt;br /&gt;
exec --no-startup-id greenclip daemon&amp;gt;/dev/null&lt;br /&gt;
bindsym $mod+c exec --no-startup-id rofi -modi &amp;quot;clipboard:greenclip print&amp;quot; -show clipboard&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Funcrab</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Fcitx5&amp;diff=22783</id>
		<title>Fcitx5</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Fcitx5&amp;diff=22783"/>
		<updated>2021-12-13T16:12:06Z</updated>

		<summary type="html">&lt;p&gt;Funcrab: 環境変数部分を反映&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:インプットメソッド]]&lt;br /&gt;
[[en:Fcitx5]]&lt;br /&gt;
[[zh-hans:Fcitx5]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|Fcitx}}&lt;br /&gt;
{{Related|IBus}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
Fcitx5 は [[Fcitx]] の後継です。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
{{Pkg|fcitx5}} パッケージを[[インストール]]してください。&lt;br /&gt;
&lt;br /&gt;
{{Grp|fcitx5-im}} パッケージグループ, {{Pkg|fcitx5}} 本体, [[#設定ツール]], {{AUR|fcitx5-qt4-git}} を除く全ての [[#インプットメソッドモジュール]]  &lt;br /&gt;
&lt;br /&gt;
{{Note|{{Pkg|fcitx5}} は基本的なフレームワークを提供するだけで英語のサポートが提供されます。中国語や日本語などの他の言語を入力する場合は、インプットメソッドエンジンが必要です。}}&lt;br /&gt;
&lt;br /&gt;
=== 中国語 ===&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|fcitx5-chewing}} は {{Pkg|libchewing}} に基づく繁体字の注音入力エンジンです。&lt;br /&gt;
* {{Pkg|fcitx5-chinese-addons}} には中国語に関連するアドオンが含まれています。fcitx4 にバンドルされている IME も含まれます。&lt;br /&gt;
* {{Pkg|fcitx5-rime}} は [[Rime IME]] プロジェクトのスキーマを基にしています。&lt;br /&gt;
&lt;br /&gt;
=== 日本語 ===&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|fcitx5-anthy}} は人気の日本語入力エンジンです。ただし、開発は滞っています。&lt;br /&gt;
* {{Pkg|fcitx5-mozc}} Google 日本語入力のオープンソース版である [[Mozc]] がベース。&lt;br /&gt;
* {{Pkg|fcitx5-skk}} は {{Pkg|libskk}} がベースの日本語仮名漢字入力エンジンです。&lt;br /&gt;
&lt;br /&gt;
=== 他の言語 ===&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|fcitx5-hangul}} は {{Pkg|libhangul}} ベースの韓国語ハングル入力エンジンです。&lt;br /&gt;
* {{Pkg|fcitx5-unikey}} はベトナム文字入力エンジンです。&lt;br /&gt;
* {{Pkg|fcitx5-m17n}}, for typing other miscellaneous languages.&lt;br /&gt;
&lt;br /&gt;
=== インプットメソッドモジュール ===&lt;br /&gt;
&lt;br /&gt;
より良いエクスペリエンスを得るために、以下のモジュールもインストールすると良いでしょう。モジュールをインストールしなくても大抵のアプリケーションでインプットメソッドは動作しますが、インプットメソッドがフリーズしたり、プレビューウィンドウの位置がずれたり、プレビューが表示されなかったりする可能性があります。&lt;br /&gt;
&lt;br /&gt;
* Qt プログラムには {{Pkg|fcitx5-qt}} をインストールしてください。&lt;br /&gt;
* GTK プログラムには {{Pkg|fcitx5-gtk}} をインストールしてください。&lt;br /&gt;
* Qt4 プログラムには {{AUR|fcitx5-qt4-git}} をインストールしてください。&lt;br /&gt;
* Qt5 プログラムには {{AUR|fcitx5-qt5-git}} をインストールしてください。&lt;br /&gt;
* Qt6 プログラムには {{AUR|fcitx5-qt6-git}} をインストールしてください。&lt;br /&gt;
* 日付と時刻のサポートについては {{Pkg|fcitx5-lua}} をインストールしてください。&lt;br /&gt;
&lt;br /&gt;
{{Tip|通常、{{Pkg|fcitx5-qt}} と {{Pkg|fcitx5-gtk}} をインストールすると、あらゆる状況に対応できます。}}&lt;br /&gt;
&lt;br /&gt;
== 使用方法 ==&lt;br /&gt;
=== インプットメソッドモジュールの環境変数の設定 ===&lt;br /&gt;
&lt;br /&gt;
Fcitx5を常用する場合は、環境変数を変更する必要があります。&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/environment}}を編集し、以下の行を追加します。&lt;br /&gt;
&lt;br /&gt;
 GTK_IM_MODULE=fcitx&lt;br /&gt;
 QT_IM_MODULE=fcitx&lt;br /&gt;
 XMODIFIERS=@im=fcitx&lt;br /&gt;
&lt;br /&gt;
{{Tip|1=これらの変数を設定する他の方法については、 [[環境変数]] を参照してください。SDL2ライブラリのベンダー修正版を使用する一部のゲーム（Dota2など）では、{{ic|1=SDL_IM_MODULE=fcitx}} も追記します。}}&lt;br /&gt;
&lt;br /&gt;
=== デスクトップ環境での自動起動 ===&lt;br /&gt;
&lt;br /&gt;
デスクトップの起動時に {{Pkg|fcitx5}} の自動起動が必要な場合は、[[Fcitx#デスクトップ環境での自動起動]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
== 設定 ==&lt;br /&gt;
=== 設定ツール ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|fcitx5}} の設定ファイルは、{{ic|~/.local/share/fcitx5}} にあります。テキストエディタを使用して設定ファイルを編集できますが、GUIを使った方が明らかに便利です。 {{Pkg|fcitx5-configtool}} パッケージをインストールします。&lt;br /&gt;
&lt;br /&gt;
=== テーマ ===&lt;br /&gt;
&lt;br /&gt;
収録されているテーマは非常に少なく、[https://github.com/search?q=fcitx5+theme&amp;amp;type=Repositories GitHub] でより多くのテーマを見つけることができます。&lt;br /&gt;
* {{Pkg|fcitx5-material-color}}: このテーマはマイクロソフトの PinYin のような感じです。公式版は [https://github.com/hosxy/Fcitx5-Material-Color GitHub: Fcitx5-Material-Color] にあります。README.md ファイルに1行モードの美しい感じを設定するためのガイダンスがあります。&lt;br /&gt;
&lt;br /&gt;
{{Tip|KCM を使用している場合は、&#039;&#039;Setting -&amp;gt; Location -&amp;gt; input method -&amp;gt; Configure addons -&amp;gt; Classic user interface -&amp;gt; Theme&#039;&#039; でテーマを切り替えます。}}&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
=== 問題の診断 ===&lt;br /&gt;
​fcitx5 の使用に問題がある場合 (例. ​{{ic|Ctrl+Space}} がすべてのアプリケーションで機能しないなど。最初に試すべきことは、{{ic|fcitx5-diagnose}} を使用して診断することです。​{{ic|fcitx5-diagnose}} の出力には、最も一般的な問題の手がかりが含まれています。&lt;br /&gt;
&lt;br /&gt;
=== 最新の wps は fcitx5 を使用できません ===&lt;br /&gt;
&lt;br /&gt;
参照. [[WPS Office#Fcitx5 cannot input Chinese]]&lt;br /&gt;
&lt;br /&gt;
=== intellij IDE で error position ===&lt;br /&gt;
&lt;br /&gt;
一部のJavaアプリケーションは正確に位置を取得できません。Fcitx5はこの問題を修正できません [https://github.com/fcitx/fcitx5/issues/79].&lt;br /&gt;
&lt;br /&gt;
=== 絵文字が候補ボックスで異常を示しています ===&lt;br /&gt;
&lt;br /&gt;
1. 絵文字のフォントがインストールされていることを確認します。 ( 例えば {{Pkg|noto-fonts-emoji}} )&lt;br /&gt;
&lt;br /&gt;
2. システムフォントを {{ic|Noto Sans CJK JP}}&lt;br /&gt;
&lt;br /&gt;
3. 次のコマンドを使用して再起動 &#039;&#039;&#039;reboot Fcitx5&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
 # kill `ps -A | grep fcitx5 | awk &#039;{print $1}&#039;` &amp;amp;&amp;amp; fcitx5&amp;amp;&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== 選択した文字の Unicode エンコーディングを表示する方法 ===&lt;br /&gt;
&lt;br /&gt;
*選択したテキストの Unicode エンコーディングをテキストエディタで表示する場合は、テキストを直接選択し、ショートカットキー{{ic|ctrl + alt + shift + u}}を使用して、選択したテキストのエンコーディングを表示します。&lt;br /&gt;
&lt;br /&gt;
*非編集領域(この Wiki など)のテキストの Unicode エンコーディングを表示する場合は、まずテキストをクリップボードにコピーしてから、編集可能な領域(検索ボックスなど)をクリックする必要があります。 次に、ショートカットキー {{ic|ctrl + alt + shift + u}} を使用して、クリップボード内のテキストのエンコーディングを表示できます。&lt;br /&gt;
&lt;br /&gt;
=== 特殊文字を入力 ===&lt;br /&gt;
&lt;br /&gt;
一般に、{{ic|≤}}、{{ic|ā}}、{{ic|á}}、{{ic|©}} などの単純な記号は、[[Xorg でのキーボード設定#コンポーズキーの設定|コンポーズキーの設定]] から入力できますが {{ic|2}}、{{ic|3}}、{{ic|4}}などの特殊記号の場合は、次のいずれかをカスタマイズします {{ic|~/XCompose}} または、Fcitx5 の Unicode 関数を使用します。&lt;br /&gt;
&lt;br /&gt;
{{ic|1}} を例にとってみましょう。&lt;br /&gt;
&lt;br /&gt;
任意の入力ボックスにカーソルを置いて {{ic|Ctrl+Alt+Shift+U}} を押し、{{ic|円1}} と入力すると、{{ic|1}} などの特殊文字が表示されます。&lt;br /&gt;
&lt;br /&gt;
=== RIME ===&lt;br /&gt;
&lt;br /&gt;
ユーザーデータディレクトリは {{ic|~/.local/share/fcitx5/rime/}} です。&lt;br /&gt;
{{Note|次の例では、{{ic|luna_pinyin}}を例にしています。他の入力方式の変更を参照してください}}&lt;br /&gt;
&lt;br /&gt;
==== ギリシャ文字 ====&lt;br /&gt;
&lt;br /&gt;
{{ic|luna_pinyin.custom.yaml}} をカスタムファイルとして次のコードを追加します。&lt;br /&gt;
&lt;br /&gt;
{{hc|luna_pinyin.custom.yaml|&lt;br /&gt;
recognizer:&lt;br /&gt;
  patterns:&lt;br /&gt;
    # Use / as the identifier here&lt;br /&gt;
    # You can freely replace your favorite identifiers (such as: `~, .\; etc., characters that need not be displayed directly on the screen)&lt;br /&gt;
    # Replace the / before the Greek letter at the same time&lt;br /&gt;
    punct: &amp;quot;^/([0-9]0?{{!}}[A-Za-z]+)$&amp;quot;&lt;br /&gt;
punctuator:&lt;br /&gt;
  symbols:&lt;br /&gt;
    # Here, the letter name is used as the code of the Greek letter, and you can replace it with your favorite code as needed.&lt;br /&gt;
    # For example, if you want to use a as the alpha code&lt;br /&gt;
    # just replace the alpha below with a&lt;br /&gt;
    &amp;quot;/alpha&amp;quot;: [&amp;quot;Α&amp;quot;, &amp;quot;α&amp;quot;]&lt;br /&gt;
    &amp;quot;/beta&amp;quot;: [&amp;quot;Β&amp;quot;, &amp;quot;β&amp;quot;]&lt;br /&gt;
    &amp;quot;/gamma&amp;quot;: [&amp;quot;Γ&amp;quot;, &amp;quot;γ&amp;quot;]&lt;br /&gt;
    &amp;quot;/delta&amp;quot;: [&amp;quot;Δ&amp;quot;, &amp;quot;δ&amp;quot;]&lt;br /&gt;
    &amp;quot;/epsilon&amp;quot;: [&amp;quot;Ε&amp;quot;, &amp;quot;ε&amp;quot;]&lt;br /&gt;
    &amp;quot;/zeta&amp;quot;: [&amp;quot;Ζ&amp;quot;, &amp;quot;ζ&amp;quot;]&lt;br /&gt;
    &amp;quot;/eta&amp;quot;: [&amp;quot;Η&amp;quot;, &amp;quot;η&amp;quot;]&lt;br /&gt;
    &amp;quot;/theta&amp;quot;: [&amp;quot;Θ&amp;quot;, &amp;quot;θ&amp;quot;]&lt;br /&gt;
    &amp;quot;/iota&amp;quot;: [&amp;quot;Ι&amp;quot;, &amp;quot;ι&amp;quot;]&lt;br /&gt;
    &amp;quot;/kappa&amp;quot;: [&amp;quot;Κ&amp;quot;, &amp;quot;κ&amp;quot;]&lt;br /&gt;
    &amp;quot;/lambda&amp;quot;: [&amp;quot;Λ&amp;quot;, &amp;quot;λ&amp;quot;]&lt;br /&gt;
    &amp;quot;/mu&amp;quot;: [&amp;quot;Μ&amp;quot;, &amp;quot;μ&amp;quot;]&lt;br /&gt;
    &amp;quot;/nu&amp;quot;: [&amp;quot;Ν&amp;quot;, &amp;quot;ν&amp;quot;]&lt;br /&gt;
    &amp;quot;/xi&amp;quot;: [&amp;quot;Ξ&amp;quot;, &amp;quot;ξ&amp;quot;]&lt;br /&gt;
    &amp;quot;/omicron&amp;quot;: [&amp;quot;Ο&amp;quot;, &amp;quot;ο&amp;quot;]&lt;br /&gt;
    &amp;quot;/pi&amp;quot;: [&amp;quot;Π&amp;quot;, &amp;quot;π&amp;quot;]&lt;br /&gt;
    &amp;quot;/rho&amp;quot;: [&amp;quot;Ρ&amp;quot;,&amp;quot;ρ&amp;quot;]&lt;br /&gt;
    &amp;quot;/sigma&amp;quot;: [&amp;quot;Σ&amp;quot;, &amp;quot;σ&amp;quot;, &amp;quot;ς&amp;quot;]&lt;br /&gt;
    &amp;quot;/tau&amp;quot;: [&amp;quot;Τ&amp;quot;, &amp;quot;τ&amp;quot;]&lt;br /&gt;
    &amp;quot;/upsilon&amp;quot;: [&amp;quot;Υ&amp;quot;, &amp;quot;υ&amp;quot;]&lt;br /&gt;
    &amp;quot;/phi&amp;quot;: [&amp;quot;Φ&amp;quot;, &amp;quot;φ&amp;quot;]&lt;br /&gt;
    &amp;quot;/chi&amp;quot;: [&amp;quot;Χ&amp;quot;, &amp;quot;χ&amp;quot;]&lt;br /&gt;
    &amp;quot;/psi&amp;quot;: [&amp;quot;Ψ&amp;quot;, &amp;quot;ψ&amp;quot;]&lt;br /&gt;
    &amp;quot;/omega&amp;quot;: [&amp;quot;Ω&amp;quot;, &amp;quot;ω&amp;quot;]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
例えば、{{ic|α}} を使いたい場合、{{ic|/alpha}} と入力します。&lt;br /&gt;
&lt;br /&gt;
=== 半角/全角句読点の切り替え ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|fcitx5-chinese-addons}} では、デフォルトで全角句読点が使用されますが、{{ic|Ctrl + .}} で半角と全角の句読点を切り替えることができます。&lt;/div&gt;</summary>
		<author><name>Funcrab</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Profile-sync-daemon&amp;diff=22649</id>
		<title>Profile-sync-daemon</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Profile-sync-daemon&amp;diff=22649"/>
		<updated>2021-12-04T12:41:07Z</updated>

		<summary type="html">&lt;p&gt;Funcrab: /* FAQ */ === overlayfs モードとは? === タイトルのマーキング記述を削ってしまっていたので修正&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ウェブブラウザ]]&lt;br /&gt;
[[Category:スクリプト]]&lt;br /&gt;
[[en:Profile-sync-daemon]]&lt;br /&gt;
[[ru:Profile-sync-daemon]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|Anything-sync-daemon}}&lt;br /&gt;
{{Related|Firefox}}&lt;br /&gt;
{{Related|Chromium}}&lt;br /&gt;
{{Related|Opera}}&lt;br /&gt;
{{Related|Pdnsd}}&lt;br /&gt;
{{Related|ソリッドステートドライブ}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
{{pkg|profile-sync-daemon}} (psd)はブラウザプロファイルを tmpfs で管理して定期的に物理ディスク (HDD/SSD) に同期させる、とても小さな擬似的なデーモンです。rsync でブラウザプロファイルの tmpfs のコピーとメディアのバックアップを同期させるという革新的な利用法によります。さらに、psd にはクラッシュからの復元機能が存在します。&lt;br /&gt;
&lt;br /&gt;
{{Note|場合によっては、デフォルトの構成ファイル {{ic|/usr/share/psd/psd.conf}} のアップストリームが更新/変更されます。 ユーザーコピー  {{ic|$XDG_CONFIG_HOME/psd/psd.conf}} をそれと比較する必要があります。 Arch Linux の pacman ではユーザーにこれを行うように通知する必要があります。 他のパッケージマネージャーやディストリビューションのユーザーは、定期的にファイルを手動で、変更部分を差し替える必要があります。}}&lt;br /&gt;
&lt;br /&gt;
{{Note|psd はブラウザのキャッシュを RAM にコピーするため、 [https://www.reddit.com/r/archlinux/comments/4l7gvm/very_slow_when_login/d3lrx9y/ login] の速度が低下する可能性があります。}}&lt;br /&gt;
&lt;br /&gt;
== psd 設計目標とメリット ==&lt;br /&gt;
&lt;br /&gt;
#透過的に利用できる&lt;br /&gt;
#物理ドライブの損耗が減る&lt;br /&gt;
#速度&lt;br /&gt;
&lt;br /&gt;
プロファイルやブラウザキャッシュなどを [[tmpfs]] (RAM ディスク) に再配置して、ブラウザの使用に関連する I/O を物理ドライブから RAM に変更することにより、物理ドライブの消耗を抑えつつブラウザの速度や反応性を劇的に高められます。&lt;br /&gt;
&lt;br /&gt;
{{Note|Chrome/Chromium, Firefox (v21 以上), Midori, Rekonq などのブラウザはプロファイルのディレクトリとは別個にキャッシュディレクトリを保存しています。この挙動を変更するのは profile-sync-daemon の射程外です。Chromium の [[Chromium 設定#tmpfs にキャッシュ]]セクションや [[Firefox Ramdisk]] 記事を参照して対処することが推奨されます。}}&lt;br /&gt;
&lt;br /&gt;
== セットアップとインストール ==&lt;br /&gt;
&lt;br /&gt;
{{Pkg|profile-sync-daemon}} パッケージをインストールします。&lt;br /&gt;
&lt;br /&gt;
=== 設定ファイルの編集 ===&lt;br /&gt;
psd を初めて実行したときに、全ての設定が記述された {{ic|$XDG_CONFIG_HOME/psd/psd.conf}} が作成されます (以下、このファイルを設定ファイルと呼称します)。&lt;br /&gt;
&lt;br /&gt;
{{Note|psd を実行している間に設定ファイルを編集した場合、変更が適用されるのは init サービスから psd を再起動したときです。}}&lt;br /&gt;
&lt;br /&gt;
 $ psd&lt;br /&gt;
 First time running psd so please edit /home/facade/.config/psd/psd.conf to your liking and run again.&lt;br /&gt;
&lt;br /&gt;
* 任意で overlayfs を利用することで同期を高速化させてメモリの使用量を減らすことができます。USE_OVERLAYFS 変数を設定してください。このオプションを使う場合、{{ic|/usr/bin/psd-overlay-helper}} に sudo 権限が必要で、カーネルが overlayfs バージョン22以上に対応していなければなりません。この機能の詳細は下の FAQ を見て下さい。&lt;br /&gt;
* 任意で BROWSERS 行をアンコメントして tmpfs に同期するブラウザを指定することができます。BROWSERS がコメントアウトされている場合 (デフォルト)、サポートしているブラウザ全てのプロファイルが同期されます。&lt;br /&gt;
* 任意でクラッシュしたときに復帰するためのスナップショットを無効化することができます (非推奨)。USE_BACKUPS 変数で設定します。&lt;br /&gt;
&lt;br /&gt;
例:  Chromium, Opera, Midori をインストールしていて Chromium と Opera だけを tmpfs に同期する (Midori はバックアップのブラウザとしてたまにしか使わない) という場合:&lt;br /&gt;
&lt;br /&gt;
 # List browsers separated by spaces to include in the sync. Useful if you do not&lt;br /&gt;
 # wish to have all possible browser profiles sync&#039;ed which is the default if&lt;br /&gt;
 # this variable is left commented.&lt;br /&gt;
 #&lt;br /&gt;
 # Possible values:&lt;br /&gt;
 #  chromium&lt;br /&gt;
 #  chromium-dev&lt;br /&gt;
 #  conkeror.mozdev.org&lt;br /&gt;
 #  epiphany&lt;br /&gt;
 #  firefox&lt;br /&gt;
 #  firefox-trunk&lt;br /&gt;
 #  google-chrome&lt;br /&gt;
 #  google-chrome-beta&lt;br /&gt;
 #  google-chrome-unstable&lt;br /&gt;
 #  heftig-aurora&lt;br /&gt;
 #  icecat&lt;br /&gt;
 #  inox&lt;br /&gt;
 #  luakit&lt;br /&gt;
 #  midori&lt;br /&gt;
 #  opera&lt;br /&gt;
 #  opera-beta&lt;br /&gt;
 #  opera-developer&lt;br /&gt;
 #  opera-legacy&lt;br /&gt;
 #  otter-browser&lt;br /&gt;
 #  qupzilla&lt;br /&gt;
 #  qutebrowser&lt;br /&gt;
 #  palemoon&lt;br /&gt;
 #  rekonq&lt;br /&gt;
 #  seamonkey&lt;br /&gt;
 #  surf&lt;br /&gt;
 #  vivaldi&lt;br /&gt;
 #  vivaldi-snapshot&lt;br /&gt;
 #&lt;br /&gt;
 BROWSERS=&amp;quot;chromium opera&amp;quot;&lt;br /&gt;
&lt;br /&gt;
psd のバージョン 5.54 から、overlayfs がネイティブでサポートされるようになりました。この機能を使うには 3.18.0 以上の Linux カーネルが必要です。&lt;br /&gt;
&lt;br /&gt;
== サポートしているブラウザ ==&lt;br /&gt;
&lt;br /&gt;
現在、以下のブラウザを自動で検出して管理します:&lt;br /&gt;
* [[Chromium]]&lt;br /&gt;
* {{AUR|chromium-dev}}&lt;br /&gt;
* {{AUR|conkeror-git}}&lt;br /&gt;
* [[Epiphany]]&lt;br /&gt;
* [[Firefox]] (安定版・ベータ版・Aurora 版など全てをサポート)&lt;br /&gt;
* {{AUR|google-chrome}}&lt;br /&gt;
* {{AUR|google-chrome-beta}}&lt;br /&gt;
* {{AUR|google-chrome-dev}}&lt;br /&gt;
* [https://bbs.archlinux.org/viewtopic.php?id=117157 heftig バージョンの Aurora]: Arch Linux 専用ブラウザ&lt;br /&gt;
* {{AUR|icecat}}&lt;br /&gt;
* [[Luakit]]&lt;br /&gt;
* [[Midori]]&lt;br /&gt;
* [[Opera]]&lt;br /&gt;
* [[Otter Browser]]&lt;br /&gt;
* [[Qutebrowser]]&lt;br /&gt;
* {{AUR|palemoon}} / {{AUR|palemoon-bin}}&lt;br /&gt;
* {{Pkg|seamonkey}}&lt;br /&gt;
* {{AUR|surf}}&lt;br /&gt;
* [[Vivaldi]]&lt;br /&gt;
&lt;br /&gt;
== psd を使う ==&lt;br /&gt;
&lt;br /&gt;
=== プレビューモード (parse) ===&lt;br /&gt;
&lt;br /&gt;
&#039;parse&#039; オプションを使うことで {{ic|$XDG_CONFIG_HOME/psd/psd.conf}} に基づいて &#039;&#039;psd&#039;&#039; が何を行うのかを正確に表示することができます。次のように呼び出して下さい:&lt;br /&gt;
 $ psd p&lt;br /&gt;
 Profile-sync-daemon v6.44&lt;br /&gt;
 &lt;br /&gt;
  Systemd service: active&lt;br /&gt;
  resync-timer: active&lt;br /&gt;
  sync on sleep: enabled&lt;br /&gt;
  use overlayfs: enabled&lt;br /&gt;
 &lt;br /&gt;
 Psd will manage the following per /home/facade/.config/psd/psd.conf settings:&lt;br /&gt;
 &lt;br /&gt;
  browser/psname:  chromium/chromium&lt;br /&gt;
  owner/group id:  facade/100&lt;br /&gt;
  sync target:     /home/facade/.config/chromium&lt;br /&gt;
  tmpfs dir:       /run/user/1000/facade-chromium&lt;br /&gt;
  profile size:    93M&lt;br /&gt;
  overlayfs size:  39M&lt;br /&gt;
  recovery dirs:   2 &amp;lt;- delete with the c option&lt;br /&gt;
   dir path/size:  /home/facade/.config/chromium-backup-crashrecovery-20150117_171359 (92M)&lt;br /&gt;
   dir path/size:  /home/facade/.config/chromium-backup-crashrecovery-20150119_112204 (93M)&lt;br /&gt;
 &lt;br /&gt;
  browser/psname:  firefox/firefox&lt;br /&gt;
  owner/group id:  facade/100&lt;br /&gt;
  sync target:     /mnt/data/docs/facade/mozilla/firefox/f8cv8bfu.default&lt;br /&gt;
  tmpfs dir:       /run/user/1000/facade-firefox-f8cv8bfu.default&lt;br /&gt;
  profile size:    145M&lt;br /&gt;
  overlayfs size:  13M&lt;br /&gt;
  recovery dirs:   none&lt;br /&gt;
&lt;br /&gt;
上記の通り、特定のブラウザが BROWSERS 行に設定されていない場合、&#039;&#039;psd&#039;&#039; は指定されたユーザーのサポートされているプロファイル全てを同期します。&lt;br /&gt;
&lt;br /&gt;
=== クリーンモード ===&lt;br /&gt;
クリーンモードを使うと保存されているスナップショットを全て削除します。削除しても問題ない場合にのみ実行してください。&lt;br /&gt;
&lt;br /&gt;
 $ psd c&lt;br /&gt;
 &lt;br /&gt;
 Profile-sync-daemon v6.03 on Arch Linux.&lt;br /&gt;
 &lt;br /&gt;
 Deleting 2 crashrecovery dirs for profile /home/facade/.config/chromium&lt;br /&gt;
  /home/facade/.config/chromium-backup-crashrecovery-20150117_171359&lt;br /&gt;
  /home/facade/.config/chromium-backup-crashrecovery-20150119_112204&lt;br /&gt;
&lt;br /&gt;
=== psd の起動と停止 ===&lt;br /&gt;
&lt;br /&gt;
psd のバージョン 6.x シリーズのリリースから、公式でサポートされる init システムは systemd だけになりました。Psd には起動と停止を行うための systemd ユーザーサービスが付属しています (psd.service)。さらに、1時間毎に tmpfs からディスクに再同期させる resync-timer も含まれています。resync-timer は psd.service によって自動的に起動するため、あなたがタイマーを起動させる必要はありません。&lt;br /&gt;
&lt;br /&gt;
systemd のユーザーモードの使い方がよくわからない場合、以下のコマンドで psd サービスを有効化できます:&lt;br /&gt;
&lt;br /&gt;
 $ systemctl --user [option] psd.service&lt;br /&gt;
&lt;br /&gt;
次のオプションが利用できます: {{ic|start}} {{ic|stop}} {{ic|enable}} {{ic|disable}} {{ic|status}}。&lt;br /&gt;
&lt;br /&gt;
===サポートしているディストリビューション===&lt;br /&gt;
&lt;br /&gt;
psd は systemd サービスが付いているただの bash スクリプトなので、systemd が動作している Linux ならどこでも動作します。公式パッケージとして提供しているディストリビューションが数多くあり、psd をインストールする方法をユーザーがメンテナンスしている場合もあります。ソースから psd をビルドすることも可能です。利用できるパッケージやインストールの手順については公式ウェブサイトを見て下さい。&lt;br /&gt;
&lt;br /&gt;
=== もっと頻繁に同期する (任意) ===&lt;br /&gt;
&lt;br /&gt;
パッケージには一時間ごとに同期を行うタイマーが入っています。任意で、[[Systemd#ユニットファイルの編集|systemd ユニットを編集]]することでこの挙動を再定義することが可能です。以下の例は10分毎に同期させるようにタイマーを変更します:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/systemd/user/psd-resync.timer.d/frequency.conf|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Timer for Profile-sync-daemon&lt;br /&gt;
&lt;br /&gt;
[Timer]&lt;br /&gt;
OnUnitActiveSec=&lt;br /&gt;
OnUnitActiveSec=10m&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
オプションについては {{man|5|systemd.timer}} を見て下さい。&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
&lt;br /&gt;
=== overlayfs モードとは? ===&lt;br /&gt;
&lt;br /&gt;
{{Note|Linuxカーネルで利用可能な overlayfs にはいくつかのバージョンがあり、様々なディストリビューションで運用されています。バージョン22以下では、「overlayfs」と呼ばれるモジュールが使用されていますが、新しいバージョン（23以上）では、「overlay」と呼ばれるモジュールが使用されています（新しいバージョンでは、「fs」がないことに注意してください）。Psdは、カーネルが利用可能な overlayfs を使用するように設定されていれば、自動的にそれを検出します。}}&lt;br /&gt;
&lt;br /&gt;
Overlayfs は Linux カーネル 3.18.0 でメインラインに取り込まれたシンプルなユニオンファイルシステムです。psd バージョン 5.54 から、overlayfs を使うことで psd の tmpfs 領域のメモリフットプリントを減らしたり、同期を高速化させることができるようになっています。オーバーレイマウントでは、プロファイル全体ではなく、変更が加えられたデータだけが書き出されるというところがミソです。overlayfs モードで実行した場合、psd がデフォルトで使用する同一の復帰機能も有効になります。Overlayfs モードは {{ic|$XDG_CONFIG_HOME/psd/psd.conf}} の {{ic|1=USE_OVERLAYFS=&amp;quot;yes&amp;quot;}} という行をアンコメントしてデーモンを再起動することで有効にできます。&lt;br /&gt;
&lt;br /&gt;
Linux カーネルで利用できる overlayfs にはディストロによって複数のバージョンが存在します。バージョン 22 以前ではモジュールは &#039;overlayfs&#039; と呼ばれていましたが、新しいバージョン (23 以上) ではモジュールの名前は &#039;overlay&#039; になっています (&#039;fs&#039; が取られた)。Psd はあなたの使用しているカーネルで利用できる overlayfs を自動的に検出します。&lt;br /&gt;
&lt;br /&gt;
psd のバージョン 6.05 から、overlayfs モードを利用するには {{ic|/usr/bin/psd-overlay-helper}} に (パスワードプロンプトが表示されない) sudo でアクセスできるようにするか、あるいはグローバルな sudo 権限が必要になりました。{{ic|/etc/sudoers}} に以下の行を設定することでユーザーに権限が与えられます。root で {{ic|/usr/bin/visudo}} を実行して追加してください:&lt;br /&gt;
&lt;br /&gt;
 foo ALL=(ALL) NOPASSWD: /usr/bin/psd-overlay-helper&lt;br /&gt;
&lt;br /&gt;
上のプレビューモードのセクションの例を見れば、overlayfs を使うことでどれくらいメモリの使用量が節約できているのかわかります。&amp;quot;overlayfs size&amp;quot; とプロファイルごとの &amp;quot;profile size&amp;quot; の合計を比較してください。プロファイルに書き込まれているデータの量によって数字は変わってきますが、基本的に overlayfs のサイズはプロファイルのサイズより小さくなるはずです。&lt;br /&gt;
&lt;br /&gt;
=== /run/user/xxxx にプロファイルを乗せるのに大量のメモリが必要です。メモリの割り当てを変えることはできますか? ===&lt;br /&gt;
{{ic|/run/user}} の容量は {{ic|/etc/systemd/logind.conf}} の RuntimeDirectorySize ディレクティブによって制御されるのが通常です (詳しくは {{ic|logind.conf}} の man ページを見て下さい)。デフォルトでは、物理メモリの 10% が使われますが、メモリの使用量を増やすことができます。tmpfs は実際に使用する分だけしか消費しません。許容できる最大限のサイズを指定してください。&lt;br /&gt;
&lt;br /&gt;
=== overlayfs を有効にしたときに他のブラウザプロファイルディレクトリ &amp;quot;foo-back-ovfs&amp;quot; が作成されるのはなぜですか? ===&lt;br /&gt;
overlayfs は読み取り専用のベースコピー (いわゆる下層ディレクトリ) をプロファイルにマウントして、その上に新しいデータを管理することで機能します。読み取り専用ファイルシステムに再同期しないように、代わりにコピーが使われます。つまり overlayfs を使用することで、同期時間が高速になりメモリの使用量が減るのに対してホームディレクトリのディスク容量が使われるというトレードオフが成立しています。&lt;br /&gt;
&lt;br /&gt;
=== システムがクラッシュして同期がされませんでした。どうすればいいですか? ===&lt;br /&gt;
&lt;br /&gt;
運が良ければ、ブラウザプロファイルの&amp;quot;最新の問題がない&amp;quot;バックアップがファイルシステムに残っている可能性があります。{{ic|psd}} の再起動時に、プロファイルの tmpfs コピーのシンボリックリンクに問題がないか確認するチェックが行われます。問題がなかった場合、&#039;&#039;psd&#039;&#039; は&amp;quot;最新の問題ない&amp;quot;バックアップのスナップショットを作成します。これは &#039;&#039;psd&#039;&#039; によってデータが失われないようにするためのサニティーチェックであり、データが消失した場合、他に原因があります。&lt;br /&gt;
&lt;br /&gt;
{{Note|必要であれば、{{ic|$XDG_CONFIG_HOME/psd/psd.conf}} で {{ic|USE_BACKUPS}} 変数をアンコメントして &#039;no&#039; に設定することでスナップショット/バックアップ機能を完全に無効化できます。}}&lt;br /&gt;
&lt;br /&gt;
=== スナップショットはどこにありますか? ===&lt;br /&gt;
&lt;br /&gt;
ブラウザによります。ブラウザプロファイルと同じディレクトリにスナップショットが存在し、リカバリが作られた時刻のタイムスタンプが付けられています。例えば、chromium なら {{ic|~/.config/chromium-backup-crashrecovery-20130912_153310}} などになります。もちろん、日付_時間の部分は異なっているでしょう。&lt;br /&gt;
&lt;br /&gt;
=== スナップショットを復元するにはどうすればいいですか? ===&lt;br /&gt;
&lt;br /&gt;
* {{ic|psd}} を停止してください。&lt;br /&gt;
* tmpfs のブラウザプロファイルディレクトリのシンボリックリンクがないことを確認してください。存在する場合、&#039;&#039;psd&#039;&#039; は何らかの理由で適切に停止していません。&lt;br /&gt;
* プロファイルの&amp;quot;問題がある&amp;quot;コピーをバックアップに移動してください (やみくもに削除するのはやめましょう)。&lt;br /&gt;
* スナップショットディレクトリをブラウザが使用する名前にコピーしてください。&lt;br /&gt;
&lt;br /&gt;
Chromium の例:&lt;br /&gt;
 $ mv ~/.config/chromium ~/.config/chromium-bad&lt;br /&gt;
 $ cp -a ~/.config/chromium-backup-crashrecovery-20130912_153310 ~/.config/chromium&lt;br /&gt;
&lt;br /&gt;
Chromium を実行したらコピーしたバックアップスナップショットが使われます。全て問題ないようでしたら、ブラウザを閉じて psd を再起動してください。ここまできたら {{ic|~/.config/chromium-backup-crashrecovery-20130912_153310}} を削除してもかまいません。&lt;br /&gt;
&lt;br /&gt;
=== psd でスナップショットを自動的に削除できますか? ===&lt;br /&gt;
&amp;quot;clean&amp;quot; スイッチを付けて psd を実行すればスナップショットが削除されます。&lt;br /&gt;
&lt;br /&gt;
== サポート ==&lt;br /&gt;
&lt;br /&gt;
気づいたことやコメントなどは [https://bbs.archlinux.org/viewtopic.php?pid=1026974 議論スレッド] に投稿してください。&lt;br /&gt;
&lt;br /&gt;
== 他のディストロで PSD ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;psd&#039;&#039; は bash スクリプトなので、どんな Linux ディストロでも動作します。それぞれのディストリビューションでパッケージが用意されていたり、ユーザーが自分でインストールできるように方法が用意されています。インストール方法は [https://github.com/graysky2/profile-sync-daemon#installation-from-distro-packages 公式ウェブサイト] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* http://www.webupd8.org/2013/02/keep-your-browser-profiles-in-tmpfs-ram.html&lt;br /&gt;
* http://bernaerts.dyndns.org/linux/250-ubuntu-tweaks-ssd&lt;/div&gt;</summary>
		<author><name>Funcrab</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Profile-sync-daemon&amp;diff=22648</id>
		<title>Profile-sync-daemon</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Profile-sync-daemon&amp;diff=22648"/>
		<updated>2021-12-04T12:36:04Z</updated>

		<summary type="html">&lt;p&gt;Funcrab: /* overlayfs モードとは? */ ノートを記述&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ウェブブラウザ]]&lt;br /&gt;
[[Category:スクリプト]]&lt;br /&gt;
[[en:Profile-sync-daemon]]&lt;br /&gt;
[[ru:Profile-sync-daemon]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|Anything-sync-daemon}}&lt;br /&gt;
{{Related|Firefox}}&lt;br /&gt;
{{Related|Chromium}}&lt;br /&gt;
{{Related|Opera}}&lt;br /&gt;
{{Related|Pdnsd}}&lt;br /&gt;
{{Related|ソリッドステートドライブ}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
{{pkg|profile-sync-daemon}} (psd)はブラウザプロファイルを tmpfs で管理して定期的に物理ディスク (HDD/SSD) に同期させる、とても小さな擬似的なデーモンです。rsync でブラウザプロファイルの tmpfs のコピーとメディアのバックアップを同期させるという革新的な利用法によります。さらに、psd にはクラッシュからの復元機能が存在します。&lt;br /&gt;
&lt;br /&gt;
{{Note|場合によっては、デフォルトの構成ファイル {{ic|/usr/share/psd/psd.conf}} のアップストリームが更新/変更されます。 ユーザーコピー  {{ic|$XDG_CONFIG_HOME/psd/psd.conf}} をそれと比較する必要があります。 Arch Linux の pacman ではユーザーにこれを行うように通知する必要があります。 他のパッケージマネージャーやディストリビューションのユーザーは、定期的にファイルを手動で、変更部分を差し替える必要があります。}}&lt;br /&gt;
&lt;br /&gt;
{{Note|psd はブラウザのキャッシュを RAM にコピーするため、 [https://www.reddit.com/r/archlinux/comments/4l7gvm/very_slow_when_login/d3lrx9y/ login] の速度が低下する可能性があります。}}&lt;br /&gt;
&lt;br /&gt;
== psd 設計目標とメリット ==&lt;br /&gt;
&lt;br /&gt;
#透過的に利用できる&lt;br /&gt;
#物理ドライブの損耗が減る&lt;br /&gt;
#速度&lt;br /&gt;
&lt;br /&gt;
プロファイルやブラウザキャッシュなどを [[tmpfs]] (RAM ディスク) に再配置して、ブラウザの使用に関連する I/O を物理ドライブから RAM に変更することにより、物理ドライブの消耗を抑えつつブラウザの速度や反応性を劇的に高められます。&lt;br /&gt;
&lt;br /&gt;
{{Note|Chrome/Chromium, Firefox (v21 以上), Midori, Rekonq などのブラウザはプロファイルのディレクトリとは別個にキャッシュディレクトリを保存しています。この挙動を変更するのは profile-sync-daemon の射程外です。Chromium の [[Chromium 設定#tmpfs にキャッシュ]]セクションや [[Firefox Ramdisk]] 記事を参照して対処することが推奨されます。}}&lt;br /&gt;
&lt;br /&gt;
== セットアップとインストール ==&lt;br /&gt;
&lt;br /&gt;
{{Pkg|profile-sync-daemon}} パッケージをインストールします。&lt;br /&gt;
&lt;br /&gt;
=== 設定ファイルの編集 ===&lt;br /&gt;
psd を初めて実行したときに、全ての設定が記述された {{ic|$XDG_CONFIG_HOME/psd/psd.conf}} が作成されます (以下、このファイルを設定ファイルと呼称します)。&lt;br /&gt;
&lt;br /&gt;
{{Note|psd を実行している間に設定ファイルを編集した場合、変更が適用されるのは init サービスから psd を再起動したときです。}}&lt;br /&gt;
&lt;br /&gt;
 $ psd&lt;br /&gt;
 First time running psd so please edit /home/facade/.config/psd/psd.conf to your liking and run again.&lt;br /&gt;
&lt;br /&gt;
* 任意で overlayfs を利用することで同期を高速化させてメモリの使用量を減らすことができます。USE_OVERLAYFS 変数を設定してください。このオプションを使う場合、{{ic|/usr/bin/psd-overlay-helper}} に sudo 権限が必要で、カーネルが overlayfs バージョン22以上に対応していなければなりません。この機能の詳細は下の FAQ を見て下さい。&lt;br /&gt;
* 任意で BROWSERS 行をアンコメントして tmpfs に同期するブラウザを指定することができます。BROWSERS がコメントアウトされている場合 (デフォルト)、サポートしているブラウザ全てのプロファイルが同期されます。&lt;br /&gt;
* 任意でクラッシュしたときに復帰するためのスナップショットを無効化することができます (非推奨)。USE_BACKUPS 変数で設定します。&lt;br /&gt;
&lt;br /&gt;
例:  Chromium, Opera, Midori をインストールしていて Chromium と Opera だけを tmpfs に同期する (Midori はバックアップのブラウザとしてたまにしか使わない) という場合:&lt;br /&gt;
&lt;br /&gt;
 # List browsers separated by spaces to include in the sync. Useful if you do not&lt;br /&gt;
 # wish to have all possible browser profiles sync&#039;ed which is the default if&lt;br /&gt;
 # this variable is left commented.&lt;br /&gt;
 #&lt;br /&gt;
 # Possible values:&lt;br /&gt;
 #  chromium&lt;br /&gt;
 #  chromium-dev&lt;br /&gt;
 #  conkeror.mozdev.org&lt;br /&gt;
 #  epiphany&lt;br /&gt;
 #  firefox&lt;br /&gt;
 #  firefox-trunk&lt;br /&gt;
 #  google-chrome&lt;br /&gt;
 #  google-chrome-beta&lt;br /&gt;
 #  google-chrome-unstable&lt;br /&gt;
 #  heftig-aurora&lt;br /&gt;
 #  icecat&lt;br /&gt;
 #  inox&lt;br /&gt;
 #  luakit&lt;br /&gt;
 #  midori&lt;br /&gt;
 #  opera&lt;br /&gt;
 #  opera-beta&lt;br /&gt;
 #  opera-developer&lt;br /&gt;
 #  opera-legacy&lt;br /&gt;
 #  otter-browser&lt;br /&gt;
 #  qupzilla&lt;br /&gt;
 #  qutebrowser&lt;br /&gt;
 #  palemoon&lt;br /&gt;
 #  rekonq&lt;br /&gt;
 #  seamonkey&lt;br /&gt;
 #  surf&lt;br /&gt;
 #  vivaldi&lt;br /&gt;
 #  vivaldi-snapshot&lt;br /&gt;
 #&lt;br /&gt;
 BROWSERS=&amp;quot;chromium opera&amp;quot;&lt;br /&gt;
&lt;br /&gt;
psd のバージョン 5.54 から、overlayfs がネイティブでサポートされるようになりました。この機能を使うには 3.18.0 以上の Linux カーネルが必要です。&lt;br /&gt;
&lt;br /&gt;
== サポートしているブラウザ ==&lt;br /&gt;
&lt;br /&gt;
現在、以下のブラウザを自動で検出して管理します:&lt;br /&gt;
* [[Chromium]]&lt;br /&gt;
* {{AUR|chromium-dev}}&lt;br /&gt;
* {{AUR|conkeror-git}}&lt;br /&gt;
* [[Epiphany]]&lt;br /&gt;
* [[Firefox]] (安定版・ベータ版・Aurora 版など全てをサポート)&lt;br /&gt;
* {{AUR|google-chrome}}&lt;br /&gt;
* {{AUR|google-chrome-beta}}&lt;br /&gt;
* {{AUR|google-chrome-dev}}&lt;br /&gt;
* [https://bbs.archlinux.org/viewtopic.php?id=117157 heftig バージョンの Aurora]: Arch Linux 専用ブラウザ&lt;br /&gt;
* {{AUR|icecat}}&lt;br /&gt;
* [[Luakit]]&lt;br /&gt;
* [[Midori]]&lt;br /&gt;
* [[Opera]]&lt;br /&gt;
* [[Otter Browser]]&lt;br /&gt;
* [[Qutebrowser]]&lt;br /&gt;
* {{AUR|palemoon}} / {{AUR|palemoon-bin}}&lt;br /&gt;
* {{Pkg|seamonkey}}&lt;br /&gt;
* {{AUR|surf}}&lt;br /&gt;
* [[Vivaldi]]&lt;br /&gt;
&lt;br /&gt;
== psd を使う ==&lt;br /&gt;
&lt;br /&gt;
=== プレビューモード (parse) ===&lt;br /&gt;
&lt;br /&gt;
&#039;parse&#039; オプションを使うことで {{ic|$XDG_CONFIG_HOME/psd/psd.conf}} に基づいて &#039;&#039;psd&#039;&#039; が何を行うのかを正確に表示することができます。次のように呼び出して下さい:&lt;br /&gt;
 $ psd p&lt;br /&gt;
 Profile-sync-daemon v6.44&lt;br /&gt;
 &lt;br /&gt;
  Systemd service: active&lt;br /&gt;
  resync-timer: active&lt;br /&gt;
  sync on sleep: enabled&lt;br /&gt;
  use overlayfs: enabled&lt;br /&gt;
 &lt;br /&gt;
 Psd will manage the following per /home/facade/.config/psd/psd.conf settings:&lt;br /&gt;
 &lt;br /&gt;
  browser/psname:  chromium/chromium&lt;br /&gt;
  owner/group id:  facade/100&lt;br /&gt;
  sync target:     /home/facade/.config/chromium&lt;br /&gt;
  tmpfs dir:       /run/user/1000/facade-chromium&lt;br /&gt;
  profile size:    93M&lt;br /&gt;
  overlayfs size:  39M&lt;br /&gt;
  recovery dirs:   2 &amp;lt;- delete with the c option&lt;br /&gt;
   dir path/size:  /home/facade/.config/chromium-backup-crashrecovery-20150117_171359 (92M)&lt;br /&gt;
   dir path/size:  /home/facade/.config/chromium-backup-crashrecovery-20150119_112204 (93M)&lt;br /&gt;
 &lt;br /&gt;
  browser/psname:  firefox/firefox&lt;br /&gt;
  owner/group id:  facade/100&lt;br /&gt;
  sync target:     /mnt/data/docs/facade/mozilla/firefox/f8cv8bfu.default&lt;br /&gt;
  tmpfs dir:       /run/user/1000/facade-firefox-f8cv8bfu.default&lt;br /&gt;
  profile size:    145M&lt;br /&gt;
  overlayfs size:  13M&lt;br /&gt;
  recovery dirs:   none&lt;br /&gt;
&lt;br /&gt;
上記の通り、特定のブラウザが BROWSERS 行に設定されていない場合、&#039;&#039;psd&#039;&#039; は指定されたユーザーのサポートされているプロファイル全てを同期します。&lt;br /&gt;
&lt;br /&gt;
=== クリーンモード ===&lt;br /&gt;
クリーンモードを使うと保存されているスナップショットを全て削除します。削除しても問題ない場合にのみ実行してください。&lt;br /&gt;
&lt;br /&gt;
 $ psd c&lt;br /&gt;
 &lt;br /&gt;
 Profile-sync-daemon v6.03 on Arch Linux.&lt;br /&gt;
 &lt;br /&gt;
 Deleting 2 crashrecovery dirs for profile /home/facade/.config/chromium&lt;br /&gt;
  /home/facade/.config/chromium-backup-crashrecovery-20150117_171359&lt;br /&gt;
  /home/facade/.config/chromium-backup-crashrecovery-20150119_112204&lt;br /&gt;
&lt;br /&gt;
=== psd の起動と停止 ===&lt;br /&gt;
&lt;br /&gt;
psd のバージョン 6.x シリーズのリリースから、公式でサポートされる init システムは systemd だけになりました。Psd には起動と停止を行うための systemd ユーザーサービスが付属しています (psd.service)。さらに、1時間毎に tmpfs からディスクに再同期させる resync-timer も含まれています。resync-timer は psd.service によって自動的に起動するため、あなたがタイマーを起動させる必要はありません。&lt;br /&gt;
&lt;br /&gt;
systemd のユーザーモードの使い方がよくわからない場合、以下のコマンドで psd サービスを有効化できます:&lt;br /&gt;
&lt;br /&gt;
 $ systemctl --user [option] psd.service&lt;br /&gt;
&lt;br /&gt;
次のオプションが利用できます: {{ic|start}} {{ic|stop}} {{ic|enable}} {{ic|disable}} {{ic|status}}。&lt;br /&gt;
&lt;br /&gt;
===サポートしているディストリビューション===&lt;br /&gt;
&lt;br /&gt;
psd は systemd サービスが付いているただの bash スクリプトなので、systemd が動作している Linux ならどこでも動作します。公式パッケージとして提供しているディストリビューションが数多くあり、psd をインストールする方法をユーザーがメンテナンスしている場合もあります。ソースから psd をビルドすることも可能です。利用できるパッケージやインストールの手順については公式ウェブサイトを見て下さい。&lt;br /&gt;
&lt;br /&gt;
=== もっと頻繁に同期する (任意) ===&lt;br /&gt;
&lt;br /&gt;
パッケージには一時間ごとに同期を行うタイマーが入っています。任意で、[[Systemd#ユニットファイルの編集|systemd ユニットを編集]]することでこの挙動を再定義することが可能です。以下の例は10分毎に同期させるようにタイマーを変更します:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/systemd/user/psd-resync.timer.d/frequency.conf|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Timer for Profile-sync-daemon&lt;br /&gt;
&lt;br /&gt;
[Timer]&lt;br /&gt;
OnUnitActiveSec=&lt;br /&gt;
OnUnitActiveSec=10m&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
オプションについては {{man|5|systemd.timer}} を見て下さい。&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
&lt;br /&gt;
 overlayfs モードとは? ===&lt;br /&gt;
&lt;br /&gt;
{{Note|Linuxカーネルで利用可能な overlayfs にはいくつかのバージョンがあり、様々なディストリビューションで運用されています。バージョン22以下では、「overlayfs」と呼ばれるモジュールが使用されていますが、新しいバージョン（23以上）では、「overlay」と呼ばれるモジュールが使用されています（新しいバージョンでは、「fs」がないことに注意してください）。Psdは、カーネルが利用可能な overlayfs を使用するように設定されていれば、自動的にそれを検出します。}}&lt;br /&gt;
&lt;br /&gt;
Overlayfs は Linux カーネル 3.18.0 でメインラインに取り込まれたシンプルなユニオンファイルシステムです。psd バージョン 5.54 から、overlayfs を使うことで psd の tmpfs 領域のメモリフットプリントを減らしたり、同期を高速化させることができるようになっています。オーバーレイマウントでは、プロファイル全体ではなく、変更が加えられたデータだけが書き出されるというところがミソです。overlayfs モードで実行した場合、psd がデフォルトで使用する同一の復帰機能も有効になります。Overlayfs モードは {{ic|$XDG_CONFIG_HOME/psd/psd.conf}} の {{ic|1=USE_OVERLAYFS=&amp;quot;yes&amp;quot;}} という行をアンコメントしてデーモンを再起動することで有効にできます。&lt;br /&gt;
&lt;br /&gt;
Linux カーネルで利用できる overlayfs にはディストロによって複数のバージョンが存在します。バージョン 22 以前ではモジュールは &#039;overlayfs&#039; と呼ばれていましたが、新しいバージョン (23 以上) ではモジュールの名前は &#039;overlay&#039; になっています (&#039;fs&#039; が取られた)。Psd はあなたの使用しているカーネルで利用できる overlayfs を自動的に検出します。&lt;br /&gt;
&lt;br /&gt;
psd のバージョン 6.05 から、overlayfs モードを利用するには {{ic|/usr/bin/psd-overlay-helper}} に (パスワードプロンプトが表示されない) sudo でアクセスできるようにするか、あるいはグローバルな sudo 権限が必要になりました。{{ic|/etc/sudoers}} に以下の行を設定することでユーザーに権限が与えられます。root で {{ic|/usr/bin/visudo}} を実行して追加してください:&lt;br /&gt;
&lt;br /&gt;
 foo ALL=(ALL) NOPASSWD: /usr/bin/psd-overlay-helper&lt;br /&gt;
&lt;br /&gt;
上のプレビューモードのセクションの例を見れば、overlayfs を使うことでどれくらいメモリの使用量が節約できているのかわかります。&amp;quot;overlayfs size&amp;quot; とプロファイルごとの &amp;quot;profile size&amp;quot; の合計を比較してください。プロファイルに書き込まれているデータの量によって数字は変わってきますが、基本的に overlayfs のサイズはプロファイルのサイズより小さくなるはずです。&lt;br /&gt;
&lt;br /&gt;
=== /run/user/xxxx にプロファイルを乗せるのに大量のメモリが必要です。メモリの割り当てを変えることはできますか? ===&lt;br /&gt;
{{ic|/run/user}} の容量は {{ic|/etc/systemd/logind.conf}} の RuntimeDirectorySize ディレクティブによって制御されるのが通常です (詳しくは {{ic|logind.conf}} の man ページを見て下さい)。デフォルトでは、物理メモリの 10% が使われますが、メモリの使用量を増やすことができます。tmpfs は実際に使用する分だけしか消費しません。許容できる最大限のサイズを指定してください。&lt;br /&gt;
&lt;br /&gt;
=== overlayfs を有効にしたときに他のブラウザプロファイルディレクトリ &amp;quot;foo-back-ovfs&amp;quot; が作成されるのはなぜですか? ===&lt;br /&gt;
overlayfs は読み取り専用のベースコピー (いわゆる下層ディレクトリ) をプロファイルにマウントして、その上に新しいデータを管理することで機能します。読み取り専用ファイルシステムに再同期しないように、代わりにコピーが使われます。つまり overlayfs を使用することで、同期時間が高速になりメモリの使用量が減るのに対してホームディレクトリのディスク容量が使われるというトレードオフが成立しています。&lt;br /&gt;
&lt;br /&gt;
=== システムがクラッシュして同期がされませんでした。どうすればいいですか? ===&lt;br /&gt;
&lt;br /&gt;
運が良ければ、ブラウザプロファイルの&amp;quot;最新の問題がない&amp;quot;バックアップがファイルシステムに残っている可能性があります。{{ic|psd}} の再起動時に、プロファイルの tmpfs コピーのシンボリックリンクに問題がないか確認するチェックが行われます。問題がなかった場合、&#039;&#039;psd&#039;&#039; は&amp;quot;最新の問題ない&amp;quot;バックアップのスナップショットを作成します。これは &#039;&#039;psd&#039;&#039; によってデータが失われないようにするためのサニティーチェックであり、データが消失した場合、他に原因があります。&lt;br /&gt;
&lt;br /&gt;
{{Note|必要であれば、{{ic|$XDG_CONFIG_HOME/psd/psd.conf}} で {{ic|USE_BACKUPS}} 変数をアンコメントして &#039;no&#039; に設定することでスナップショット/バックアップ機能を完全に無効化できます。}}&lt;br /&gt;
&lt;br /&gt;
=== スナップショットはどこにありますか? ===&lt;br /&gt;
&lt;br /&gt;
ブラウザによります。ブラウザプロファイルと同じディレクトリにスナップショットが存在し、リカバリが作られた時刻のタイムスタンプが付けられています。例えば、chromium なら {{ic|~/.config/chromium-backup-crashrecovery-20130912_153310}} などになります。もちろん、日付_時間の部分は異なっているでしょう。&lt;br /&gt;
&lt;br /&gt;
=== スナップショットを復元するにはどうすればいいですか? ===&lt;br /&gt;
&lt;br /&gt;
* {{ic|psd}} を停止してください。&lt;br /&gt;
* tmpfs のブラウザプロファイルディレクトリのシンボリックリンクがないことを確認してください。存在する場合、&#039;&#039;psd&#039;&#039; は何らかの理由で適切に停止していません。&lt;br /&gt;
* プロファイルの&amp;quot;問題がある&amp;quot;コピーをバックアップに移動してください (やみくもに削除するのはやめましょう)。&lt;br /&gt;
* スナップショットディレクトリをブラウザが使用する名前にコピーしてください。&lt;br /&gt;
&lt;br /&gt;
Chromium の例:&lt;br /&gt;
 $ mv ~/.config/chromium ~/.config/chromium-bad&lt;br /&gt;
 $ cp -a ~/.config/chromium-backup-crashrecovery-20130912_153310 ~/.config/chromium&lt;br /&gt;
&lt;br /&gt;
Chromium を実行したらコピーしたバックアップスナップショットが使われます。全て問題ないようでしたら、ブラウザを閉じて psd を再起動してください。ここまできたら {{ic|~/.config/chromium-backup-crashrecovery-20130912_153310}} を削除してもかまいません。&lt;br /&gt;
&lt;br /&gt;
=== psd でスナップショットを自動的に削除できますか? ===&lt;br /&gt;
&amp;quot;clean&amp;quot; スイッチを付けて psd を実行すればスナップショットが削除されます。&lt;br /&gt;
&lt;br /&gt;
== サポート ==&lt;br /&gt;
&lt;br /&gt;
気づいたことやコメントなどは [https://bbs.archlinux.org/viewtopic.php?pid=1026974 議論スレッド] に投稿してください。&lt;br /&gt;
&lt;br /&gt;
== 他のディストロで PSD ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;psd&#039;&#039; は bash スクリプトなので、どんな Linux ディストロでも動作します。それぞれのディストリビューションでパッケージが用意されていたり、ユーザーが自分でインストールできるように方法が用意されています。インストール方法は [https://github.com/graysky2/profile-sync-daemon#installation-from-distro-packages 公式ウェブサイト] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* http://www.webupd8.org/2013/02/keep-your-browser-profiles-in-tmpfs-ram.html&lt;br /&gt;
* http://bernaerts.dyndns.org/linux/250-ubuntu-tweaks-ssd&lt;/div&gt;</summary>
		<author><name>Funcrab</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Btrfs&amp;diff=22647</id>
		<title>Btrfs</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Btrfs&amp;diff=22647"/>
		<updated>2021-12-04T12:10:21Z</updated>

		<summary type="html">&lt;p&gt;Funcrab: /* 圧縮 */ zstdのコマンド関連を記述した&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ファイルシステム]]&lt;br /&gt;
[[en:Btrfs]]&lt;br /&gt;
[[fr:Btrfs]]&lt;br /&gt;
[[zh-hans:Btrfs]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|ファイルシステム}}&lt;br /&gt;
{{Related|mkinitcpio}}&lt;br /&gt;
{{Related|Snapper}}&lt;br /&gt;
{{Related|dm-crypt/システム全体の暗号化#Btrfs サブボリュームとスワップ}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:ja:Btrfs]] より:&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Btrfs (B-tree File System: 読み方は &amp;quot;バター FS&amp;quot;, &amp;quot;ベター FS&amp;quot;, &amp;quot;B木 FS&amp;quot;, &amp;quot;ビーティーアール FS&amp;quot; など) は Linux 向けの実験的なコピーオンライトのファイルシステムで GPL でライセンスされています。Oracle Corporation によって2007年から開発が開始されました。2014年8月にはディスク上のフォーマットが固まっています。&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://btrfs.wiki.kernel.org/index.php/Main_Page Btrfs Wiki] より:&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Btrfs は Linux 用の全く新しいコピーオンライト (COW) のファイルシステムです。先進的な機能を実装することを目指しつつ、障害耐性を持ち簡単に管理できることに焦点が置かれています。Btrfs は Oracle, Red Hat, Fujitsu, Intel, SUSE, STRATO やその他多くの人々によって共同で開発されており GPL でライセンスされていて誰でも貢献できるように開かれています。&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Warning|Btrfs には実験的な機能が存在します。詳しくは Btrfs Wiki の [https://btrfs.wiki.kernel.org/index.php/Status Status] や [https://btrfs.wiki.kernel.org/index.php/FAQ#Is_btrfs_stable.3F Is Btrfs stable?]、[https://btrfs.wiki.kernel.org/index.php/Getting_started Getting started] などを見てください。[[#既知の問題]]も参照。}}&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
Btrfs はデフォルトのカーネルに含まれており、ツール ({{pkg|btrfs-progs}}) は[[公式リポジトリ]]から入手できます。[[GRUB]], [[mkinitcpio]], [[Syslinux]] には Btrfs のサポートがあるので追加の設定は必要ありません。&lt;br /&gt;
&lt;br /&gt;
=== 追加のパッケージ ===&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|btrfs-progs}} には Btrfs ファイルシステムのエラーを修正できるツール &#039;&#039;btrfsck&#039;&#039; が含まれています。&lt;br /&gt;
* {{AUR|btrfs-progs-git}} はナイトリービルドです。&lt;br /&gt;
&lt;br /&gt;
{{Tip|Btrfs を効率的に動かす提案が [https://btrfs.wiki.kernel.org/index.php/Getting_started Btrfs Wiki Getting Started] に載っています。}}&lt;br /&gt;
&lt;br /&gt;
== Btrfs の一般的な管理 ==&lt;br /&gt;
&lt;br /&gt;
=== 新しいファイルシステムを作成する ===&lt;br /&gt;
&lt;br /&gt;
Btrfs ファイルシステムは新規作成することも既存のファイルシステムから変換することも可能です。&lt;br /&gt;
&lt;br /&gt;
パーティションをフォーマットするには次を実行してください:&lt;br /&gt;
&lt;br /&gt;
 # mkfs.btrfs -L &#039;&#039;mylabel&#039;&#039; /dev/&#039;&#039;partition&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Note|1=2013年11月の[https://git.kernel.org/cgit/linux/kernel/git/mason/btrfs-progs.git/commit/?id=c652e4efb8e2dd76ef1627d8cd649c6af5905902 この] コミット以降、Btrfs のデフォルトのブロックサイズは 16KB になっています。}}&lt;br /&gt;
&lt;br /&gt;
大きいブロックサイズをデータ・メタデータに使うには、下の例のように {{ic|-n}} スイッチを使って {{ic|nodesize}} の値を指定して下さい (例: 16KB ブロック):&lt;br /&gt;
&lt;br /&gt;
 # mkfs.btrfs -L &#039;&#039;mylabel&#039;&#039; -n 16k /dev/&#039;&#039;partition&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
複数のデバイスを入力して RAID を作成することもできます。サポートされている RAID レベルは RAID 0, RAID 1, RAID 10 などです。デフォルトではメタデータはミラーされデータはストライピングされます。より多くの情報が必要な場合、[https://btrfs.wiki.kernel.org/index.php/Using_Btrfs_with_Multiple_Devices Using Btrfs with Multiple Devices] を見てください。&lt;br /&gt;
&lt;br /&gt;
 # mkfs.btrfs [options] /dev/&amp;lt;part1&amp;gt; /dev/&amp;lt;part2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Tip|ミラーリングをしない場合、&#039;&#039;raid0&#039;&#039; オプションを使って下さい: {{ic|# mkfs.btrfs -d raid0 /dev/&#039;&#039;part1&#039;&#039; /dev/&#039;&#039;part2&#039;&#039;}}。}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|Btrfs の RAID 5 と RAID 6 モードには致命的な欠点があります。壊れても良いデータ以外でテストすべきではありません。現状については https://btrfs.wiki.kernel.org/index.php/RAID56 を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
=== 使用済み・空き容量を表示する ===&lt;br /&gt;
&lt;br /&gt;
{{ic|/usr/bin/df}} などの linux の一般的なユーザー空間ツールは Btrfs パーティションの空き容量について間違った報告をします。なぜならメタデータによって使用される予約済みのスペースを考慮しないからです。btrfs パーティションに問い合わせるときは {{ic|/usr/bin/btrfs}} を使うのが推奨されています。以下は {{ic|df -h}} を使った時と、{{ic|btrfs filesystem df}} を使った時の出力の例です:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ df -h /|&lt;br /&gt;
Filesystem      Size  Used Avail Use% Mounted on&lt;br /&gt;
/dev/sda3       119G  3.0G  116G   3% /&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{hc|$ btrfs filesystem df /|2=&lt;br /&gt;
Data: total=3.01GB, used=2.73GB&lt;br /&gt;
System: total=4.00MB, used=16.00KB&lt;br /&gt;
Metadata: total=1.01GB, used=181.83MB&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|df -h}} は 3.0GB 使用されているとしているのに対して {{ic|btrfs filesystem df}} はデータは 2.73GB だと報告しているのに気づいて下さい。これは Btrfs がスペースをプールに割り当てているためです。本当のディスク使用量は3つの &#039;used&#039; を合計した値であり、{{ic|df -h}} による 3.0GB よりかは下回ります。&lt;br /&gt;
&lt;br /&gt;
{{Note|1=カーネル 3.15 以上で {{ic|btrfs filesystem df}} の出力にタイプ {{ic|unknown}} のエントリが表示される場合、これは表示のバグです。[http://thread.gmane.org/gmane.comp.file-systems.btrfs/34419 このパッチ] によって、このエントリは一種のバッファである GlobalReserve を意味しています。このエントリは RAID では {{ic|unknown, single}} として表示され re-balance することができません。}}&lt;br /&gt;
&lt;br /&gt;
他にも大まかに使用容量を読み出すコマンドとして {{ic|btrfs filesystem show}} が使用できます:&lt;br /&gt;
&lt;br /&gt;
 # btrfs filesystem show /dev/sda3&lt;br /&gt;
&lt;br /&gt;
空き容量の情報を取得する最新のコマンドは {{ic|btrfs filesystem usage}} です:&lt;br /&gt;
&lt;br /&gt;
 # btrfs filesystem usage&lt;br /&gt;
&lt;br /&gt;
{{Note|1={{ic|btrfs filesystem usage}} コマンドは RAID レベルが {{ic|RAID5/RAID6}} だと上手く機能しません。}}&lt;br /&gt;
&lt;br /&gt;
== 既知の問題 ==&lt;br /&gt;
&lt;br /&gt;
試行する前に知っておくべき制限事項が存在します。&lt;br /&gt;
&lt;br /&gt;
=== 暗号化 ===&lt;br /&gt;
&lt;br /&gt;
Btrfs にはビルトインの暗号化サポートはありません(将来実装される予定です)が、&amp;lt;code&amp;gt;mkfs.btrfs&amp;lt;/code&amp;gt; をする前にパーティションを暗号化することができます。[[dm-crypt]] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
既に btrfs ファイルシステムを作成してしまっている場合、[[EncFS]] や [[TrueCrypt]] などを使うことができます。ただし btrfs のいくつかの機能が使えなくなるかもしれません。&lt;br /&gt;
&lt;br /&gt;
=== スワップファイル ===&lt;br /&gt;
&lt;br /&gt;
Btrfs の [[スワップファイル]] は Linux カーネル5.0 以降でサポートされています。[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=ed46ff3d423780fa5173b38a844bf0fdb210a2a7] スワップファイルを初期化する適切な方法は、最初にファイルをホストする非圧縮、非スナップショットのサブボリュームを作成し、そのディレクトリに &#039;&#039;cd&#039;&#039; してから、長さゼロのファイルを作成し、{{ic|No_COW}} を設定することです。 属性を [https://wiki.archlinux.jp/index.php/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E3%83%91%E3%83%BC%E3%83%9F%E3%83%83%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%A8%E5%B1%9E%E6%80%A7#chattr_.E3.81.A8_lsattr chattr] で指定し、圧縮が無効になっていることを確認します。&lt;br /&gt;
&lt;br /&gt;
 # cd &#039;&#039;/path/to/swapfile&#039;&#039;&lt;br /&gt;
 # truncate -s 0 ./swapfile&lt;br /&gt;
 # chattr +C ./swapfile&lt;br /&gt;
 # btrfs property set ./swapfile compression none&lt;br /&gt;
&lt;br /&gt;
詳細な設定については、 [https://wiki.archlinux.jp/index.php/%E3%82%B9%E3%83%AF%E3%83%83%E3%83%97#.E3.82.B9.E3.83.AF.E3.83.83.E3.83.97.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB.E3.81.AE.E4.BD.9C.E6.88.90 スワップファイルの作成] を参照してください。スワップファイルへの休止状態の構成については、[https://wiki.archlinux.org/index.php/Power_management/Suspend_and_hibernate#Hibernation_into_swap_file_on_Btrfs Hibernation into swap file on Btrfs]で説明されています。&lt;br /&gt;
&lt;br /&gt;
{{Note|1=Linux カーネル5.0 以降、 Btrfs にはネイティブスワップファイルのサポートがありますが、いくつかの制限があります。&lt;br /&gt;
* スワップファイルをスナップショットサブボリュームに置くことはできません。適切な手順は、スワップファイルを配置する新しいサブボリュームを作成することです。&lt;br /&gt;
* 複数のデバイスにまたがるファイルシステム上のスワップファイルはサポートされていません。 [https://btrfs.wiki.kernel.org/index.php/FAQ#Does_btrfs_support_swap_files.3F Btrfs wiki: Does btrfs support swap files?] および [https://bbs.archlinux.org/viewtopic.php?pid=1849371#p1849371 Arch forums discussion]。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 機能 ==&lt;br /&gt;
&lt;br /&gt;
様々な機能が備わっていて、それぞれ設定が可能です。&lt;br /&gt;
&lt;br /&gt;
=== クォータ ===&lt;br /&gt;
&lt;br /&gt;
{{warning|Qgroup はまだ安定状態ではなくサブボリュームのスナップショットとクォータを組み合わせると操作によってパフォーマンスに問題をきたします (スナップショットの削除など)。さらに [https://btrfs.wiki.kernel.org/index.php/Quota_support#Known_issues 既知の問題] が存在しています。}}&lt;br /&gt;
&lt;br /&gt;
Btrfs におけるクォータのサポートはクォータグループ (qgroup) を利用してサブボリュームレベルで実装されています: 各サブボリュームにはデフォルトで &#039;&#039;0/&amp;lt;subvolume id&amp;gt;&#039;&#039; という形式でクォータグループが割り当てられています。必要であればクォータグループを作成することもできます。&lt;br /&gt;
&lt;br /&gt;
クォータグループを使うにはまずクォータを有効にする必要があります:&lt;br /&gt;
&lt;br /&gt;
 # btrfs quota enable &amp;lt;path&amp;gt;&lt;br /&gt;
&lt;br /&gt;
上記のコマンドを実行してから新しいサブボリュームを作成すると、グループによって制御が可能になります。既存のサブボリュームでも制御を行いたい場合、クォータを有効にしてから、&#039;&#039;&amp;lt;subvolume id&amp;gt;&#039;&#039; を使ってサブボリュームごとにクォータグループを作成して再スキャンしてください:&lt;br /&gt;
&lt;br /&gt;
 # btrfs subvolume list &amp;lt;path&amp;gt; | cut -d&#039; &#039; -f2 | xargs -I{} -n1 btrfs qgroup create 0/{} &amp;lt;path&amp;gt;&lt;br /&gt;
 # btrfs quota rescan &amp;lt;path&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Btrfs のクォータグループはツリー構造になっていて、サイズ制限はクォータグループごとに設定し、ツリーに属しているサブボリュームに制限が課せられます。&lt;br /&gt;
&lt;br /&gt;
クォータグループで設定できる制限は合計データ使用量・非共有のデータ使用量・圧縮データ使用量、あるいはそれらを組み合わせたものです。元のボリュームファイルを削除してコピーを残す場合、他のクォータグループの非共有制限が変わるため、ファイルのコピーや削除で制限に抵触する可能性があります。例えば、新しいスナップショットが元のサブボリュームの全てのブロックと同じデータを持っている場合、どちらかのサブボリュームだけで共通データを削除するともう片方のサブボリュームの制限に引っかかる可能性があります。&lt;br /&gt;
&lt;br /&gt;
クォータグループに制限を設定するには、{{ic|btrfs qgroup limit}} コマンドを使います。合計使用量の制限や非共有制限 ({{ic|-e}}) または圧縮制限 ({{ic|-c}}) が設定できます。ファイルシステムの特定のパスにおける使用量や制限を表示するには:&lt;br /&gt;
&lt;br /&gt;
 # btrfs qgroup show -reF &amp;lt;path&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== コミット間隔の設定 ===&lt;br /&gt;
&lt;br /&gt;
ファイルシステムにどのデータを書き込むかは BTRFS とシステム全体の設定によって決められます。BTRFS のデフォルトでは30秒のチェックポイントインターバルでファイルシステムに新しいデータが送られます。この間隔は[[#チェックポイントインターバル|後述]]のマウントオプションで調整可能です。&lt;br /&gt;
&lt;br /&gt;
システム全体の設定もインターバルに影響を与えます。それには /proc/sys/vm/* 以下のファイルも含まれており、この wiki では扱っていません。Documentation/sysctl/vm.txt にこれらのファイルに関するカーネルドキュメントがあります。&lt;br /&gt;
&lt;br /&gt;
=== コピーオンライト (CoW) ===&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、いついかなる時も、全てのファイルに対して btrfs は CoW を行います: 今までに存在していなかったファイルを書き込もうとした場合、データは空き領域に書き込まれて、ファイルシステムのメタデータブロックが CoW されます。&amp;quot;通常の&amp;quot;ファイルシステムでは、ファイルの一部を上書きした場合、置換先のデータに直接上書きがなされます。CoW ファイルシステムでは、新しいデータはディスクの空き容量に書き込まれて、それから、新しいデータを参照するようにファイルのメタデータが変更されます。元のデータはどこからも参照されなくなって始めて削除されます。&lt;br /&gt;
&lt;br /&gt;
CoW にはアドバンテージがありますが、大きなファイルに小さなランダム書き込みを行うときのパフォーマンスについてはあまり良い影響を与えません。たとえ&amp;quot;コピー&amp;quot;を行わないときでもファイルを断片化させるからです。データベースファイルや仮想マシンイメージについては CoW を無効化することが推奨されます。&lt;br /&gt;
&lt;br /&gt;
CoW を無効にする方法の一つは &amp;quot;nodatacow&amp;quot; オプションを使ってマウントすることです。しかしながら、これではファイルシステム全体で CoW を無効にすることになります。&lt;br /&gt;
&lt;br /&gt;
{{Note|{{ic|nodatacow}} は新規作成されたファイルにのみ影響します。既存のファイルにはまだ CoW が行われる可能性があります。}}&lt;br /&gt;
&lt;br /&gt;
ファイルやディレクトリ単体で CoW を無効化するには、次のコマンドを使って下さい:&lt;br /&gt;
&lt;br /&gt;
 $ chattr +C &amp;lt;/dir/file&amp;gt;&lt;br /&gt;
&lt;br /&gt;
以上のコマンドで CoW が無効化されるのはファイルの参照が一つしかない操作の場合に限られます。複数の参照がある場合 (例: {{ic|1=cp --reflink=always}} を使用したりファイルシステムのスナップショットが存在する場合)、CoW は依然として実行されます。&lt;br /&gt;
&lt;br /&gt;
{{Note|chattr の man ページより: btrfs では、 &#039;C&#039; フラグは新しい、または空のファイルにセットしなければなりません。既にデータブロックを持つファイルにフラグを設定した場合、ファイルに新しいブロックが割り当てられると完全な安定のためにフラグの定義が消されます。ディレクトリに &#039;C&#039; フラグがセットされている場合、そのディレクトリ自体には影響がなく、ディレクトリに作成された新しいファイルに {{ic|No_COW}} 属性が付けられます。}}&lt;br /&gt;
&lt;br /&gt;
{{Tip|上の Note に従い、ディレクトリ内の既存のファイルで CoW を無効にするときは、次のようにします:&lt;br /&gt;
 $ mv &#039;&#039;/path/to/dir&#039;&#039; &#039;&#039;/path/to/dir&#039;&#039;_old&lt;br /&gt;
 $ mkdir &#039;&#039;/path/to/dir&#039;&#039;&lt;br /&gt;
 $ chattr +C &#039;&#039;/path/to/dir&#039;&#039;&lt;br /&gt;
 $ cp -a &#039;&#039;/path/to/dir&#039;&#039;_old/* &#039;&#039;/path/to/dir&#039;&#039;&lt;br /&gt;
 $ rm -rf &#039;&#039;/path/to/dir&#039;&#039;_old&lt;br /&gt;
作業中にファイルが使用されないように気を付けてください。また、 {{ic|mv}} や下で説明する {{ic|cp --reflink}} では CoW を無効にできないことに注意してください。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
同じように、ファイルのコピー時に CoW を強制してスペースを節約するには次を使って下さい (デフォルトでは {{ic|cp}} を使った場合、実際にデータがコピーされます):&lt;br /&gt;
&lt;br /&gt;
 $ cp --reflink source dest&lt;br /&gt;
&lt;br /&gt;
dest ファイルが変更されると、元から変更されたブロックだけがディスクに書き込まれます。cp を &#039;cp --reflink=auto&#039; にするエイリアスを作ってもいいかもしれません。&lt;br /&gt;
&lt;br /&gt;
=== マルチデバイスファイルシステムと RAID 機能 ===&lt;br /&gt;
&lt;br /&gt;
[https://btrfs.wiki.kernel.org/index.php/Using_Btrfs_with_Multiple_Devices Using Btrfs with Multiple Devices] の提案も見て下さい。&lt;br /&gt;
&lt;br /&gt;
====マルチデバイスファイルシステム====&lt;br /&gt;
&lt;br /&gt;
{{Note|適当な &#039;&#039;.device&#039;&#039; ジョブ以外でマルチデバイスファイルシステムをマウントするとファイルシステムの [https://github.com/systemd/systemd/issues/1921 バグ] が原因でフリーズして systemd が起動できなくなります。}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;btrfs&#039;&#039; ファイルシステムを作成する際に、&#039;&#039;mkfs.btrfs&#039;&#039; したい分だけのパーティション・デバイスを指定することができます。ファイルシステムは指定された全てのデバイスにわたって作成されます。このように &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039;pool&#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; することによって、複数のパーティションやデバイスを一つの大きな &#039;&#039;btrfs&#039;&#039; ファイルシステムにできるのです。&lt;br /&gt;
&lt;br /&gt;
また、既に存在している btrfs ファイルシステムからデバイスを追加・削除することも可能です(用心が必要ですが)。&lt;br /&gt;
&lt;br /&gt;
(btrfs ボリュームとも呼ばれる) マルチデバイス &#039;&#039;btrfs&#039;&#039; ファイルシステムは {{ic|btrfs device scan}} を実行するまで認識されません。&#039;&#039;btrfs&#039;&#039; mkinitcpio フックがこれを行います。&lt;br /&gt;
&lt;br /&gt;
====RAID 機能====&lt;br /&gt;
&lt;br /&gt;
{{Note|カーネル 3.19 から、復元や再構築のコードもマージされています。通常の使用に耐えうるようになっています。新しいコードなので、安定化するのは次かその次のバージョンのカーネルになると思われます。}}&lt;br /&gt;
&lt;br /&gt;
マルチデバイスファイルシステムを作成するとき、ファイルシステムに追加したデバイス全体で RAID0, RAID1, RAID10, RAID5, RAID6 を使うように指定することもできます。RAID レベルはデータとメタデータで別個に適用することができます。デフォルトでは、メタデータはシングルボリュームやマルチディスクの RAID1 で複製されます。&lt;br /&gt;
&lt;br /&gt;
btrfs は raid0, raid1, raid10 のブロックペアで動作します:&lt;br /&gt;
&lt;br /&gt;
raid0 - 2つのデバイスに分散されるブロックペア&lt;br /&gt;
&lt;br /&gt;
raid1 - 2つのデバイスに書き込まれるブロックペア&lt;br /&gt;
&lt;br /&gt;
マウント中に {{ic|btrfs balance}} コマンドを使って RAID レベルを変更することができます:&lt;br /&gt;
&lt;br /&gt;
 # btrfs balance start -mconvert=RAIDレベル -dconvert=RAIDレベル マウントポイント&lt;br /&gt;
&lt;br /&gt;
ディスクが2つある場合、md-raid ([[mdadm]]) で定義する raid レベルと一致します。ディスクが3つ以上の場合は、md-raid とは全く異なるものになります。&lt;br /&gt;
&lt;br /&gt;
例えば:&lt;br /&gt;
* md による raid1 の3つの 1TB ディスクを使って、1TB の空き容量で、2つのディスクを失ってもデータが消失しないようにすることが出来ます。&lt;br /&gt;
* data=raid1 の Btrfs ボリュームの3つの 1TB ディスクを使って、満杯になるまでほぼ 1.5TB のデータを保存することができます。ディスクが1つなくなってもデータは消失しません。&lt;br /&gt;
&lt;br /&gt;
Btrfs はディスクに分散してブロックペアを配置するのにラウンドロビン方式を使っています。Linux 3.0 から,ブロックペアを分散する際に大きなディスクを優先するように quasi-round-robin 方式が使われています。これによって複数のディスクからディスクセットが出来ているときに raid0 や raid1 でほとんど (もしくは全て) の領域を効率的に利用することが可能になっています。例えば、1台の 1TB のディスクと2台の 500GB のディスクからなるセットで data=raid1 を使用すると 1TB のディスクには全てのブロックのコピーが、500GB のそれぞれのディスクにはブロックが交互に (ラウンドロビンで) 配置されます。完全な利用効率が実現されます。1TB のディスクと 750GB のディスク、500GB のディスクからなるセットでも同じことが行われますが、ファイルシステムは 750GB のディスクの 250GB が利用できないことを報告します。いつでも全ての領域を活用できるようにするには (最後に上げた例でも)、data=single を使って下さい (data=single は raid コントローラによって定義される JBOD と同じです)。詳しくは [https://btrfs.wiki.kernel.org/index.php/FAQ#How_much_space_do_I_get_with_unequal_devices_in_RAID-1_mode.3F BTRFS FAQ] を参照。&lt;br /&gt;
&lt;br /&gt;
{{Warning|パリティ RAID (RAID 5/6) のコードにはデータを消失する可能性のある深刻なバグが存在します。詳しくは Btrfs Wiki の [https://btrfs.wiki.kernel.org/index.php/RAID56 RAID5/6] のページや [https://www.mail-archive.com/linux-btrfs@vger.kernel.org/msg55161.html linux-btrfs メーリングリスト] のバグレポートを読んでください。}}&lt;br /&gt;
&lt;br /&gt;
=== サブボリューム ===&lt;br /&gt;
&lt;br /&gt;
btrfs の機能のひとつにサブボリュームがあります。サブボリュームは基本的にファイルとディレクトリを保持している名前の付いた b 木です。root ツリーのツリーの中に inode を持ち、root 以外の所有者やグループも設定できます。サブボリュームは任意でブロックを割り当てることもできます。ブロックとファイルエクステントの全ては参照カウントでありスナップショットを可能にしています。仮想マシンの動的な容量拡張に似て、必要な時に必要な分だけのデバイス上の容量を使います。また、サブボリュームを異なったマウントオプションを使ってマウントすることでセキュリティの柔軟性を持たせることもできます。&lt;br /&gt;
&lt;br /&gt;
==== サブボリュームを作成する ====&lt;br /&gt;
&lt;br /&gt;
サブボリュームを作成するには:&lt;br /&gt;
 # btrfs subvolume create &#039;&#039;/path/to/subvolume&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== サブボリュームを一覧する ====&lt;br /&gt;
&lt;br /&gt;
現在のサブボリュームのリストを表示するには:&lt;br /&gt;
&lt;br /&gt;
 # btrfs subvolume list -p .&lt;br /&gt;
&lt;br /&gt;
==== サブボリュームをマウントする ====&lt;br /&gt;
&lt;br /&gt;
サブボリュームは {{ic|1=subvol=&#039;&#039;/path/to/subvolume&#039;&#039;}} や {{ic|1=subvolid=&#039;&#039;objectid&#039;&#039;}} マウントフラグを使うことでファイルシステムのパーティションと同じようにマウントできます。例えば、{{ic|subvol_root}} という名前のサブボリュームが存在したら {{ic|/}} にマウントすることができます。ファイルシステムのトップレベルにサブボリュームを作成して適切なマウントポイントにマウントすることで、伝統的なファイルシステムのパーティションと同じように使うことができ、[[#スナップショット|スナップショット]]を使用してファイルシステムを前の状態に簡単に戻すことが可能です。&lt;br /&gt;
&lt;br /&gt;
{{Tip|1=トップレベルのサブボリューム (ID=5) を {{ic|/}} として使用しないことでサブボリュームのレイアウトの変更を簡単にできます。サブボリュームを作成して実際のデータを保存して {{ic|/}} にマウントします。}}&lt;br /&gt;
&lt;br /&gt;
[[Snapper#推奨ファイルシステムレイアウト]], [https://btrfs.wiki.kernel.org/index.php/SysadminGuide#Managing_Snapshots Btrfs SysadminGuide#Managing Snapshots], [https://btrfs.wiki.kernel.org/index.php/SysadminGuide#Layout Btrfs SysadminGuide#Layout] などにサブボリュームを使用するファイルシステムレイアウトの例が存在します。&lt;br /&gt;
&lt;br /&gt;
===== マウントオプション =====&lt;br /&gt;
&lt;br /&gt;
{{ic|1=subvol=}} でサブボリュームをマウントする際、複数のマウントオプションが利用できます。例えば、[[#圧縮|圧縮]]や[[#コピーオンライト (CoW)|コピーオンライト (CoW)]] に関するマウントオプションが使えます。&lt;br /&gt;
&lt;br /&gt;
詳しくは [https://btrfs.wiki.kernel.org/index.php/Mount_options Btrfs Wiki Mount options] や [https://btrfs.wiki.kernel.org/index.php/Gotchas Btrfs Wiki Gotchas] を見てください。様々なマウントオプションを使うことで Btrfs の特性は大きく変わります。活発に開発されているファイルシステムであるため、リグレッションも考慮してください。[[#参照|参照]]セクションには複数のベンチマークへのリンクが存在します。&lt;br /&gt;
&lt;br /&gt;
{{Warning|特定のマウントオプションは安全を保証するための機能を無効化して、ファイルシステムが完全に破損する危険性を引き上げてしまいます。}}&lt;br /&gt;
&lt;br /&gt;
==== サブボリュームをルートとしてマウントする ====&lt;br /&gt;
&lt;br /&gt;
サブボリュームをルートマウントポイントとして使用するには、{{ic|1=rootflags=subvol=&#039;&#039;/path/to/subvolume&#039;&#039;}} を使用して [[カーネルパラメータ#設定|カーネルパラメータ]] 経由でサブボリュームを指定します。{{ic|/etc/fstab}} でルート・マウントポイントを編集し、マウント・オプションに {{ic|1=subvol=}} を指定します。または、サブボリュームの ID {{ic|1=rootflags=subvolid=&#039;&#039;objectid&#039;&#039;}} をカーネルパラメータとして使い、{{ic|1=subvolid=&#039;&#039;objectid&#039;&#039;}} を {{ic|/etc/fstab}} のマウントオプションとして指定することもできます。&lt;br /&gt;
&lt;br /&gt;
==== デフォルトのサブボリュームを設定する ====&lt;br /&gt;
&lt;br /&gt;
{{Warning|{{ic|btrfs subvolume set-default}} でデフォルトのサブボリュームを変更すると、{{ic|1=subvolid=0}} マウントオプションを使わない限り、ファイルシステムのトップレベルがアクセスできなくなります。参照: [https://btrfs.wiki.kernel.org/index.php/SysadminGuide Btrfs Wiki Sysadmin Guide]。}}&lt;br /&gt;
&lt;br /&gt;
{{ic|1=subvol=}} マウントオプションが指定されていない場合、デフォルトのサブボリュームがマウントされます。&lt;br /&gt;
&lt;br /&gt;
 # btrfs subvolume set-default &#039;&#039;subvolume-id&#039;&#039; /.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;サンプル:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{hc|# btrfs subvolume list .|&lt;br /&gt;
ID 258 gen 9512 top level 5 path root_subvolume&lt;br /&gt;
ID 259 gen 9512 top level 258 path home&lt;br /&gt;
ID 260 gen 9512 top level 258 path var&lt;br /&gt;
ID 261 gen 9512 top level 258 path usr&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
 # btrfs subvolume set-default 258 .&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;リセット:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 # btrfs subvolume set-default 0 .&lt;br /&gt;
&lt;br /&gt;
==== スナップショット ====&lt;br /&gt;
&lt;br /&gt;
詳しくは [https://btrfs.wiki.kernel.org/index.php/SysadminGuide#Snapshots Btrfs Wiki SysadminGuide#Snapshots] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
スナップショットを作成するには:&lt;br /&gt;
&lt;br /&gt;
 # btrfs subvolume snapshot &#039;&#039;source&#039;&#039; [&#039;&#039;dest&#039;&#039;/]&#039;&#039;name&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
スナップショットは再帰的ではありません、つまりサブボリューム内にある全てのサブボリュームはスナップショットでは空のディレクトリになります。&lt;br /&gt;
&lt;br /&gt;
==== 送信/受信 ====&lt;br /&gt;
&lt;br /&gt;
サブボリュームは {{ic|send}} コマンドを使って標準出力やファイルに送信することができます。Btrfs の {{ic|receive}} コマンドにパイプで渡すことで非常に便利に使うことが可能です。例えば、{{ic|/root_backup}} という名前のスナップショットを {{ic|/backup}} に送信するには以下のコマンドを実行します:&lt;br /&gt;
&lt;br /&gt;
 # btrfs send /root_backup | btrfs receive /backup&lt;br /&gt;
&lt;br /&gt;
送信するスナップショットは読み取り専用である必要があります。上記のコマンドは外部デバイスにサブボリュームをコピーするのにも使えます (例えば上の {{ic|/backup}} を USB ディスクにマウント)。&lt;br /&gt;
&lt;br /&gt;
また、スナップショットの差分だけを送信することも可能です。例えば、上記のように {{ic|root_backup}} のコピーを送信したことがある場合、{{ic|root_backup_new}} という名前の読み取り専用のスナップショットを新しく作成してから、増加差分だけを {{ic|/backup}} に送信するには:&lt;br /&gt;
&lt;br /&gt;
 # btrfs send -p /root_backup /root_backup_new | btrfs receive /backup&lt;br /&gt;
&lt;br /&gt;
これで {{ic|root_backup_new}} という名前の新しいサブボリュームが {{ic|/backup}} に作成されます。&lt;br /&gt;
&lt;br /&gt;
差分バックアップをしたり自動的にバックアップを行うツールは [https://btrfs.wiki.kernel.org/index.php/Incremental_Backup Btrfs Wiki&#039;s Incremental Backup] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== デフラグメンテーション ===&lt;br /&gt;
&lt;br /&gt;
Btrfs はオンラインデフラグをサポートしています。root フォルダのメタデータをデフラグするには、次を実行してください:&lt;br /&gt;
 # btrfs filesystem defragment /&lt;br /&gt;
上のコマンドはファイルシステム全体のデフラグを&#039;&#039;行いません&#039;&#039;。詳しくは、btrfs wiki の[https://btrfs.wiki.kernel.org/index.php/Problem_FAQ#Defragmenting_a_directory_doesn.27t_work このページ]を見て下さい。&lt;br /&gt;
&lt;br /&gt;
ファイルシステム全体をデフラグするには、次を実行してください:&lt;br /&gt;
 # btrfs filesystem defragment -r -v /&lt;br /&gt;
&lt;br /&gt;
=== 圧縮 ===&lt;br /&gt;
&lt;br /&gt;
Btrfs は透過圧縮をサポートしています、これはパーティション上の全てのファイルが自動的に圧縮されることを意味します。このことはファイルの容量を減らすだけでなく、特に [https://www.phoronix.com/scan.php?page=article&amp;amp;item=btrfs-zstd-compress zstd アルゴリズム] や [https://www.phoronix.com/scan.php?page=article&amp;amp;item=btrfs_lzo_2638&amp;amp;num=1 lzo アルゴリズム] を使う場合、一般的に [https://www.phoronix.com/scan.php?page=article&amp;amp;item=btrfs_compress_2635&amp;amp;num=1 パフォーマンスが向上] します。&lt;br /&gt;
&lt;br /&gt;
圧縮は {{ic|1=compress=&#039;&#039;arg&#039;&#039;}} マウントオプションを使って有効にします。&#039;&#039;alg&#039;&#039; は{{ic|zlib}}、{{ic|lzo}}、{{ic|zstd}}、または{{ic|no}}（圧縮しない場合）のいずれかです&lt;br /&gt;
。マウントオプションが追加された後に作成・変更されたファイルだけに圧縮が適用されます。ただし、{{ic|btrfs filesystem defragment -c&#039;&#039;alg&#039;&#039;}} コマンドを使うことで既存のファイルに圧縮を適用することも簡単にできます (例えば ext3/4 から変換した後)。{{ic|&#039;&#039;alg&#039;&#039;}} は {{ic|zlib}}、{{ic|lzo}}、{{ic|zstd}} のいずれかです。{{ic|zstd}} を使ってファイルシステム全体を再圧縮するには、次のコマンドを実行してください:&lt;br /&gt;
&lt;br /&gt;
 # btrfs filesystem defragment -r -v -czstd /&lt;br /&gt;
&lt;br /&gt;
空の Btrfs パーティションに Arch をインストールする時に圧縮を有効にするには、ファイルシステムを[[マウント]]する時に compress オプションを使います: &lt;br /&gt;
&lt;br /&gt;
 # mount -o compress=zstd /dev/sdxY /mnt/&lt;br /&gt;
&lt;br /&gt;
設定の際、[[fstab]] でルートファイルシステムのマウントオプションに {{ic|1=compress=zstd}} を追加してください。&lt;br /&gt;
&lt;br /&gt;
{{Tip|{{ic|compress}} マウントオプションを使わずファイルごとに圧縮を有効にすることも可能です。ファイルに {{ic|chattr +c}} を適用するだけです。ディレクトリに適用した場合、新しいファイルは自動的に圧縮されます。}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|このオプションを使用すると、{{ic|zstd}} をサポートしていない古いカーネルや {{Pkg|btrfs-progs}} を使用しているシステムでは、ファイルシステムの読み取りや修復ができなくなる可能性があります。&lt;br /&gt;
[[GRUB]] は 2.04 で &#039;&#039;zstd&#039;&#039; をサポートしました。MBR/ESP にインストールされているブートローダが自動的にアップグレードされないので、BIOS/UEFI の設定に応じたオプションで {{ic|grub-install}} を実行して、実際にアップグレードしていることを確認してください。[https://bugs.archlinux.org/task/63235 FS#63235] を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
=== チェックポイントインターバル ===&lt;br /&gt;
Linux 3.12 から、チェックポイントインターバルをデフォルトの30秒から変えることができるようになっています。{{ic|/etc/fstab}} の btrfs パーティションに {{ic|commit}} マウントフラグを追加してください。&lt;br /&gt;
&lt;br /&gt;
 LABEL=arch64 / btrfs defaults,noatime,compress=lzo,commit=120 0 0&lt;br /&gt;
&lt;br /&gt;
=== パーティショニング ===&lt;br /&gt;
&lt;br /&gt;
Btrfs はデータストレージデバイス全体を占領して [[Master Boot Record|MBR]] や [[GUID Partition Table|GPT]] パーティショニングスキームを置き換えることができます。[[#サブボリューム|サブボリューム]]を使ってパーティションを模すことが可能です。ディスクを一つしか使っていない場合、このアプローチにはいくつか制限があります:&lt;br /&gt;
&lt;br /&gt;
* [[fstab|マウントポイント]]によって異なる[[ファイルシステム]]を使うことはできません&lt;br /&gt;
* Btrfs は[[スワップ#スワップファイル|スワップファイル]]をサポートしていないので[[スワップ|スワップ領域]]を使うことができません。[[スワップ#スワップパーティション|スワップパーティション]]も作れません。ハイバネーションイメージはスワップ領域に保存されるので、ハイバネーション/レジュームも使えません&lt;br /&gt;
* [[Unified Extensible Firmware Interface|UEFI]] を使って起動できません&lt;br /&gt;
&lt;br /&gt;
既存のパーティションテーブルを Btrfs で上書きするには、次のコマンドを実行してください:&lt;br /&gt;
 # mkfs.btrfs /dev/sdX&lt;br /&gt;
{{ic|/dev/sdaX}} を指定するとパーティションスキーム全体を置き換える代わりに既存のパーティションがフォーマットされます。&lt;br /&gt;
&lt;br /&gt;
[[Master Boot Record|MBR]] のデータストレージデバイスと同じ方法で[[ブートローダー]]をインストールしてください。例えば [[GRUB]] なら:&lt;br /&gt;
 # grub-install --recheck /dev/sdX&lt;br /&gt;
&lt;br /&gt;
{{Warning|{{ic|btrfs subvolume set-default}} コマンドを使ってデフォルトのサブボリュームをトップレベル (ID 0) 以外に変更すると GRUB を破壊するおそれがあります。リセットするには [[#デフォルトのサブボリュームを設定する]] を見て下さい。}}&lt;br /&gt;
&lt;br /&gt;
=== Scrub ===&lt;br /&gt;
&lt;br /&gt;
Btrfs の scrub はオンラインのファイルシステムチェックツールです。ファイルシステム上の全てのデータとメタデータを読み込んで、チェックサムと RAID ストレージの重複コピーを使用してデータに破損がないか確認して修復を行います。&lt;br /&gt;
&lt;br /&gt;
 # btrfs scrub start /&lt;br /&gt;
 # btrfs scrub status /&lt;br /&gt;
&lt;br /&gt;
{{Warning|scrub プロセスが動作しているとシステムはサスペンドできません、詳しくは [http://comments.gmane.org/gmane.comp.file-systems.btrfs/33106 このスレッド] を見て下さい。}}&lt;br /&gt;
&lt;br /&gt;
==== systemd サービス ====&lt;br /&gt;
&lt;br /&gt;
{{Pkg|btrfs-progs}} パッケージには特定のマウントポイントをひと月毎にスクラブする {{ic|btrfs-scrub@.timer}} ユニットが付属しています。エンコードしたパスを指定してタイマーを[[有効化]]してください。例えば {{ic|/}} なら {{ic|btrfs-scrub@-.timer}} を、{{ic|/home}} なら {{ic|btrfs-scrub@home.timer}} を使います。&lt;br /&gt;
&lt;br /&gt;
{{ic|btrfs-scrub@.service}} を[[起動]]することで手動でスクラブを実行することもできます (同じくエンコードしたパスを指定してください)。{{ic|btrfs scrub}} コマンドを手動で実行するのとは違って systemd サービスを使うことで [[systemd#Journal|journal]] にログが記録されます。&lt;br /&gt;
&lt;br /&gt;
=== Balance ===&lt;br /&gt;
&lt;br /&gt;
balance はファイルシステム上の全てのデータをアロケータに再度流し込みます。デバイスが追加されたり削除された場合にファイルシステム上のデータを再配置するために実行します。balance はデバイスが故障した場合に、冗長な RAID レベルのコピーを再生成します。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|btrfs-progs}}-3.12 から&#039;&#039;バランシング&#039;&#039;はバックグラウンドプロセスになりました - 詳しくは {{ic|man 8 btrfs-balance}} を見て下さい。&lt;br /&gt;
&lt;br /&gt;
 # btrfs balance start /&lt;br /&gt;
 # btrfs balance status /&lt;br /&gt;
&lt;br /&gt;
=== SSD TRIM ===&lt;br /&gt;
&lt;br /&gt;
{{ic|discard}} オプションを使ってマウントした場合、Btrfs ファイルシステムは TRIM コマンドをサポートしている SSD ドライブの空きブロックを自動的に開放します。&lt;br /&gt;
&lt;br /&gt;
SATA 3.1 よりも古い場合、TRIM コマンドは同期的で、コマンドが実行されている間は全ての I/O がブロックされます。ファイルシステムの同期などによって、プチフリーズが発生する可能性があります。このような場合、{{ic|discard}} を使用する代わりに定期的な trim を有効にすることができます:&lt;br /&gt;
&lt;br /&gt;
 # systemctl enable fstrim.timer&lt;br /&gt;
&lt;br /&gt;
SATA バージョンを確認するには次を実行:&lt;br /&gt;
&lt;br /&gt;
 # smartctl --info /dev/sd&#039;&#039;X&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
詳しくは[[ソリッドステートドライブ#TRIM]] を参照。&lt;br /&gt;
&lt;br /&gt;
=== 重複排除 ===&lt;br /&gt;
&lt;br /&gt;
コピーオンライトを使用した場合、Btrfs は実際にはデータをコピーしないでファイルやサブボリュームをコピーできます。ファイルに変更が加えられたときに新しい本当のコピーが作成されます。重複排除はさらに共通部分が存在するデータブロックを認識して、コピーオンライトと同じようにエクステントにまとめてしまいます。&lt;br /&gt;
&lt;br /&gt;
Btrfs パーティションの重複排除に使用するツールについては [https://btrfs.wiki.kernel.org/index.php/Deduplication#Batch 上流の Wiki エントリ] を見てください。{{Pkg|duperemove}}, {{aur|bedup}}, &#039;&#039;btrfs-dedup&#039;&#039; などが存在します。{{pkg|rmlint}} あるいは {{aur|jdupes}} などを使うことでファイルベースでデータの重複排除を行うこともできます。&lt;br /&gt;
&lt;br /&gt;
Btrfs の開発者はインバンド (同期的・インライン) 重複排除に取り組んでおり、新しいデータがファイルシステムに書き込まれたときに重複排除が実行されます。現在のところ実験的な機能としてツリー外で開発されています。新しい機能をテストしてみたい場合は [https://btrfs.wiki.kernel.org/index.php/User_notes_on_dedupe カーネルの wiki ページ] を参照してください。&lt;br /&gt;
&lt;br /&gt;
== 既知の問題 ==&lt;br /&gt;
&lt;br /&gt;
試す前に、いくつかの制限を知っておく必要があります。&lt;br /&gt;
&lt;br /&gt;
=== 暗号化 ===&lt;br /&gt;
&lt;br /&gt;
Btrfs には暗号化のサポートが組み込まれていませんが、この [https://lwn.net/Articles/700487/] は将来的に提供される可能性があります。 ユーザーは、 {{ic|mkfs.btrfs}} を実行する前にパーティションを暗号化できます。 [https://wiki.archlinux.jp/index.php/Dm-crypt/%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E5%85%A8%E4%BD%93%E3%81%AE%E6%9A%97%E5%8F%B7%E5%8C%96#Btrfs_.E3.82.B5.E3.83.96.E3.83.9C.E3.83.AA.E3.83.A5.E3.83.BC.E3.83.A0.E3.81.A8.E3.82.B9.E3.83.AF.E3.83.83.E3.83.97 dm-crypt/スワップを使用したsystem#Btrfsサブボリューム全体の暗号化] を参照してください。&lt;br /&gt;
&lt;br /&gt;
既存の Btrfs ファイルシステムは [[EncFS]] や [[TrueCrypt]] のようなものを使用できますが、おそらく Btrfs の機能の一部はありません。&lt;br /&gt;
&lt;br /&gt;
=== TLP ===&lt;br /&gt;
&lt;br /&gt;
TLP を使用するには、ファイルシステムの破損を回避するために特別な予防措置が必要です。 詳細については、 [[TLP#Btrfs|TLP の Btrfs セクション]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== btrfs チェックの問題 ===&lt;br /&gt;
ツール{{ic|btrfs check}} には既知の問題があるため、セクション [[#btrfscheck]] をよく参照してから実行してください。&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== パーティションレス Btrfs ディスク ===&lt;br /&gt;
&lt;br /&gt;
{{Warning|&lt;br /&gt;
* ほとんどのユーザーはこのタイプのセットアップを望まず、代わりに通常のパーティションにBtrfsをインストールする必要があります。 さらに、 GRUB はパーティションレスディスクへのインストールを強くお勧めしません。&lt;br /&gt;
* {{Pkg|grub}} 2.04 以降、GRUB の {{ic|core.img}} は大きすぎてBtrfsVBRに収まりません。 {{Bug|63656}} を参照してください。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Btrfs は、 [[#Subvolumes|subvolumes]] を使用してパーティションをシミュレートし、 [[MBR]] または [[GPT]] パーティションスキームを置き換えて、データストレージデバイス全体を占有できます。 ただし、別の方法で作成された既存の [https://wiki.archlinux.jp/index.php/%E3%83%91%E3%83%BC%E3%83%86%E3%82%A3%E3%82%B7%E3%83%A7%E3%83%8B%E3%83%B3%E3%82%B0 パーティション] で [[#File systemcreation|create a Btrfsfilesystem]] を実行するためにパーティションレスセットアップを使用する必要はありません。 パーティションレスのシングルディスクセットアップには、いくつかの制限があります。&lt;br /&gt;
&lt;br /&gt;
* 他の [[ファイルシステム]] を同じディスク上の別のパーティションに配置することはできません。&lt;br /&gt;
* バージョン5.0より前の Linux カーネルを使用している場合、 [[スワップ|スワップ領域]] は使用できません。 Btrfs は[https://wiki.archlinux.jp/index.php/%E3%82%B9%E3%83%AF%E3%83%83%E3%83%97#.E3.82.B9.E3.83.AF.E3.83.83.E3.83.97.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB スワップファイル] 5.0 より前をサポートしておらず、 [https://wiki.archlinux.jp/index.php/%E3%82%B9%E3%83%AF%E3%83%83%E3%83%97#.E3.82.B9.E3.83.AF.E3.83.83.E3.83.97.E3.83.91.E3.83.BC.E3.83.86.E3.82.A3.E3.82.B7.E3.83.A7.E3.83.B3 スワップパーティション] を作成する場所もありませんでした。&lt;br /&gt;
* [[UEFI]] を使用して起動することはできません。&lt;br /&gt;
&lt;br /&gt;
既存のパーティションテーブルを Btrfs で上書きするには、次のコマンドを実行します:&lt;br /&gt;
&lt;br /&gt;
 # mkfs.btrfs /dev/sd&#039;&#039;X&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
たとえば、 {{ic|/dev/sda1}} ではなく {{ic|/dev/sda}} を使用します。後者は、パーティショニングスキーム全体を置き換えるのではなく、既存のパーティションをフォーマットします。ルートパーティションは Btrfs なので、 {{ic|btrfs}} がカーネルに組み込まれていることを確認するか、 {{ic|btrfs}} を [[mkinitcpio.conf#MODULES]] と [https://wiki.archlinux.jp/index.php/Mkinitcpio#.E3.82.A4.E3.83.A1.E3.83.BC.E3.82.B8.E4.BD.9C.E6.88.90.E3.81.A8.E3.82.A2.E3.82.AF.E3.83.86.E3.82.A3.E3.83.99.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3 initramfsを再生成する] に入れてください。&lt;br /&gt;
&lt;br /&gt;
[https://wiki.archlinux.jp/index.php/Arch_%E3%83%96%E3%83%BC%E3%83%88%E3%83%97%E3%83%AD%E3%82%BB%E3%82%B9#.E3.83.96.E3.83.BC.E3.83.88.E3.83.AD.E3.83.BC.E3.83.80.E3.83.BC ブートローダ] を、 [https://wiki.archlinux.jp/index.php/%E3%83%91%E3%83%BC%E3%83%86%E3%82%A3%E3%82%B7%E3%83%A7%E3%83%8B%E3%83%B3%E3%82%B0#Master_Boot_Record マスターブートレコード] を備えたデータ記憶装置の場合と同様にインストールします。[[Syslinux#手動インストール]] または [[GRUB/Tips and tricks#パーティションまたはパーティションレスディスクへのインストール]] を参照してください。 {{ic|/sysrootをマウントできませんでした。}} が原因でカーネルがブートしない場合は、 {{ic|/etc/default/grub}} に {{ic|1=GRUB_PRELOAD_MODULES=&amp;quot;btrfs&amp;quot;}} を追加して、 grub 設定 ([[GRUB#メインの構成ファイルを生成する]]) を生成してください。&lt;br /&gt;
&lt;br /&gt;
=== Ext3/4 から Btrfs への変換 ===&lt;br /&gt;
&lt;br /&gt;
{{Warning|btrfs メーリングリストには、不完全/破壊/破損した変換に関する多くの報告があります。 失いたくないデータや &#039;&#039;作業中&#039;&#039; のバックアップがあることを確認してください。 詳細については、 btrfswiki の [https://btrfs.wiki.kernel.org/index.php/Conversion_from_Ext3Conversion fromExt3] を参照してください。}}&lt;br /&gt;
{{Warning| btrfs-progs 5.6.1 以前にはバグがあり、最後のブロックグループのサイズが間違った btrfs ファイルシステムが生成され、新しく変換されたbtrfsをマウントできなくなります。 このバグは、 [https://github.com/kdave/btrfs-progs/commit/0ff7a9b5210723bd4ad0d9d78dbbb18ee8fdd2b1#diff-31168275dcaac634489082b54c4c66d0 thiscommit] の btrfs-progs5.7 で修正されています。 btrfs-progs5.7-1 以降の btrfs-convert を使用してください。}}&lt;br /&gt;
&lt;br /&gt;
インストール CD から起動し、次の手順で変換します:&lt;br /&gt;
&lt;br /&gt;
 # btrfs-convert /dev/&#039;&#039;partition&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
パーティションをマウントし、ファイルをチェックして変換をテストします。 変更を反映するために、必ず {{ic|/etc/fstab}} を変更してください( &#039;&#039;&#039;type&#039;&#039;&#039; を {{ic|btrfs}} に、 &#039;&#039;&#039;fs_passno&#039;&#039;&#039; [最後のフィールド] を {{ic|0}} Btrfs は起動時にファイルシステムチェックを行わないため)。 また、パーティションの UUID が変更されることに注意してください。したがって、 UUID を使用する場合は、それに応じて fstab を更新してください。 {{ic|chroot}} をシステムにインストールし、 GRUB メニューリストを再構築します ([[既存の Linux からインストール]] および [[GRUB]] の記事を参照)。 ルートファイルシステムを変換する場合、 chroot されたまま {{ic|mkinitcpio -p linux}} を実行して initramfs を再生成しないと、システムが正常に起動しません。 &#039;unknown filesystem&#039; で grub でスタックした場合は、 {{ic|grub-install /dev/&#039;&#039;partition&#039;&#039;}} で grub を再インストールし、構成も再生成してください {{ic|grub-mkconfig -o /boot/grub/grub.cfg}}&lt;br /&gt;
&lt;br /&gt;
{{Note|新しく変換された btrfs にファイルをマウントまたは書き込みできないなどの問題がある場合は、バックアップサブボリューム {{ic|/ext2_saved}} がまだ存在する限り、常にロールバックするオプションがあります。 {{ic|btrfs-convert -r /dev/&#039;&#039;partition&#039;&#039;}} コマンドを使用してロールバックします。これにより、新しく変換された btrfs ファイルシステムへの変更が破棄されます。}}&lt;br /&gt;
&lt;br /&gt;
問題がないことを確認したら、バックアップ {{ic|ext2_saved}} サブボリュームを削除して変換を完了します。 これがないと ext3/4 に戻れないことに注意してください。&lt;br /&gt;
&lt;br /&gt;
 # btrfs subvolume delete /ext2_saved&lt;br /&gt;
&lt;br /&gt;
最後に [[#Balance|balance]] ファイルシステムでスペースを再利用します。&lt;br /&gt;
&lt;br /&gt;
以前にインストールされた一部のアプリケーションは、 Btrfs に適合させる必要があることに注意してください。 特に [[TLP#Btrfs]] はファイルシステムの破損を避けるために特別な注意が必要です。&lt;br /&gt;
&lt;br /&gt;
=== チェックサムのハードウェアアクセラレーション ===&lt;br /&gt;
&lt;br /&gt;
Btrfs のチェックサムでハードウェアアクセラレーションが使われているかどうか確認するには:&lt;br /&gt;
{{hc|&amp;lt;nowiki&amp;gt;$ dmesg | grep crc32c&amp;lt;/nowiki&amp;gt;|&amp;lt;nowiki&amp;gt;Btrfs loaded, crc32c=crc32c-intel&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{ic|&amp;lt;nowiki&amp;gt;crc32c=crc32c-generic&amp;lt;/nowiki&amp;gt;}} と表示された場合、ルートパーティションが Btrfs であるため、ハードウェアアクセラレーションを使うにはカーネルに {{ic|crc32c-intel}} を組み込む必要があります。[[mkinitcpio.conf]] に {{ic|crc32c-intel}} を追加するだけでは機能しません。&lt;br /&gt;
&lt;br /&gt;
=== ファイルシステム破損のリカバリ ===&lt;br /&gt;
&lt;br /&gt;
{{Warning|{{ic|btrfs check}} ツールには既知の問題があります。セクション [[Btrfs#btrfs check|btrfs check]] を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;btrfs-check&#039;&#039; はマウントされているファイルシステムでは使えません。ライブ USB から起動しないで &#039;&#039;btrfs-check&#039;&#039; を使えるようにするには、初期 RAM ディスクに以下のように追加してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/mkinitcpio.conf|output=&lt;br /&gt;
BINARIES=&amp;quot;/usr/bin/btrfs&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
設定したら [[mkinitcpio]] を使って initramfs を再生成してください。&lt;br /&gt;
&lt;br /&gt;
起動に問題が発生したら、ユーティリティを使って修復することができます。&lt;br /&gt;
&lt;br /&gt;
{{Note|fsck でキャッシュを無効化する必要がある場合、起動後に一定時間フリーズするのは通常の動作です (btrfs-transaction がハングアップしているというメッセージがコンソールに表示されます)。しばらく経てばシステムは復帰します。}}&lt;br /&gt;
&lt;br /&gt;
詳しくは [https://btrfs.wiki.kernel.org/index.php/Btrfsck Btrfs Wiki] を参照。&lt;br /&gt;
&lt;br /&gt;
=== スナップショットから起動する ===&lt;br /&gt;
&lt;br /&gt;
スナップショットをブートするためには、セクション [[Btrfs#サブボリュームをルートとしてマウントする|サブボリュームをルートとしてマウントする]] で説明されているように、サブボリュームをルートパーティションとしてマウントする場合と同じ手順が適用されます。スナップショットはサブボリュームのようにマウントできます。&lt;br /&gt;
&lt;br /&gt;
* [[GRUB]] を使用している場合、{{Pkg|grub-btrfs}} または {{AUR|grub-btrfs-git}} を使用して構成ファイルを再生成すると、自動的に btrfs スナップショットをブートメニューに取り込むことができます。&lt;br /&gt;
* [[rEFInd]] を使用している場合は、{{ic|refind-btrfs.service}} を [[systemd#ユニットを使う|有効]] にして開始後に、{{AUR|refind-btrfs}} を使用してブートメニューに btrfs スナップショットを自動的に取り込むことができます。&lt;br /&gt;
&lt;br /&gt;
=== systemd-nspawn で Btrfs サブボリュームを使う ===&lt;br /&gt;
&lt;br /&gt;
[[Systemd-nspawn#Btrfs のサブボリュームをコンテナのルートとして使う]]や [[Systemd-nspawn#コンテナの一時的な Btrfs スナップショットを使う]]を見てください。&lt;br /&gt;
&lt;br /&gt;
=== アクセス時間のメタデータ更新を削減 ===&lt;br /&gt;
&lt;br /&gt;
Btrfs は書き込み時にコピーの性質を持つため、ファイルにアクセスするだけでメタデータのコピーと書き込みを開始します。アクセス時間の更新頻度を減らすと、この予期しないディスク使用がなくなり、パフォーマンスが向上する可能性があります。使用可能なオプションについては、 [[fstab#atime オプション|atime オプション]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
一般的なトラブルシューティングについては [https://btrfs.wiki.kernel.org/index.php/Problem_FAQ Btrfs Problem FAQ] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
=== GRUB ===&lt;br /&gt;
&lt;br /&gt;
==== パーティションオフセット ====&lt;br /&gt;
&lt;br /&gt;
[[GRUB]] は Btrfs パーティションを起動することができますが、そのモジュールは ext4 などよりも大きく、&#039;&#039;grub-install&#039;&#039; によって作成される {{ic|core.img}} が MBR と最初のパーティションの間に収まらない可能性があります。GPT を使うか、最初のパーティションの前に数 MB の空きスペースを作ることでこの問題を解決できます。&lt;br /&gt;
&lt;br /&gt;
==== root が見つからない ====&lt;br /&gt;
&lt;br /&gt;
RAID セットアップから起動した時にエラー {{ic|1=error no such device: root}} が表示される場合、{{ic|/usr/share/grub/grub-mkconfig_lib}} を編集して {{ic|1=echo &amp;quot;  search --no-floppy --fs-uuid --set=root ${hints} ${fs_uuid}&amp;quot;}} からクォートを削除してください。grub の設定を再生成すればエラーを出さずに起動できるはずです。&lt;br /&gt;
&lt;br /&gt;
=== BTRFS: open_ctree failed ===&lt;br /&gt;
&lt;br /&gt;
2014年11月現在、{{ic|mkinitcpio.conf}} で {{ic|btrfs}} フックを使用してマルチデバイスの Btrfs を使っている場合に以下のエラーが発生するというバグが [[systemd]] か [[mkinitcpio]] のどちらかに存在します:&lt;br /&gt;
&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
BTRFS: open_ctree failed&lt;br /&gt;
mount: wrong fs type, bad option, bad superblock on /dev/sdb2, missing codepage or helper program, or other error&lt;br /&gt;
&lt;br /&gt;
In some cases useful info is found in syslog - try dmesg|tail or so.&lt;br /&gt;
&lt;br /&gt;
You are now being dropped into an emergency shell.&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/mkinitcpio.conf}} の {{ic|HOOKS}} 行から {{ic|btrfs}} を削除して代わりに {{ic|MODULES}} 行に {{ic|btrfs}} を追加することで解決します。修正を施したら {{ic|mkinitcpio -p linux}} で initramfs を再生成して (必要ならプリセットを調整します) 再起動してください。&lt;br /&gt;
&lt;br /&gt;
詳細は [https://bbs.archlinux.org/viewtopic.php?id=189845 フォーラムスレッド] や {{Bug|42884}} を見て下さい。&lt;br /&gt;
&lt;br /&gt;
デバイスが存在しない raid アレイをマウントしようとしたときも同じエラーが表示されます。その場合は {{ic|/etc/fstab}} に {{ic|degraded}} マウントオプションを追加してください。ルートパーティションがアレイ上にある場合、[[カーネルパラメータ]]に {{ic|1=rootflags=degraded}} を追加してください。&lt;br /&gt;
&lt;br /&gt;
=== btrfs check ===&lt;br /&gt;
&lt;br /&gt;
{{Warning|Btrfs はまだ開発途上であり、特に {{ic|btrfs check}} コマンドについては仕様が固まっていないので、{{ic|--repair}} スイッチを付けて {{ic|btrfs check}} を実行するときはあらかじめ Btrfs のドキュメントを読んでバックアップを作成することを強く推奨します。}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;[https://btrfs.wiki.kernel.org/index.php/Manpage/btrfs-check btrfs check]&#039;&#039; コマンドを使うことでアンマウントされた Btrfs ファイルシステムをチェックしたり修復することが可能です。ただし、この修復ツールはまだ開発中であり、特定のファイルシステムエラーは修復することができません。&lt;br /&gt;
&lt;br /&gt;
詳しくは [https://btrfs.wiki.kernel.org/index.php/Btrfsck Btrfsck] を参照。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* 公式サイト&lt;br /&gt;
** [https://btrfs.wiki.kernel.org/ Btrfs Wiki]&lt;br /&gt;
* パフォーマンス関連&lt;br /&gt;
** [https://superuser.com/questions/432188/should-i-put-my-multi-device-btrfs-filesystem-on-disk-partitions-or-raw-devices Btrfs on raw disks?]&lt;br /&gt;
** [http://comments.gmane.org/gmane.comp.file-systems.btrfs/19440 Varying leafsize and nodesize in Btrfs]&lt;br /&gt;
** [http://comments.gmane.org/gmane.comp.file-systems.btrfs/15646 Btrfs support for efficient SSD operation (data blocks alignment)]&lt;br /&gt;
** [https://btrfs.wiki.kernel.org/index.php/FAQ#Is_Btrfs_optimized_for_SSD.3F Is Btrfs optimized for SSDs?]&lt;br /&gt;
** Phoronix によるマウントオプションのベンチマーク&lt;br /&gt;
*** [https://www.phoronix.com/scan.php?page=article&amp;amp;item=btrfs-mount-linux49 Linux 4.9]&lt;br /&gt;
*** [https://www.phoronix.com/scan.php?page=article&amp;amp;item=linux_314_btrfs Linux 3.14]&lt;br /&gt;
*** [https://www.phoronix.com/scan.php?page=article&amp;amp;item=linux_btrfs_311&amp;amp;num=1 Linux 3.11]&lt;br /&gt;
*** [https://www.phoronix.com/scan.php?page=news_item&amp;amp;px=MTM0OTU Linux 3.9]&lt;br /&gt;
*** [https://www.phoronix.com/scan.php?page=article&amp;amp;item=btrfs_linux37_mounts&amp;amp;num=1 Linux 3.7]&lt;br /&gt;
*** [https://www.phoronix.com/scan.php?page=article&amp;amp;item=linux_btrfs_options&amp;amp;num=1 Linux 3.2]&lt;br /&gt;
** [http://blog.erdemagaoglu.com/post/4605524309/lzo-vs-snappy-vs-lzf-vs-zlib-a-comparison-of Lzo vs. zLib]&lt;br /&gt;
* その他&lt;br /&gt;
** [http://www.funtoo.org/wiki/BTRFS_Fun Funtoo Wiki Btrfs Fun]&lt;br /&gt;
** [https://www.phoronix.com/scan.php?page=news_item&amp;amp;px=MTA0ODU Avi Miller presenting Btrfs] at SCALE 10x, January 2012.&lt;br /&gt;
** [https://www.phoronix.com/scan.php?page=news_item&amp;amp;px=MTA4Mzc Summary of Chris Mason&#039;s talk] from LFCS 2012&lt;br /&gt;
** [https://git.kernel.org/?p&amp;amp;#61;linux/kernel/git/torvalds/linux-2.6.git;a&amp;amp;#61;commit;h&amp;amp;#61;35054394c4b3cecd52577c2662c84da1f3e73525 Btrfs: stop providing a bmap operation to avoid swapfile corruptions] 2009-01-21&lt;br /&gt;
** [http://marc.merlins.org/perso/btrfs/post_2014-03-22_Btrfs-Tips_-Doing-Fast-Incremental-Backups-With-Btrfs-Send-and-Receive.html Doing Fast Incremental Backups With Btrfs Send and Receive]&lt;/div&gt;</summary>
		<author><name>Funcrab</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Btrfs&amp;diff=22646</id>
		<title>Btrfs</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Btrfs&amp;diff=22646"/>
		<updated>2021-12-04T11:02:28Z</updated>

		<summary type="html">&lt;p&gt;Funcrab: zstd 圧縮形式に少し言及した。コマンド等は別途整備が必要&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ファイルシステム]]&lt;br /&gt;
[[en:Btrfs]]&lt;br /&gt;
[[fr:Btrfs]]&lt;br /&gt;
[[zh-hans:Btrfs]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|ファイルシステム}}&lt;br /&gt;
{{Related|mkinitcpio}}&lt;br /&gt;
{{Related|Snapper}}&lt;br /&gt;
{{Related|dm-crypt/システム全体の暗号化#Btrfs サブボリュームとスワップ}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:ja:Btrfs]] より:&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Btrfs (B-tree File System: 読み方は &amp;quot;バター FS&amp;quot;, &amp;quot;ベター FS&amp;quot;, &amp;quot;B木 FS&amp;quot;, &amp;quot;ビーティーアール FS&amp;quot; など) は Linux 向けの実験的なコピーオンライトのファイルシステムで GPL でライセンスされています。Oracle Corporation によって2007年から開発が開始されました。2014年8月にはディスク上のフォーマットが固まっています。&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://btrfs.wiki.kernel.org/index.php/Main_Page Btrfs Wiki] より:&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Btrfs は Linux 用の全く新しいコピーオンライト (COW) のファイルシステムです。先進的な機能を実装することを目指しつつ、障害耐性を持ち簡単に管理できることに焦点が置かれています。Btrfs は Oracle, Red Hat, Fujitsu, Intel, SUSE, STRATO やその他多くの人々によって共同で開発されており GPL でライセンスされていて誰でも貢献できるように開かれています。&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Warning|Btrfs には実験的な機能が存在します。詳しくは Btrfs Wiki の [https://btrfs.wiki.kernel.org/index.php/Status Status] や [https://btrfs.wiki.kernel.org/index.php/FAQ#Is_btrfs_stable.3F Is Btrfs stable?]、[https://btrfs.wiki.kernel.org/index.php/Getting_started Getting started] などを見てください。[[#既知の問題]]も参照。}}&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
Btrfs はデフォルトのカーネルに含まれており、ツール ({{pkg|btrfs-progs}}) は[[公式リポジトリ]]から入手できます。[[GRUB]], [[mkinitcpio]], [[Syslinux]] には Btrfs のサポートがあるので追加の設定は必要ありません。&lt;br /&gt;
&lt;br /&gt;
=== 追加のパッケージ ===&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|btrfs-progs}} には Btrfs ファイルシステムのエラーを修正できるツール &#039;&#039;btrfsck&#039;&#039; が含まれています。&lt;br /&gt;
* {{AUR|btrfs-progs-git}} はナイトリービルドです。&lt;br /&gt;
&lt;br /&gt;
{{Tip|Btrfs を効率的に動かす提案が [https://btrfs.wiki.kernel.org/index.php/Getting_started Btrfs Wiki Getting Started] に載っています。}}&lt;br /&gt;
&lt;br /&gt;
== Btrfs の一般的な管理 ==&lt;br /&gt;
&lt;br /&gt;
=== 新しいファイルシステムを作成する ===&lt;br /&gt;
&lt;br /&gt;
Btrfs ファイルシステムは新規作成することも既存のファイルシステムから変換することも可能です。&lt;br /&gt;
&lt;br /&gt;
パーティションをフォーマットするには次を実行してください:&lt;br /&gt;
&lt;br /&gt;
 # mkfs.btrfs -L &#039;&#039;mylabel&#039;&#039; /dev/&#039;&#039;partition&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Note|1=2013年11月の[https://git.kernel.org/cgit/linux/kernel/git/mason/btrfs-progs.git/commit/?id=c652e4efb8e2dd76ef1627d8cd649c6af5905902 この] コミット以降、Btrfs のデフォルトのブロックサイズは 16KB になっています。}}&lt;br /&gt;
&lt;br /&gt;
大きいブロックサイズをデータ・メタデータに使うには、下の例のように {{ic|-n}} スイッチを使って {{ic|nodesize}} の値を指定して下さい (例: 16KB ブロック):&lt;br /&gt;
&lt;br /&gt;
 # mkfs.btrfs -L &#039;&#039;mylabel&#039;&#039; -n 16k /dev/&#039;&#039;partition&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
複数のデバイスを入力して RAID を作成することもできます。サポートされている RAID レベルは RAID 0, RAID 1, RAID 10 などです。デフォルトではメタデータはミラーされデータはストライピングされます。より多くの情報が必要な場合、[https://btrfs.wiki.kernel.org/index.php/Using_Btrfs_with_Multiple_Devices Using Btrfs with Multiple Devices] を見てください。&lt;br /&gt;
&lt;br /&gt;
 # mkfs.btrfs [options] /dev/&amp;lt;part1&amp;gt; /dev/&amp;lt;part2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Tip|ミラーリングをしない場合、&#039;&#039;raid0&#039;&#039; オプションを使って下さい: {{ic|# mkfs.btrfs -d raid0 /dev/&#039;&#039;part1&#039;&#039; /dev/&#039;&#039;part2&#039;&#039;}}。}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|Btrfs の RAID 5 と RAID 6 モードには致命的な欠点があります。壊れても良いデータ以外でテストすべきではありません。現状については https://btrfs.wiki.kernel.org/index.php/RAID56 を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
=== 使用済み・空き容量を表示する ===&lt;br /&gt;
&lt;br /&gt;
{{ic|/usr/bin/df}} などの linux の一般的なユーザー空間ツールは Btrfs パーティションの空き容量について間違った報告をします。なぜならメタデータによって使用される予約済みのスペースを考慮しないからです。btrfs パーティションに問い合わせるときは {{ic|/usr/bin/btrfs}} を使うのが推奨されています。以下は {{ic|df -h}} を使った時と、{{ic|btrfs filesystem df}} を使った時の出力の例です:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ df -h /|&lt;br /&gt;
Filesystem      Size  Used Avail Use% Mounted on&lt;br /&gt;
/dev/sda3       119G  3.0G  116G   3% /&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{hc|$ btrfs filesystem df /|2=&lt;br /&gt;
Data: total=3.01GB, used=2.73GB&lt;br /&gt;
System: total=4.00MB, used=16.00KB&lt;br /&gt;
Metadata: total=1.01GB, used=181.83MB&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|df -h}} は 3.0GB 使用されているとしているのに対して {{ic|btrfs filesystem df}} はデータは 2.73GB だと報告しているのに気づいて下さい。これは Btrfs がスペースをプールに割り当てているためです。本当のディスク使用量は3つの &#039;used&#039; を合計した値であり、{{ic|df -h}} による 3.0GB よりかは下回ります。&lt;br /&gt;
&lt;br /&gt;
{{Note|1=カーネル 3.15 以上で {{ic|btrfs filesystem df}} の出力にタイプ {{ic|unknown}} のエントリが表示される場合、これは表示のバグです。[http://thread.gmane.org/gmane.comp.file-systems.btrfs/34419 このパッチ] によって、このエントリは一種のバッファである GlobalReserve を意味しています。このエントリは RAID では {{ic|unknown, single}} として表示され re-balance することができません。}}&lt;br /&gt;
&lt;br /&gt;
他にも大まかに使用容量を読み出すコマンドとして {{ic|btrfs filesystem show}} が使用できます:&lt;br /&gt;
&lt;br /&gt;
 # btrfs filesystem show /dev/sda3&lt;br /&gt;
&lt;br /&gt;
空き容量の情報を取得する最新のコマンドは {{ic|btrfs filesystem usage}} です:&lt;br /&gt;
&lt;br /&gt;
 # btrfs filesystem usage&lt;br /&gt;
&lt;br /&gt;
{{Note|1={{ic|btrfs filesystem usage}} コマンドは RAID レベルが {{ic|RAID5/RAID6}} だと上手く機能しません。}}&lt;br /&gt;
&lt;br /&gt;
== 既知の問題 ==&lt;br /&gt;
&lt;br /&gt;
試行する前に知っておくべき制限事項が存在します。&lt;br /&gt;
&lt;br /&gt;
=== 暗号化 ===&lt;br /&gt;
&lt;br /&gt;
Btrfs にはビルトインの暗号化サポートはありません(将来実装される予定です)が、&amp;lt;code&amp;gt;mkfs.btrfs&amp;lt;/code&amp;gt; をする前にパーティションを暗号化することができます。[[dm-crypt]] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
既に btrfs ファイルシステムを作成してしまっている場合、[[EncFS]] や [[TrueCrypt]] などを使うことができます。ただし btrfs のいくつかの機能が使えなくなるかもしれません。&lt;br /&gt;
&lt;br /&gt;
=== スワップファイル ===&lt;br /&gt;
&lt;br /&gt;
Btrfs の [[スワップファイル]] は Linux カーネル5.0 以降でサポートされています。[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=ed46ff3d423780fa5173b38a844bf0fdb210a2a7] スワップファイルを初期化する適切な方法は、最初にファイルをホストする非圧縮、非スナップショットのサブボリュームを作成し、そのディレクトリに &#039;&#039;cd&#039;&#039; してから、長さゼロのファイルを作成し、{{ic|No_COW}} を設定することです。 属性を [https://wiki.archlinux.jp/index.php/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E3%83%91%E3%83%BC%E3%83%9F%E3%83%83%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%A8%E5%B1%9E%E6%80%A7#chattr_.E3.81.A8_lsattr chattr] で指定し、圧縮が無効になっていることを確認します。&lt;br /&gt;
&lt;br /&gt;
 # cd &#039;&#039;/path/to/swapfile&#039;&#039;&lt;br /&gt;
 # truncate -s 0 ./swapfile&lt;br /&gt;
 # chattr +C ./swapfile&lt;br /&gt;
 # btrfs property set ./swapfile compression none&lt;br /&gt;
&lt;br /&gt;
詳細な設定については、 [https://wiki.archlinux.jp/index.php/%E3%82%B9%E3%83%AF%E3%83%83%E3%83%97#.E3.82.B9.E3.83.AF.E3.83.83.E3.83.97.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB.E3.81.AE.E4.BD.9C.E6.88.90 スワップファイルの作成] を参照してください。スワップファイルへの休止状態の構成については、[https://wiki.archlinux.org/index.php/Power_management/Suspend_and_hibernate#Hibernation_into_swap_file_on_Btrfs Hibernation into swap file on Btrfs]で説明されています。&lt;br /&gt;
&lt;br /&gt;
{{Note|1=Linux カーネル5.0 以降、 Btrfs にはネイティブスワップファイルのサポートがありますが、いくつかの制限があります。&lt;br /&gt;
* スワップファイルをスナップショットサブボリュームに置くことはできません。適切な手順は、スワップファイルを配置する新しいサブボリュームを作成することです。&lt;br /&gt;
* 複数のデバイスにまたがるファイルシステム上のスワップファイルはサポートされていません。 [https://btrfs.wiki.kernel.org/index.php/FAQ#Does_btrfs_support_swap_files.3F Btrfs wiki: Does btrfs support swap files?] および [https://bbs.archlinux.org/viewtopic.php?pid=1849371#p1849371 Arch forums discussion]。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 機能 ==&lt;br /&gt;
&lt;br /&gt;
様々な機能が備わっていて、それぞれ設定が可能です。&lt;br /&gt;
&lt;br /&gt;
=== クォータ ===&lt;br /&gt;
&lt;br /&gt;
{{warning|Qgroup はまだ安定状態ではなくサブボリュームのスナップショットとクォータを組み合わせると操作によってパフォーマンスに問題をきたします (スナップショットの削除など)。さらに [https://btrfs.wiki.kernel.org/index.php/Quota_support#Known_issues 既知の問題] が存在しています。}}&lt;br /&gt;
&lt;br /&gt;
Btrfs におけるクォータのサポートはクォータグループ (qgroup) を利用してサブボリュームレベルで実装されています: 各サブボリュームにはデフォルトで &#039;&#039;0/&amp;lt;subvolume id&amp;gt;&#039;&#039; という形式でクォータグループが割り当てられています。必要であればクォータグループを作成することもできます。&lt;br /&gt;
&lt;br /&gt;
クォータグループを使うにはまずクォータを有効にする必要があります:&lt;br /&gt;
&lt;br /&gt;
 # btrfs quota enable &amp;lt;path&amp;gt;&lt;br /&gt;
&lt;br /&gt;
上記のコマンドを実行してから新しいサブボリュームを作成すると、グループによって制御が可能になります。既存のサブボリュームでも制御を行いたい場合、クォータを有効にしてから、&#039;&#039;&amp;lt;subvolume id&amp;gt;&#039;&#039; を使ってサブボリュームごとにクォータグループを作成して再スキャンしてください:&lt;br /&gt;
&lt;br /&gt;
 # btrfs subvolume list &amp;lt;path&amp;gt; | cut -d&#039; &#039; -f2 | xargs -I{} -n1 btrfs qgroup create 0/{} &amp;lt;path&amp;gt;&lt;br /&gt;
 # btrfs quota rescan &amp;lt;path&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Btrfs のクォータグループはツリー構造になっていて、サイズ制限はクォータグループごとに設定し、ツリーに属しているサブボリュームに制限が課せられます。&lt;br /&gt;
&lt;br /&gt;
クォータグループで設定できる制限は合計データ使用量・非共有のデータ使用量・圧縮データ使用量、あるいはそれらを組み合わせたものです。元のボリュームファイルを削除してコピーを残す場合、他のクォータグループの非共有制限が変わるため、ファイルのコピーや削除で制限に抵触する可能性があります。例えば、新しいスナップショットが元のサブボリュームの全てのブロックと同じデータを持っている場合、どちらかのサブボリュームだけで共通データを削除するともう片方のサブボリュームの制限に引っかかる可能性があります。&lt;br /&gt;
&lt;br /&gt;
クォータグループに制限を設定するには、{{ic|btrfs qgroup limit}} コマンドを使います。合計使用量の制限や非共有制限 ({{ic|-e}}) または圧縮制限 ({{ic|-c}}) が設定できます。ファイルシステムの特定のパスにおける使用量や制限を表示するには:&lt;br /&gt;
&lt;br /&gt;
 # btrfs qgroup show -reF &amp;lt;path&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== コミット間隔の設定 ===&lt;br /&gt;
&lt;br /&gt;
ファイルシステムにどのデータを書き込むかは BTRFS とシステム全体の設定によって決められます。BTRFS のデフォルトでは30秒のチェックポイントインターバルでファイルシステムに新しいデータが送られます。この間隔は[[#チェックポイントインターバル|後述]]のマウントオプションで調整可能です。&lt;br /&gt;
&lt;br /&gt;
システム全体の設定もインターバルに影響を与えます。それには /proc/sys/vm/* 以下のファイルも含まれており、この wiki では扱っていません。Documentation/sysctl/vm.txt にこれらのファイルに関するカーネルドキュメントがあります。&lt;br /&gt;
&lt;br /&gt;
=== コピーオンライト (CoW) ===&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、いついかなる時も、全てのファイルに対して btrfs は CoW を行います: 今までに存在していなかったファイルを書き込もうとした場合、データは空き領域に書き込まれて、ファイルシステムのメタデータブロックが CoW されます。&amp;quot;通常の&amp;quot;ファイルシステムでは、ファイルの一部を上書きした場合、置換先のデータに直接上書きがなされます。CoW ファイルシステムでは、新しいデータはディスクの空き容量に書き込まれて、それから、新しいデータを参照するようにファイルのメタデータが変更されます。元のデータはどこからも参照されなくなって始めて削除されます。&lt;br /&gt;
&lt;br /&gt;
CoW にはアドバンテージがありますが、大きなファイルに小さなランダム書き込みを行うときのパフォーマンスについてはあまり良い影響を与えません。たとえ&amp;quot;コピー&amp;quot;を行わないときでもファイルを断片化させるからです。データベースファイルや仮想マシンイメージについては CoW を無効化することが推奨されます。&lt;br /&gt;
&lt;br /&gt;
CoW を無効にする方法の一つは &amp;quot;nodatacow&amp;quot; オプションを使ってマウントすることです。しかしながら、これではファイルシステム全体で CoW を無効にすることになります。&lt;br /&gt;
&lt;br /&gt;
{{Note|{{ic|nodatacow}} は新規作成されたファイルにのみ影響します。既存のファイルにはまだ CoW が行われる可能性があります。}}&lt;br /&gt;
&lt;br /&gt;
ファイルやディレクトリ単体で CoW を無効化するには、次のコマンドを使って下さい:&lt;br /&gt;
&lt;br /&gt;
 $ chattr +C &amp;lt;/dir/file&amp;gt;&lt;br /&gt;
&lt;br /&gt;
以上のコマンドで CoW が無効化されるのはファイルの参照が一つしかない操作の場合に限られます。複数の参照がある場合 (例: {{ic|1=cp --reflink=always}} を使用したりファイルシステムのスナップショットが存在する場合)、CoW は依然として実行されます。&lt;br /&gt;
&lt;br /&gt;
{{Note|chattr の man ページより: btrfs では、 &#039;C&#039; フラグは新しい、または空のファイルにセットしなければなりません。既にデータブロックを持つファイルにフラグを設定した場合、ファイルに新しいブロックが割り当てられると完全な安定のためにフラグの定義が消されます。ディレクトリに &#039;C&#039; フラグがセットされている場合、そのディレクトリ自体には影響がなく、ディレクトリに作成された新しいファイルに {{ic|No_COW}} 属性が付けられます。}}&lt;br /&gt;
&lt;br /&gt;
{{Tip|上の Note に従い、ディレクトリ内の既存のファイルで CoW を無効にするときは、次のようにします:&lt;br /&gt;
 $ mv &#039;&#039;/path/to/dir&#039;&#039; &#039;&#039;/path/to/dir&#039;&#039;_old&lt;br /&gt;
 $ mkdir &#039;&#039;/path/to/dir&#039;&#039;&lt;br /&gt;
 $ chattr +C &#039;&#039;/path/to/dir&#039;&#039;&lt;br /&gt;
 $ cp -a &#039;&#039;/path/to/dir&#039;&#039;_old/* &#039;&#039;/path/to/dir&#039;&#039;&lt;br /&gt;
 $ rm -rf &#039;&#039;/path/to/dir&#039;&#039;_old&lt;br /&gt;
作業中にファイルが使用されないように気を付けてください。また、 {{ic|mv}} や下で説明する {{ic|cp --reflink}} では CoW を無効にできないことに注意してください。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
同じように、ファイルのコピー時に CoW を強制してスペースを節約するには次を使って下さい (デフォルトでは {{ic|cp}} を使った場合、実際にデータがコピーされます):&lt;br /&gt;
&lt;br /&gt;
 $ cp --reflink source dest&lt;br /&gt;
&lt;br /&gt;
dest ファイルが変更されると、元から変更されたブロックだけがディスクに書き込まれます。cp を &#039;cp --reflink=auto&#039; にするエイリアスを作ってもいいかもしれません。&lt;br /&gt;
&lt;br /&gt;
=== マルチデバイスファイルシステムと RAID 機能 ===&lt;br /&gt;
&lt;br /&gt;
[https://btrfs.wiki.kernel.org/index.php/Using_Btrfs_with_Multiple_Devices Using Btrfs with Multiple Devices] の提案も見て下さい。&lt;br /&gt;
&lt;br /&gt;
====マルチデバイスファイルシステム====&lt;br /&gt;
&lt;br /&gt;
{{Note|適当な &#039;&#039;.device&#039;&#039; ジョブ以外でマルチデバイスファイルシステムをマウントするとファイルシステムの [https://github.com/systemd/systemd/issues/1921 バグ] が原因でフリーズして systemd が起動できなくなります。}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;btrfs&#039;&#039; ファイルシステムを作成する際に、&#039;&#039;mkfs.btrfs&#039;&#039; したい分だけのパーティション・デバイスを指定することができます。ファイルシステムは指定された全てのデバイスにわたって作成されます。このように &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039;pool&#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; することによって、複数のパーティションやデバイスを一つの大きな &#039;&#039;btrfs&#039;&#039; ファイルシステムにできるのです。&lt;br /&gt;
&lt;br /&gt;
また、既に存在している btrfs ファイルシステムからデバイスを追加・削除することも可能です(用心が必要ですが)。&lt;br /&gt;
&lt;br /&gt;
(btrfs ボリュームとも呼ばれる) マルチデバイス &#039;&#039;btrfs&#039;&#039; ファイルシステムは {{ic|btrfs device scan}} を実行するまで認識されません。&#039;&#039;btrfs&#039;&#039; mkinitcpio フックがこれを行います。&lt;br /&gt;
&lt;br /&gt;
====RAID 機能====&lt;br /&gt;
&lt;br /&gt;
{{Note|カーネル 3.19 から、復元や再構築のコードもマージされています。通常の使用に耐えうるようになっています。新しいコードなので、安定化するのは次かその次のバージョンのカーネルになると思われます。}}&lt;br /&gt;
&lt;br /&gt;
マルチデバイスファイルシステムを作成するとき、ファイルシステムに追加したデバイス全体で RAID0, RAID1, RAID10, RAID5, RAID6 を使うように指定することもできます。RAID レベルはデータとメタデータで別個に適用することができます。デフォルトでは、メタデータはシングルボリュームやマルチディスクの RAID1 で複製されます。&lt;br /&gt;
&lt;br /&gt;
btrfs は raid0, raid1, raid10 のブロックペアで動作します:&lt;br /&gt;
&lt;br /&gt;
raid0 - 2つのデバイスに分散されるブロックペア&lt;br /&gt;
&lt;br /&gt;
raid1 - 2つのデバイスに書き込まれるブロックペア&lt;br /&gt;
&lt;br /&gt;
マウント中に {{ic|btrfs balance}} コマンドを使って RAID レベルを変更することができます:&lt;br /&gt;
&lt;br /&gt;
 # btrfs balance start -mconvert=RAIDレベル -dconvert=RAIDレベル マウントポイント&lt;br /&gt;
&lt;br /&gt;
ディスクが2つある場合、md-raid ([[mdadm]]) で定義する raid レベルと一致します。ディスクが3つ以上の場合は、md-raid とは全く異なるものになります。&lt;br /&gt;
&lt;br /&gt;
例えば:&lt;br /&gt;
* md による raid1 の3つの 1TB ディスクを使って、1TB の空き容量で、2つのディスクを失ってもデータが消失しないようにすることが出来ます。&lt;br /&gt;
* data=raid1 の Btrfs ボリュームの3つの 1TB ディスクを使って、満杯になるまでほぼ 1.5TB のデータを保存することができます。ディスクが1つなくなってもデータは消失しません。&lt;br /&gt;
&lt;br /&gt;
Btrfs はディスクに分散してブロックペアを配置するのにラウンドロビン方式を使っています。Linux 3.0 から,ブロックペアを分散する際に大きなディスクを優先するように quasi-round-robin 方式が使われています。これによって複数のディスクからディスクセットが出来ているときに raid0 や raid1 でほとんど (もしくは全て) の領域を効率的に利用することが可能になっています。例えば、1台の 1TB のディスクと2台の 500GB のディスクからなるセットで data=raid1 を使用すると 1TB のディスクには全てのブロックのコピーが、500GB のそれぞれのディスクにはブロックが交互に (ラウンドロビンで) 配置されます。完全な利用効率が実現されます。1TB のディスクと 750GB のディスク、500GB のディスクからなるセットでも同じことが行われますが、ファイルシステムは 750GB のディスクの 250GB が利用できないことを報告します。いつでも全ての領域を活用できるようにするには (最後に上げた例でも)、data=single を使って下さい (data=single は raid コントローラによって定義される JBOD と同じです)。詳しくは [https://btrfs.wiki.kernel.org/index.php/FAQ#How_much_space_do_I_get_with_unequal_devices_in_RAID-1_mode.3F BTRFS FAQ] を参照。&lt;br /&gt;
&lt;br /&gt;
{{Warning|パリティ RAID (RAID 5/6) のコードにはデータを消失する可能性のある深刻なバグが存在します。詳しくは Btrfs Wiki の [https://btrfs.wiki.kernel.org/index.php/RAID56 RAID5/6] のページや [https://www.mail-archive.com/linux-btrfs@vger.kernel.org/msg55161.html linux-btrfs メーリングリスト] のバグレポートを読んでください。}}&lt;br /&gt;
&lt;br /&gt;
=== サブボリューム ===&lt;br /&gt;
&lt;br /&gt;
btrfs の機能のひとつにサブボリュームがあります。サブボリュームは基本的にファイルとディレクトリを保持している名前の付いた b 木です。root ツリーのツリーの中に inode を持ち、root 以外の所有者やグループも設定できます。サブボリュームは任意でブロックを割り当てることもできます。ブロックとファイルエクステントの全ては参照カウントでありスナップショットを可能にしています。仮想マシンの動的な容量拡張に似て、必要な時に必要な分だけのデバイス上の容量を使います。また、サブボリュームを異なったマウントオプションを使ってマウントすることでセキュリティの柔軟性を持たせることもできます。&lt;br /&gt;
&lt;br /&gt;
==== サブボリュームを作成する ====&lt;br /&gt;
&lt;br /&gt;
サブボリュームを作成するには:&lt;br /&gt;
 # btrfs subvolume create &#039;&#039;/path/to/subvolume&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== サブボリュームを一覧する ====&lt;br /&gt;
&lt;br /&gt;
現在のサブボリュームのリストを表示するには:&lt;br /&gt;
&lt;br /&gt;
 # btrfs subvolume list -p .&lt;br /&gt;
&lt;br /&gt;
==== サブボリュームをマウントする ====&lt;br /&gt;
&lt;br /&gt;
サブボリュームは {{ic|1=subvol=&#039;&#039;/path/to/subvolume&#039;&#039;}} や {{ic|1=subvolid=&#039;&#039;objectid&#039;&#039;}} マウントフラグを使うことでファイルシステムのパーティションと同じようにマウントできます。例えば、{{ic|subvol_root}} という名前のサブボリュームが存在したら {{ic|/}} にマウントすることができます。ファイルシステムのトップレベルにサブボリュームを作成して適切なマウントポイントにマウントすることで、伝統的なファイルシステムのパーティションと同じように使うことができ、[[#スナップショット|スナップショット]]を使用してファイルシステムを前の状態に簡単に戻すことが可能です。&lt;br /&gt;
&lt;br /&gt;
{{Tip|1=トップレベルのサブボリューム (ID=5) を {{ic|/}} として使用しないことでサブボリュームのレイアウトの変更を簡単にできます。サブボリュームを作成して実際のデータを保存して {{ic|/}} にマウントします。}}&lt;br /&gt;
&lt;br /&gt;
[[Snapper#推奨ファイルシステムレイアウト]], [https://btrfs.wiki.kernel.org/index.php/SysadminGuide#Managing_Snapshots Btrfs SysadminGuide#Managing Snapshots], [https://btrfs.wiki.kernel.org/index.php/SysadminGuide#Layout Btrfs SysadminGuide#Layout] などにサブボリュームを使用するファイルシステムレイアウトの例が存在します。&lt;br /&gt;
&lt;br /&gt;
===== マウントオプション =====&lt;br /&gt;
&lt;br /&gt;
{{ic|1=subvol=}} でサブボリュームをマウントする際、複数のマウントオプションが利用できます。例えば、[[#圧縮|圧縮]]や[[#コピーオンライト (CoW)|コピーオンライト (CoW)]] に関するマウントオプションが使えます。&lt;br /&gt;
&lt;br /&gt;
詳しくは [https://btrfs.wiki.kernel.org/index.php/Mount_options Btrfs Wiki Mount options] や [https://btrfs.wiki.kernel.org/index.php/Gotchas Btrfs Wiki Gotchas] を見てください。様々なマウントオプションを使うことで Btrfs の特性は大きく変わります。活発に開発されているファイルシステムであるため、リグレッションも考慮してください。[[#参照|参照]]セクションには複数のベンチマークへのリンクが存在します。&lt;br /&gt;
&lt;br /&gt;
{{Warning|特定のマウントオプションは安全を保証するための機能を無効化して、ファイルシステムが完全に破損する危険性を引き上げてしまいます。}}&lt;br /&gt;
&lt;br /&gt;
==== サブボリュームをルートとしてマウントする ====&lt;br /&gt;
&lt;br /&gt;
サブボリュームをルートマウントポイントとして使用するには、{{ic|1=rootflags=subvol=&#039;&#039;/path/to/subvolume&#039;&#039;}} を使用して [[カーネルパラメータ#設定|カーネルパラメータ]] 経由でサブボリュームを指定します。{{ic|/etc/fstab}} でルート・マウントポイントを編集し、マウント・オプションに {{ic|1=subvol=}} を指定します。または、サブボリュームの ID {{ic|1=rootflags=subvolid=&#039;&#039;objectid&#039;&#039;}} をカーネルパラメータとして使い、{{ic|1=subvolid=&#039;&#039;objectid&#039;&#039;}} を {{ic|/etc/fstab}} のマウントオプションとして指定することもできます。&lt;br /&gt;
&lt;br /&gt;
==== デフォルトのサブボリュームを設定する ====&lt;br /&gt;
&lt;br /&gt;
{{Warning|{{ic|btrfs subvolume set-default}} でデフォルトのサブボリュームを変更すると、{{ic|1=subvolid=0}} マウントオプションを使わない限り、ファイルシステムのトップレベルがアクセスできなくなります。参照: [https://btrfs.wiki.kernel.org/index.php/SysadminGuide Btrfs Wiki Sysadmin Guide]。}}&lt;br /&gt;
&lt;br /&gt;
{{ic|1=subvol=}} マウントオプションが指定されていない場合、デフォルトのサブボリュームがマウントされます。&lt;br /&gt;
&lt;br /&gt;
 # btrfs subvolume set-default &#039;&#039;subvolume-id&#039;&#039; /.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;サンプル:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{hc|# btrfs subvolume list .|&lt;br /&gt;
ID 258 gen 9512 top level 5 path root_subvolume&lt;br /&gt;
ID 259 gen 9512 top level 258 path home&lt;br /&gt;
ID 260 gen 9512 top level 258 path var&lt;br /&gt;
ID 261 gen 9512 top level 258 path usr&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
 # btrfs subvolume set-default 258 .&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;リセット:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 # btrfs subvolume set-default 0 .&lt;br /&gt;
&lt;br /&gt;
==== スナップショット ====&lt;br /&gt;
&lt;br /&gt;
詳しくは [https://btrfs.wiki.kernel.org/index.php/SysadminGuide#Snapshots Btrfs Wiki SysadminGuide#Snapshots] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
スナップショットを作成するには:&lt;br /&gt;
&lt;br /&gt;
 # btrfs subvolume snapshot &#039;&#039;source&#039;&#039; [&#039;&#039;dest&#039;&#039;/]&#039;&#039;name&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
スナップショットは再帰的ではありません、つまりサブボリューム内にある全てのサブボリュームはスナップショットでは空のディレクトリになります。&lt;br /&gt;
&lt;br /&gt;
==== 送信/受信 ====&lt;br /&gt;
&lt;br /&gt;
サブボリュームは {{ic|send}} コマンドを使って標準出力やファイルに送信することができます。Btrfs の {{ic|receive}} コマンドにパイプで渡すことで非常に便利に使うことが可能です。例えば、{{ic|/root_backup}} という名前のスナップショットを {{ic|/backup}} に送信するには以下のコマンドを実行します:&lt;br /&gt;
&lt;br /&gt;
 # btrfs send /root_backup | btrfs receive /backup&lt;br /&gt;
&lt;br /&gt;
送信するスナップショットは読み取り専用である必要があります。上記のコマンドは外部デバイスにサブボリュームをコピーするのにも使えます (例えば上の {{ic|/backup}} を USB ディスクにマウント)。&lt;br /&gt;
&lt;br /&gt;
また、スナップショットの差分だけを送信することも可能です。例えば、上記のように {{ic|root_backup}} のコピーを送信したことがある場合、{{ic|root_backup_new}} という名前の読み取り専用のスナップショットを新しく作成してから、増加差分だけを {{ic|/backup}} に送信するには:&lt;br /&gt;
&lt;br /&gt;
 # btrfs send -p /root_backup /root_backup_new | btrfs receive /backup&lt;br /&gt;
&lt;br /&gt;
これで {{ic|root_backup_new}} という名前の新しいサブボリュームが {{ic|/backup}} に作成されます。&lt;br /&gt;
&lt;br /&gt;
差分バックアップをしたり自動的にバックアップを行うツールは [https://btrfs.wiki.kernel.org/index.php/Incremental_Backup Btrfs Wiki&#039;s Incremental Backup] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== デフラグメンテーション ===&lt;br /&gt;
&lt;br /&gt;
Btrfs はオンラインデフラグをサポートしています。root フォルダのメタデータをデフラグするには、次を実行してください:&lt;br /&gt;
 # btrfs filesystem defragment /&lt;br /&gt;
上のコマンドはファイルシステム全体のデフラグを&#039;&#039;行いません&#039;&#039;。詳しくは、btrfs wiki の[https://btrfs.wiki.kernel.org/index.php/Problem_FAQ#Defragmenting_a_directory_doesn.27t_work このページ]を見て下さい。&lt;br /&gt;
&lt;br /&gt;
ファイルシステム全体をデフラグするには、次を実行してください:&lt;br /&gt;
 # btrfs filesystem defragment -r -v /&lt;br /&gt;
&lt;br /&gt;
=== 圧縮 ===&lt;br /&gt;
&lt;br /&gt;
Btrfs は透過圧縮をサポートしています、これはパーティション上の全てのファイルが自動的に圧縮されることを意味します。このことはファイルの容量を減らすだけでなく、特に [https://www.phoronix.com/scan.php?page=article&amp;amp;item=btrfs-zstd-compress zstd アルゴリズム] や [https://www.phoronix.com/scan.php?page=article&amp;amp;item=btrfs_lzo_2638&amp;amp;num=1 lzo アルゴリズム] を使う場合、一般的に [https://www.phoronix.com/scan.php?page=article&amp;amp;item=btrfs_compress_2635&amp;amp;num=1 パフォーマンスが向上] します。&lt;br /&gt;
&lt;br /&gt;
圧縮は {{ic|1=compress=zlib}} か {{ic|1=compress=lzo}} マウントオプションを使って有効にします。マウントオプションが追加された後に作成・変更されたファイルだけに圧縮が適用されます。ただし、{{ic|btrfs filesystem defragment -c&#039;&#039;alg&#039;&#039;}} コマンドを使うことで既存のファイルに圧縮を適用することも簡単にできます (例えば ext3/4 から変換した後)。{{ic|&#039;&#039;alg&#039;&#039;}} は {{ic|zlib}} または {{ic|lzo}} のどちらかに置き換えてください。{{ic|lzo}} を使ってファイルシステム全体を再圧縮するには、次のコマンドを実行してください:&lt;br /&gt;
&lt;br /&gt;
 # btrfs filesystem defragment -r -v -clzo /&lt;br /&gt;
&lt;br /&gt;
{{Tip|{{ic|compress}} マウントオプションを使わずファイルごとに圧縮を有効にすることも可能です。ファイルに {{ic|chattr +c}} を適用するだけです。ディレクトリに適用した場合、新しいファイルは自動的に圧縮されます。}}&lt;br /&gt;
&lt;br /&gt;
空の Btrfs パーティションに Arch をインストールする際に、[[ビギナーズガイド#ドライブの準備|ドライブの準備]]をした後 {{ic|compress}} オプションを設定してください。他のターミナルに切り替えて ({{ic|Ctrl+Alt+number}})、次のコマンドを実行してください:&lt;br /&gt;
 # mount -o remount,compress=lzo /mnt/target&lt;br /&gt;
&lt;br /&gt;
インストールが完了した後に、{{ic|/etc/[[fstab]]}} の root ファイルシステムのマウントオプションに {{ic|1=compress=lzo}} を加えて下さい。&lt;br /&gt;
&lt;br /&gt;
=== チェックポイントインターバル ===&lt;br /&gt;
Linux 3.12 から、チェックポイントインターバルをデフォルトの30秒から変えることができるようになっています。{{ic|/etc/fstab}} の btrfs パーティションに {{ic|commit}} マウントフラグを追加してください。&lt;br /&gt;
&lt;br /&gt;
 LABEL=arch64 / btrfs defaults,noatime,compress=lzo,commit=120 0 0&lt;br /&gt;
&lt;br /&gt;
=== パーティショニング ===&lt;br /&gt;
&lt;br /&gt;
Btrfs はデータストレージデバイス全体を占領して [[Master Boot Record|MBR]] や [[GUID Partition Table|GPT]] パーティショニングスキームを置き換えることができます。[[#サブボリューム|サブボリューム]]を使ってパーティションを模すことが可能です。ディスクを一つしか使っていない場合、このアプローチにはいくつか制限があります:&lt;br /&gt;
&lt;br /&gt;
* [[fstab|マウントポイント]]によって異なる[[ファイルシステム]]を使うことはできません&lt;br /&gt;
* Btrfs は[[スワップ#スワップファイル|スワップファイル]]をサポートしていないので[[スワップ|スワップ領域]]を使うことができません。[[スワップ#スワップパーティション|スワップパーティション]]も作れません。ハイバネーションイメージはスワップ領域に保存されるので、ハイバネーション/レジュームも使えません&lt;br /&gt;
* [[Unified Extensible Firmware Interface|UEFI]] を使って起動できません&lt;br /&gt;
&lt;br /&gt;
既存のパーティションテーブルを Btrfs で上書きするには、次のコマンドを実行してください:&lt;br /&gt;
 # mkfs.btrfs /dev/sdX&lt;br /&gt;
{{ic|/dev/sdaX}} を指定するとパーティションスキーム全体を置き換える代わりに既存のパーティションがフォーマットされます。&lt;br /&gt;
&lt;br /&gt;
[[Master Boot Record|MBR]] のデータストレージデバイスと同じ方法で[[ブートローダー]]をインストールしてください。例えば [[GRUB]] なら:&lt;br /&gt;
 # grub-install --recheck /dev/sdX&lt;br /&gt;
&lt;br /&gt;
{{Warning|{{ic|btrfs subvolume set-default}} コマンドを使ってデフォルトのサブボリュームをトップレベル (ID 0) 以外に変更すると GRUB を破壊するおそれがあります。リセットするには [[#デフォルトのサブボリュームを設定する]] を見て下さい。}}&lt;br /&gt;
&lt;br /&gt;
=== Scrub ===&lt;br /&gt;
&lt;br /&gt;
Btrfs の scrub はオンラインのファイルシステムチェックツールです。ファイルシステム上の全てのデータとメタデータを読み込んで、チェックサムと RAID ストレージの重複コピーを使用してデータに破損がないか確認して修復を行います。&lt;br /&gt;
&lt;br /&gt;
 # btrfs scrub start /&lt;br /&gt;
 # btrfs scrub status /&lt;br /&gt;
&lt;br /&gt;
{{Warning|scrub プロセスが動作しているとシステムはサスペンドできません、詳しくは [http://comments.gmane.org/gmane.comp.file-systems.btrfs/33106 このスレッド] を見て下さい。}}&lt;br /&gt;
&lt;br /&gt;
==== systemd サービス ====&lt;br /&gt;
&lt;br /&gt;
{{Pkg|btrfs-progs}} パッケージには特定のマウントポイントをひと月毎にスクラブする {{ic|btrfs-scrub@.timer}} ユニットが付属しています。エンコードしたパスを指定してタイマーを[[有効化]]してください。例えば {{ic|/}} なら {{ic|btrfs-scrub@-.timer}} を、{{ic|/home}} なら {{ic|btrfs-scrub@home.timer}} を使います。&lt;br /&gt;
&lt;br /&gt;
{{ic|btrfs-scrub@.service}} を[[起動]]することで手動でスクラブを実行することもできます (同じくエンコードしたパスを指定してください)。{{ic|btrfs scrub}} コマンドを手動で実行するのとは違って systemd サービスを使うことで [[systemd#Journal|journal]] にログが記録されます。&lt;br /&gt;
&lt;br /&gt;
=== Balance ===&lt;br /&gt;
&lt;br /&gt;
balance はファイルシステム上の全てのデータをアロケータに再度流し込みます。デバイスが追加されたり削除された場合にファイルシステム上のデータを再配置するために実行します。balance はデバイスが故障した場合に、冗長な RAID レベルのコピーを再生成します。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|btrfs-progs}}-3.12 から&#039;&#039;バランシング&#039;&#039;はバックグラウンドプロセスになりました - 詳しくは {{ic|man 8 btrfs-balance}} を見て下さい。&lt;br /&gt;
&lt;br /&gt;
 # btrfs balance start /&lt;br /&gt;
 # btrfs balance status /&lt;br /&gt;
&lt;br /&gt;
=== SSD TRIM ===&lt;br /&gt;
&lt;br /&gt;
{{ic|discard}} オプションを使ってマウントした場合、Btrfs ファイルシステムは TRIM コマンドをサポートしている SSD ドライブの空きブロックを自動的に開放します。&lt;br /&gt;
&lt;br /&gt;
SATA 3.1 よりも古い場合、TRIM コマンドは同期的で、コマンドが実行されている間は全ての I/O がブロックされます。ファイルシステムの同期などによって、プチフリーズが発生する可能性があります。このような場合、{{ic|discard}} を使用する代わりに定期的な trim を有効にすることができます:&lt;br /&gt;
&lt;br /&gt;
 # systemctl enable fstrim.timer&lt;br /&gt;
&lt;br /&gt;
SATA バージョンを確認するには次を実行:&lt;br /&gt;
&lt;br /&gt;
 # smartctl --info /dev/sd&#039;&#039;X&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
詳しくは[[ソリッドステートドライブ#TRIM]] を参照。&lt;br /&gt;
&lt;br /&gt;
=== 重複排除 ===&lt;br /&gt;
&lt;br /&gt;
コピーオンライトを使用した場合、Btrfs は実際にはデータをコピーしないでファイルやサブボリュームをコピーできます。ファイルに変更が加えられたときに新しい本当のコピーが作成されます。重複排除はさらに共通部分が存在するデータブロックを認識して、コピーオンライトと同じようにエクステントにまとめてしまいます。&lt;br /&gt;
&lt;br /&gt;
Btrfs パーティションの重複排除に使用するツールについては [https://btrfs.wiki.kernel.org/index.php/Deduplication#Batch 上流の Wiki エントリ] を見てください。{{Pkg|duperemove}}, {{aur|bedup}}, &#039;&#039;btrfs-dedup&#039;&#039; などが存在します。{{pkg|rmlint}} あるいは {{aur|jdupes}} などを使うことでファイルベースでデータの重複排除を行うこともできます。&lt;br /&gt;
&lt;br /&gt;
Btrfs の開発者はインバンド (同期的・インライン) 重複排除に取り組んでおり、新しいデータがファイルシステムに書き込まれたときに重複排除が実行されます。現在のところ実験的な機能としてツリー外で開発されています。新しい機能をテストしてみたい場合は [https://btrfs.wiki.kernel.org/index.php/User_notes_on_dedupe カーネルの wiki ページ] を参照してください。&lt;br /&gt;
&lt;br /&gt;
== 既知の問題 ==&lt;br /&gt;
&lt;br /&gt;
試す前に、いくつかの制限を知っておく必要があります。&lt;br /&gt;
&lt;br /&gt;
=== 暗号化 ===&lt;br /&gt;
&lt;br /&gt;
Btrfs には暗号化のサポートが組み込まれていませんが、この [https://lwn.net/Articles/700487/] は将来的に提供される可能性があります。 ユーザーは、 {{ic|mkfs.btrfs}} を実行する前にパーティションを暗号化できます。 [https://wiki.archlinux.jp/index.php/Dm-crypt/%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E5%85%A8%E4%BD%93%E3%81%AE%E6%9A%97%E5%8F%B7%E5%8C%96#Btrfs_.E3.82.B5.E3.83.96.E3.83.9C.E3.83.AA.E3.83.A5.E3.83.BC.E3.83.A0.E3.81.A8.E3.82.B9.E3.83.AF.E3.83.83.E3.83.97 dm-crypt/スワップを使用したsystem#Btrfsサブボリューム全体の暗号化] を参照してください。&lt;br /&gt;
&lt;br /&gt;
既存の Btrfs ファイルシステムは [[EncFS]] や [[TrueCrypt]] のようなものを使用できますが、おそらく Btrfs の機能の一部はありません。&lt;br /&gt;
&lt;br /&gt;
=== TLP ===&lt;br /&gt;
&lt;br /&gt;
TLP を使用するには、ファイルシステムの破損を回避するために特別な予防措置が必要です。 詳細については、 [[TLP#Btrfs|TLP の Btrfs セクション]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== btrfs チェックの問題 ===&lt;br /&gt;
ツール{{ic|btrfs check}} には既知の問題があるため、セクション [[#btrfscheck]] をよく参照してから実行してください。&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== パーティションレス Btrfs ディスク ===&lt;br /&gt;
&lt;br /&gt;
{{Warning|&lt;br /&gt;
* ほとんどのユーザーはこのタイプのセットアップを望まず、代わりに通常のパーティションにBtrfsをインストールする必要があります。 さらに、 GRUB はパーティションレスディスクへのインストールを強くお勧めしません。&lt;br /&gt;
* {{Pkg|grub}} 2.04 以降、GRUB の {{ic|core.img}} は大きすぎてBtrfsVBRに収まりません。 {{Bug|63656}} を参照してください。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Btrfs は、 [[#Subvolumes|subvolumes]] を使用してパーティションをシミュレートし、 [[MBR]] または [[GPT]] パーティションスキームを置き換えて、データストレージデバイス全体を占有できます。 ただし、別の方法で作成された既存の [https://wiki.archlinux.jp/index.php/%E3%83%91%E3%83%BC%E3%83%86%E3%82%A3%E3%82%B7%E3%83%A7%E3%83%8B%E3%83%B3%E3%82%B0 パーティション] で [[#File systemcreation|create a Btrfsfilesystem]] を実行するためにパーティションレスセットアップを使用する必要はありません。 パーティションレスのシングルディスクセットアップには、いくつかの制限があります。&lt;br /&gt;
&lt;br /&gt;
* 他の [[ファイルシステム]] を同じディスク上の別のパーティションに配置することはできません。&lt;br /&gt;
* バージョン5.0より前の Linux カーネルを使用している場合、 [[スワップ|スワップ領域]] は使用できません。 Btrfs は[https://wiki.archlinux.jp/index.php/%E3%82%B9%E3%83%AF%E3%83%83%E3%83%97#.E3.82.B9.E3.83.AF.E3.83.83.E3.83.97.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB スワップファイル] 5.0 より前をサポートしておらず、 [https://wiki.archlinux.jp/index.php/%E3%82%B9%E3%83%AF%E3%83%83%E3%83%97#.E3.82.B9.E3.83.AF.E3.83.83.E3.83.97.E3.83.91.E3.83.BC.E3.83.86.E3.82.A3.E3.82.B7.E3.83.A7.E3.83.B3 スワップパーティション] を作成する場所もありませんでした。&lt;br /&gt;
* [[UEFI]] を使用して起動することはできません。&lt;br /&gt;
&lt;br /&gt;
既存のパーティションテーブルを Btrfs で上書きするには、次のコマンドを実行します:&lt;br /&gt;
&lt;br /&gt;
 # mkfs.btrfs /dev/sd&#039;&#039;X&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
たとえば、 {{ic|/dev/sda1}} ではなく {{ic|/dev/sda}} を使用します。後者は、パーティショニングスキーム全体を置き換えるのではなく、既存のパーティションをフォーマットします。ルートパーティションは Btrfs なので、 {{ic|btrfs}} がカーネルに組み込まれていることを確認するか、 {{ic|btrfs}} を [[mkinitcpio.conf#MODULES]] と [https://wiki.archlinux.jp/index.php/Mkinitcpio#.E3.82.A4.E3.83.A1.E3.83.BC.E3.82.B8.E4.BD.9C.E6.88.90.E3.81.A8.E3.82.A2.E3.82.AF.E3.83.86.E3.82.A3.E3.83.99.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3 initramfsを再生成する] に入れてください。&lt;br /&gt;
&lt;br /&gt;
[https://wiki.archlinux.jp/index.php/Arch_%E3%83%96%E3%83%BC%E3%83%88%E3%83%97%E3%83%AD%E3%82%BB%E3%82%B9#.E3.83.96.E3.83.BC.E3.83.88.E3.83.AD.E3.83.BC.E3.83.80.E3.83.BC ブートローダ] を、 [https://wiki.archlinux.jp/index.php/%E3%83%91%E3%83%BC%E3%83%86%E3%82%A3%E3%82%B7%E3%83%A7%E3%83%8B%E3%83%B3%E3%82%B0#Master_Boot_Record マスターブートレコード] を備えたデータ記憶装置の場合と同様にインストールします。[[Syslinux#手動インストール]] または [[GRUB/Tips and tricks#パーティションまたはパーティションレスディスクへのインストール]] を参照してください。 {{ic|/sysrootをマウントできませんでした。}} が原因でカーネルがブートしない場合は、 {{ic|/etc/default/grub}} に {{ic|1=GRUB_PRELOAD_MODULES=&amp;quot;btrfs&amp;quot;}} を追加して、 grub 設定 ([[GRUB#メインの構成ファイルを生成する]]) を生成してください。&lt;br /&gt;
&lt;br /&gt;
=== Ext3/4 から Btrfs への変換 ===&lt;br /&gt;
&lt;br /&gt;
{{Warning|btrfs メーリングリストには、不完全/破壊/破損した変換に関する多くの報告があります。 失いたくないデータや &#039;&#039;作業中&#039;&#039; のバックアップがあることを確認してください。 詳細については、 btrfswiki の [https://btrfs.wiki.kernel.org/index.php/Conversion_from_Ext3Conversion fromExt3] を参照してください。}}&lt;br /&gt;
{{Warning| btrfs-progs 5.6.1 以前にはバグがあり、最後のブロックグループのサイズが間違った btrfs ファイルシステムが生成され、新しく変換されたbtrfsをマウントできなくなります。 このバグは、 [https://github.com/kdave/btrfs-progs/commit/0ff7a9b5210723bd4ad0d9d78dbbb18ee8fdd2b1#diff-31168275dcaac634489082b54c4c66d0 thiscommit] の btrfs-progs5.7 で修正されています。 btrfs-progs5.7-1 以降の btrfs-convert を使用してください。}}&lt;br /&gt;
&lt;br /&gt;
インストール CD から起動し、次の手順で変換します:&lt;br /&gt;
&lt;br /&gt;
 # btrfs-convert /dev/&#039;&#039;partition&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
パーティションをマウントし、ファイルをチェックして変換をテストします。 変更を反映するために、必ず {{ic|/etc/fstab}} を変更してください( &#039;&#039;&#039;type&#039;&#039;&#039; を {{ic|btrfs}} に、 &#039;&#039;&#039;fs_passno&#039;&#039;&#039; [最後のフィールド] を {{ic|0}} Btrfs は起動時にファイルシステムチェックを行わないため)。 また、パーティションの UUID が変更されることに注意してください。したがって、 UUID を使用する場合は、それに応じて fstab を更新してください。 {{ic|chroot}} をシステムにインストールし、 GRUB メニューリストを再構築します ([[既存の Linux からインストール]] および [[GRUB]] の記事を参照)。 ルートファイルシステムを変換する場合、 chroot されたまま {{ic|mkinitcpio -p linux}} を実行して initramfs を再生成しないと、システムが正常に起動しません。 &#039;unknown filesystem&#039; で grub でスタックした場合は、 {{ic|grub-install /dev/&#039;&#039;partition&#039;&#039;}} で grub を再インストールし、構成も再生成してください {{ic|grub-mkconfig -o /boot/grub/grub.cfg}}&lt;br /&gt;
&lt;br /&gt;
{{Note|新しく変換された btrfs にファイルをマウントまたは書き込みできないなどの問題がある場合は、バックアップサブボリューム {{ic|/ext2_saved}} がまだ存在する限り、常にロールバックするオプションがあります。 {{ic|btrfs-convert -r /dev/&#039;&#039;partition&#039;&#039;}} コマンドを使用してロールバックします。これにより、新しく変換された btrfs ファイルシステムへの変更が破棄されます。}}&lt;br /&gt;
&lt;br /&gt;
問題がないことを確認したら、バックアップ {{ic|ext2_saved}} サブボリュームを削除して変換を完了します。 これがないと ext3/4 に戻れないことに注意してください。&lt;br /&gt;
&lt;br /&gt;
 # btrfs subvolume delete /ext2_saved&lt;br /&gt;
&lt;br /&gt;
最後に [[#Balance|balance]] ファイルシステムでスペースを再利用します。&lt;br /&gt;
&lt;br /&gt;
以前にインストールされた一部のアプリケーションは、 Btrfs に適合させる必要があることに注意してください。 特に [[TLP#Btrfs]] はファイルシステムの破損を避けるために特別な注意が必要です。&lt;br /&gt;
&lt;br /&gt;
=== チェックサムのハードウェアアクセラレーション ===&lt;br /&gt;
&lt;br /&gt;
Btrfs のチェックサムでハードウェアアクセラレーションが使われているかどうか確認するには:&lt;br /&gt;
{{hc|&amp;lt;nowiki&amp;gt;$ dmesg | grep crc32c&amp;lt;/nowiki&amp;gt;|&amp;lt;nowiki&amp;gt;Btrfs loaded, crc32c=crc32c-intel&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{ic|&amp;lt;nowiki&amp;gt;crc32c=crc32c-generic&amp;lt;/nowiki&amp;gt;}} と表示された場合、ルートパーティションが Btrfs であるため、ハードウェアアクセラレーションを使うにはカーネルに {{ic|crc32c-intel}} を組み込む必要があります。[[mkinitcpio.conf]] に {{ic|crc32c-intel}} を追加するだけでは機能しません。&lt;br /&gt;
&lt;br /&gt;
=== ファイルシステム破損のリカバリ ===&lt;br /&gt;
&lt;br /&gt;
{{Warning|{{ic|btrfs check}} ツールには既知の問題があります。セクション [[Btrfs#btrfs check|btrfs check]] を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;btrfs-check&#039;&#039; はマウントされているファイルシステムでは使えません。ライブ USB から起動しないで &#039;&#039;btrfs-check&#039;&#039; を使えるようにするには、初期 RAM ディスクに以下のように追加してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/mkinitcpio.conf|output=&lt;br /&gt;
BINARIES=&amp;quot;/usr/bin/btrfs&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
設定したら [[mkinitcpio]] を使って initramfs を再生成してください。&lt;br /&gt;
&lt;br /&gt;
起動に問題が発生したら、ユーティリティを使って修復することができます。&lt;br /&gt;
&lt;br /&gt;
{{Note|fsck でキャッシュを無効化する必要がある場合、起動後に一定時間フリーズするのは通常の動作です (btrfs-transaction がハングアップしているというメッセージがコンソールに表示されます)。しばらく経てばシステムは復帰します。}}&lt;br /&gt;
&lt;br /&gt;
詳しくは [https://btrfs.wiki.kernel.org/index.php/Btrfsck Btrfs Wiki] を参照。&lt;br /&gt;
&lt;br /&gt;
=== スナップショットから起動する ===&lt;br /&gt;
&lt;br /&gt;
スナップショットをブートするためには、セクション [[Btrfs#サブボリュームをルートとしてマウントする|サブボリュームをルートとしてマウントする]] で説明されているように、サブボリュームをルートパーティションとしてマウントする場合と同じ手順が適用されます。スナップショットはサブボリュームのようにマウントできます。&lt;br /&gt;
&lt;br /&gt;
* [[GRUB]] を使用している場合、{{Pkg|grub-btrfs}} または {{AUR|grub-btrfs-git}} を使用して構成ファイルを再生成すると、自動的に btrfs スナップショットをブートメニューに取り込むことができます。&lt;br /&gt;
* [[rEFInd]] を使用している場合は、{{ic|refind-btrfs.service}} を [[systemd#ユニットを使う|有効]] にして開始後に、{{AUR|refind-btrfs}} を使用してブートメニューに btrfs スナップショットを自動的に取り込むことができます。&lt;br /&gt;
&lt;br /&gt;
=== systemd-nspawn で Btrfs サブボリュームを使う ===&lt;br /&gt;
&lt;br /&gt;
[[Systemd-nspawn#Btrfs のサブボリュームをコンテナのルートとして使う]]や [[Systemd-nspawn#コンテナの一時的な Btrfs スナップショットを使う]]を見てください。&lt;br /&gt;
&lt;br /&gt;
=== アクセス時間のメタデータ更新を削減 ===&lt;br /&gt;
&lt;br /&gt;
Btrfs は書き込み時にコピーの性質を持つため、ファイルにアクセスするだけでメタデータのコピーと書き込みを開始します。アクセス時間の更新頻度を減らすと、この予期しないディスク使用がなくなり、パフォーマンスが向上する可能性があります。使用可能なオプションについては、 [[fstab#atime オプション|atime オプション]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
一般的なトラブルシューティングについては [https://btrfs.wiki.kernel.org/index.php/Problem_FAQ Btrfs Problem FAQ] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
=== GRUB ===&lt;br /&gt;
&lt;br /&gt;
==== パーティションオフセット ====&lt;br /&gt;
&lt;br /&gt;
[[GRUB]] は Btrfs パーティションを起動することができますが、そのモジュールは ext4 などよりも大きく、&#039;&#039;grub-install&#039;&#039; によって作成される {{ic|core.img}} が MBR と最初のパーティションの間に収まらない可能性があります。GPT を使うか、最初のパーティションの前に数 MB の空きスペースを作ることでこの問題を解決できます。&lt;br /&gt;
&lt;br /&gt;
==== root が見つからない ====&lt;br /&gt;
&lt;br /&gt;
RAID セットアップから起動した時にエラー {{ic|1=error no such device: root}} が表示される場合、{{ic|/usr/share/grub/grub-mkconfig_lib}} を編集して {{ic|1=echo &amp;quot;  search --no-floppy --fs-uuid --set=root ${hints} ${fs_uuid}&amp;quot;}} からクォートを削除してください。grub の設定を再生成すればエラーを出さずに起動できるはずです。&lt;br /&gt;
&lt;br /&gt;
=== BTRFS: open_ctree failed ===&lt;br /&gt;
&lt;br /&gt;
2014年11月現在、{{ic|mkinitcpio.conf}} で {{ic|btrfs}} フックを使用してマルチデバイスの Btrfs を使っている場合に以下のエラーが発生するというバグが [[systemd]] か [[mkinitcpio]] のどちらかに存在します:&lt;br /&gt;
&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
BTRFS: open_ctree failed&lt;br /&gt;
mount: wrong fs type, bad option, bad superblock on /dev/sdb2, missing codepage or helper program, or other error&lt;br /&gt;
&lt;br /&gt;
In some cases useful info is found in syslog - try dmesg|tail or so.&lt;br /&gt;
&lt;br /&gt;
You are now being dropped into an emergency shell.&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/mkinitcpio.conf}} の {{ic|HOOKS}} 行から {{ic|btrfs}} を削除して代わりに {{ic|MODULES}} 行に {{ic|btrfs}} を追加することで解決します。修正を施したら {{ic|mkinitcpio -p linux}} で initramfs を再生成して (必要ならプリセットを調整します) 再起動してください。&lt;br /&gt;
&lt;br /&gt;
詳細は [https://bbs.archlinux.org/viewtopic.php?id=189845 フォーラムスレッド] や {{Bug|42884}} を見て下さい。&lt;br /&gt;
&lt;br /&gt;
デバイスが存在しない raid アレイをマウントしようとしたときも同じエラーが表示されます。その場合は {{ic|/etc/fstab}} に {{ic|degraded}} マウントオプションを追加してください。ルートパーティションがアレイ上にある場合、[[カーネルパラメータ]]に {{ic|1=rootflags=degraded}} を追加してください。&lt;br /&gt;
&lt;br /&gt;
=== btrfs check ===&lt;br /&gt;
&lt;br /&gt;
{{Warning|Btrfs はまだ開発途上であり、特に {{ic|btrfs check}} コマンドについては仕様が固まっていないので、{{ic|--repair}} スイッチを付けて {{ic|btrfs check}} を実行するときはあらかじめ Btrfs のドキュメントを読んでバックアップを作成することを強く推奨します。}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;[https://btrfs.wiki.kernel.org/index.php/Manpage/btrfs-check btrfs check]&#039;&#039; コマンドを使うことでアンマウントされた Btrfs ファイルシステムをチェックしたり修復することが可能です。ただし、この修復ツールはまだ開発中であり、特定のファイルシステムエラーは修復することができません。&lt;br /&gt;
&lt;br /&gt;
詳しくは [https://btrfs.wiki.kernel.org/index.php/Btrfsck Btrfsck] を参照。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* 公式サイト&lt;br /&gt;
** [https://btrfs.wiki.kernel.org/ Btrfs Wiki]&lt;br /&gt;
* パフォーマンス関連&lt;br /&gt;
** [https://superuser.com/questions/432188/should-i-put-my-multi-device-btrfs-filesystem-on-disk-partitions-or-raw-devices Btrfs on raw disks?]&lt;br /&gt;
** [http://comments.gmane.org/gmane.comp.file-systems.btrfs/19440 Varying leafsize and nodesize in Btrfs]&lt;br /&gt;
** [http://comments.gmane.org/gmane.comp.file-systems.btrfs/15646 Btrfs support for efficient SSD operation (data blocks alignment)]&lt;br /&gt;
** [https://btrfs.wiki.kernel.org/index.php/FAQ#Is_Btrfs_optimized_for_SSD.3F Is Btrfs optimized for SSDs?]&lt;br /&gt;
** Phoronix によるマウントオプションのベンチマーク&lt;br /&gt;
*** [https://www.phoronix.com/scan.php?page=article&amp;amp;item=btrfs-mount-linux49 Linux 4.9]&lt;br /&gt;
*** [https://www.phoronix.com/scan.php?page=article&amp;amp;item=linux_314_btrfs Linux 3.14]&lt;br /&gt;
*** [https://www.phoronix.com/scan.php?page=article&amp;amp;item=linux_btrfs_311&amp;amp;num=1 Linux 3.11]&lt;br /&gt;
*** [https://www.phoronix.com/scan.php?page=news_item&amp;amp;px=MTM0OTU Linux 3.9]&lt;br /&gt;
*** [https://www.phoronix.com/scan.php?page=article&amp;amp;item=btrfs_linux37_mounts&amp;amp;num=1 Linux 3.7]&lt;br /&gt;
*** [https://www.phoronix.com/scan.php?page=article&amp;amp;item=linux_btrfs_options&amp;amp;num=1 Linux 3.2]&lt;br /&gt;
** [http://blog.erdemagaoglu.com/post/4605524309/lzo-vs-snappy-vs-lzf-vs-zlib-a-comparison-of Lzo vs. zLib]&lt;br /&gt;
* その他&lt;br /&gt;
** [http://www.funtoo.org/wiki/BTRFS_Fun Funtoo Wiki Btrfs Fun]&lt;br /&gt;
** [https://www.phoronix.com/scan.php?page=news_item&amp;amp;px=MTA0ODU Avi Miller presenting Btrfs] at SCALE 10x, January 2012.&lt;br /&gt;
** [https://www.phoronix.com/scan.php?page=news_item&amp;amp;px=MTA4Mzc Summary of Chris Mason&#039;s talk] from LFCS 2012&lt;br /&gt;
** [https://git.kernel.org/?p&amp;amp;#61;linux/kernel/git/torvalds/linux-2.6.git;a&amp;amp;#61;commit;h&amp;amp;#61;35054394c4b3cecd52577c2662c84da1f3e73525 Btrfs: stop providing a bmap operation to avoid swapfile corruptions] 2009-01-21&lt;br /&gt;
** [http://marc.merlins.org/perso/btrfs/post_2014-03-22_Btrfs-Tips_-Doing-Fast-Incremental-Backups-With-Btrfs-Send-and-Receive.html Doing Fast Incremental Backups With Btrfs Send and Receive]&lt;/div&gt;</summary>
		<author><name>Funcrab</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E4%B8%80%E8%A6%A7/%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3&amp;diff=22101</id>
		<title>アプリケーション一覧/セキュリティ</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E4%B8%80%E8%A6%A7/%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3&amp;diff=22101"/>
		<updated>2021-10-25T01:13:57Z</updated>

		<summary type="html">&lt;p&gt;Funcrab: Fix: bitwarden, bitwarden-cli のパッケージが AUR -&amp;gt; 公式に移動したのを反映&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:アプリケーション]]&lt;br /&gt;
[[カテゴリ:セキュリティ]]&lt;br /&gt;
[[Category:ソフトウェア一覧]]&lt;br /&gt;
[[en:List of applications/Security]]&lt;br /&gt;
[[es:List of applications (Español)/Security]]&lt;br /&gt;
[[it:List of applications (Italiano)/Security]]&lt;br /&gt;
[[pt:List of applications (Português)/Security]]&lt;br /&gt;
[[ru:List of applications (Русский)/Security]]&lt;br /&gt;
[[zh-hans:List of applications (简体中文)/Security]]&lt;br /&gt;
[[zh-hant:List of applications (正體中文)/Security]]&lt;br /&gt;
{{List of Applications navigation}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
== セキュリティ ==&lt;br /&gt;
&lt;br /&gt;
詳しいガイドは、ArchWiki のメインページを見て下さい、[[セキュリティ]]。&lt;br /&gt;
&lt;br /&gt;
=== ネットワークセキュリティ ===&lt;br /&gt;
&lt;br /&gt;
See also [[Wikipedia:Comparison of packet analyzers]].&lt;br /&gt;
&lt;br /&gt;
* {{App|airgeddon|Multi-use bash script to audit wireless networks|https://github.com/v1s1t0r1sh3r3/airgeddon|{{AUR|airgeddon-git}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Arpwatch|Arpwatch]]|Ethernet の活動を監視し Ethernet/IP アドレスペアリングのデータベースを保持するツール。|https://ee.lbl.gov/|{{Pkg|arpwatch}}}}&lt;br /&gt;
* {{App|bettercap|Swiss army knife for network attacks and monitoring.|https://www.bettercap.org/|{{Pkg|bettercap}}}}&lt;br /&gt;
* {{App|darkstat|Captures network traffic, calculates statistics about usage, and serves reports over HTTP.|https://unix4lyfe.org/darkstat/|{{Pkg|darkstat}}}}&lt;br /&gt;
* {{App|[[Wikipedia:dSniff|dsniff]]|Collection of tools for network auditing and penetration testing.|https://www.monkey.org/~dugsong/dsniff/|{{Pkg|dsniff}}}}&lt;br /&gt;
* {{App|[[Wikipedia:EtherApe|EtherApe]]|etherman を手本に作成されたグラフィカルネットワークモニター。Featuring link layer, IP and TCP modes, ネットワークの活動状態をグラフィカルに表示します。Hosts and links change in size with traffic. Color coded protocols display.|https://etherape.sourceforge.io/|{{Pkg|etherape}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Ettercap (software)|Ettercap]]|Multipurpose Network sniffer/analyser/interceptor/logger.|https://ettercap.github.io/ettercap/|CLI: {{Pkg|ettercap}}, GUI: {{Pkg|ettercap-gtk}}}}&lt;br /&gt;
* {{App|GNOME Network Tools|GNOME interface for various networking tools.|https://gitlab.gnome.org/GNOME/gnome-nettool|{{Pkg|gnome-nettool}}}}&lt;br /&gt;
* {{App|[[Honeyd]]|コンピュータネットワーク上に複数の仮想ホストを設定・起動するためのツール。||http://www.honeyd.org/|{{AUR|honeyd}}}}&lt;br /&gt;
* {{App|hping|Command-line oriented TCP/IP packet assembler/analyzer.|http://hping.org/|{{Pkg|hping}}}}&lt;br /&gt;
* {{App|IPTraf|コンソールベースのネットワークモニタリングユーティリティ。|https://sourceforge.net/projects/iptraf-ng/|{{Pkg|iptraf-ng}}}}&lt;br /&gt;
* {{App|jnettop|top-like console network traffic visualizer.|https://sourceforge.net/projects/jnettop/|{{Pkg|jnettop}}}}&lt;br /&gt;
* {{App|[[Wikipedia:justniffer|justniffer]]|Network protocol analyzer that captures network traffic and produces logs in a customized way, can emulate Apache web server log files, track response times and extract all &amp;quot;intercepted&amp;quot; files from the HTTP traffic.|http://justniffer.sourceforge.net/|{{AUR|justniffer}}}}&lt;br /&gt;
* {{App|Kismet|802.11 layer2 ワイヤレスネットワークの検出・キャプチャ・侵入検知システム。|https://www.kismetwireless.net/|{{Pkg|kismet}}}}&lt;br /&gt;
* {{App|LinSSID|Graphical wireless scanner.|https://sourceforge.net/projects/linssid/|{{Pkg|linssid}}}}&lt;br /&gt;
* {{App|Nemesis|コマンドラインのネットワークパケットクラフト・インジェクションツール。|http://nemesis.sourceforge.net/|{{AUR|nemesis}}}}&lt;br /&gt;
* {{App|Net Activity Viewer|Graphical network connections viewer, similar in functionality with Netstat.|http://netactview.sourceforge.net/|{{AUR|netactview}}}}&lt;br /&gt;
* {{App|[[Wikipedia:netsniff-ng|netsniff-ng]]|High performance Linux network sniffer for packet inspection.|http://netsniff-ng.org/|{{Pkg|netsniff-ng}}}}&lt;br /&gt;
* {{App|[[Wikipedia:ngrep|ngrep]]|grep-like utility that allows you to search for network packets on an interface.|https://github.com/jpr5/ngrep|{{Pkg|ngrep}}}}&lt;br /&gt;
* {{App|[[Nmap]]|コンピュータネットワーク上のホストとサービスを探しネットワークの&amp;quot;マップ&amp;quot;を作るために使われるセキュリティスキャナ。|https://nmap.org/|CLI: {{Pkg|nmap}}, GUI: {{AUR|zenmap}}}}&lt;br /&gt;
* {{App|[[Ntop]]|top がプロセスの動きを表示するように、ネットワークの使用を表示するためのネットワーク監視ツール。|https://www.ntop.org/|{{AUR|ntop}}}}&lt;br /&gt;
* {{App|pyNeighborhood|GTK-based SMB/CIFS browsing utility.|https://launchpad.net/pyneighborhood|{{AUR|pyneighborhood}}}}&lt;br /&gt;
* {{App|Smb4K|Advanced network neighborhood browser and Samba share mounting utility for KDE.|https://smb4k.sourceforge.io/|{{Pkg|smb4k}}}}&lt;br /&gt;
* {{App|[[Snort]]|ネットワーク侵入防止・検知システム。|https://www.snort.org/|{{AUR|snort}}}}&lt;br /&gt;
* {{App|Spectools|Wi-Spy デバイスなどのハードウェアのスペクトラムアナライザとして使えるユーティリティ集。|https://www.kismetwireless.net/static/spectools/|{{AUR|spectools}}}}&lt;br /&gt;
* {{App|[[Sshguard]]|ブルートフォース攻撃から SSH などのサービスを防護する Fail2ban に似たデーモン。|https://www.sshguard.net/|{{Pkg|sshguard}}}}&lt;br /&gt;
* {{App|[[Suricata]]|高性能なネットワーク IDS, IPS, Network Security Monitoring エンジン。|https://suricata-ids.org/|{{AUR|suricata}}}}&lt;br /&gt;
* {{App|[[Network Debugging#Tcpdump|Tcpdump]]|コンソールベースのパケットアナライザで、ネットワーク越しに転送された TCP/IP などのパケットを傍受して表示することができます。|http://www.tcpdump.org/|{{Pkg|tcpdump}}}}&lt;br /&gt;
* {{App|[[Wikipedia:tcptrace|tcptrace]]|TCP dump file analysis tool.|http://tcptrace.org/{{Dead link|2020|12|27|status=403}}|{{Pkg|tcptrace}}}}&lt;br /&gt;
* {{App|[[vnStat]]|選択したインターフェースのトラフィックをログする、コンソールベースのネットワークトラフィックモニタ。|https://humdi.net/vnstat/|{{Pkg|vnstat}}}}&lt;br /&gt;
* {{App|What IP|Small GTK application to get info on your IP.|https://gabmus.gitlab.io/whatip/|{{AUR|whatip-git}}}}&lt;br /&gt;
* {{App|wifiphisher|Fast automated phishing attacks against WPA networks.|https://github.com/wifiphisher/wifiphisher|{{AUR|wifiphisher-git}}}}&lt;br /&gt;
* {{App|[[Wireshark]]|コンピュータネットワークで動いているトラフィックを見るためのネットワークプロトコルアナライザー。|https://www.wireshark.org/|CLI: {{Pkg|wireshark-cli}}, GUI: {{Pkg|wireshark-qt}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Xplico|Xplico]]|Network forensics analysis tool (NFAT), which is a software that reconstructs the contents of acquisitions performed with a packet sniffer.|https://www.xplico.org/|{{AUR|xplico}}}}&lt;br /&gt;
* {{App|Zeek|Powerful network analysis framework that is much different from the typical IDS you may know.|https://zeek.org/|{{AUR|zeek}}}}&lt;br /&gt;
&lt;br /&gt;
=== ファイアウォール ===&lt;br /&gt;
&lt;br /&gt;
See [[iptables#Front-ends]].&lt;br /&gt;
&lt;br /&gt;
=== 脅威と脆弱性保護 ===&lt;br /&gt;
&lt;br /&gt;
* {{App|AFICK|ファイルシステムの変更を監視して侵入を検知するセキュリティツール。|http://afick.sourceforge.net/|{{AUR|afick}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Lynis|Lynis]]|Unix/Linux システムを防護するセキュリティ・システム監査ツール。|https://cisofy.com/lynis/|{{Pkg|lynis}}}}&lt;br /&gt;
* {{App|[[Metasploit Framework]]|exploit コードを開発・テスト・使用するための高度なオープンソースプラットフォーム。|https://www.metasploit.com/|{{Pkg|metasploit}}}}&lt;br /&gt;
* {{App|[[Nessus]]|総合的な脆弱性スキャンプログラム。|https://www.tenable.com/products/nessus|{{AUR|nessus}}}}&lt;br /&gt;
* {{App|[[OpenVAS]]|脆弱性をスキャンして管理する包括的かつ強力なソリューションを提供する複数のサービスとツールからなるフレームワーク。FOSS Nessus のフォーク。|http://www.openvas.org/|{{AUR|openvas-scanner}}}}&lt;br /&gt;
* {{App|OSSEC|オープンソースのホストベースの侵入検知システム。ログを解析、ファイルの整合性を確認、ポリシーを確認、rootkit を検出、リアルタイムの改変に対応します。|https://ossec.github.io/|{{AUR|ossec-agent}} {{AUR|ossec-local}} {{AUR|ossec-server}}}}&lt;br /&gt;
* {{App|Samhain|ホストベースの侵入検知システム (HIDS)。ファイルの整合性の確認、ログファイルの監視・解析、rootkit の検出、ポートの監視、危険な SUID 実行ファイルや隠しプロセスを検出します。|https://www.la-samhna.de/samhain/index.html|{{AUR|samhain}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Tiger (security software)|Tiger]]|セキュリティ監査と侵入検知システムの両方の役割を果たすことができるセキュリティツール。|http://www.nongnu.org/tiger/|{{AUR|tiger}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Open Source Tripwire|Tripwire]]|侵入検知システム。|https://github.com/Tripwire/tripwire-open-source|{{AUR|tripwire-git}}}}&lt;br /&gt;
&lt;br /&gt;
=== ファイルセキュリティ ===&lt;br /&gt;
&lt;br /&gt;
* {{App|[[AIDE]]|ファイルとディレクトリの整合性チェッカー。|https://aide.github.io|{{AUR|aide}}}}&lt;br /&gt;
* {{App|[[Logwatch]]|カスタマイズできるログ分析システム。|https://sourceforge.net/projects/logwatch/|{{Pkg|logwatch}}}}&lt;br /&gt;
&lt;br /&gt;
=== アンチマルウェア ===&lt;br /&gt;
&lt;br /&gt;
* {{App|[[ClamAV]]|オープンソースのアンチウイルスエンジン。トロイの木馬、ウイルス、マルウェアなどの危険なプログラムを検出します。|http://www.clamav.net/|{{Pkg|clamav}}}}&lt;br /&gt;
* {{App|ClamTk|Graphical front-end for ClamAV using Perl and Gtk libraries. It is designed to be an easy-to-use, lightweight, on-demand antivirus scanner for Linux systems.|https://dave-theunsub.github.io/clamtk/|{{Pkg|clamtk}}, Nautilus plugin: {{AUR|clamtk-gnome}}, MATE plugin: {{AUR|clamtk-mate}}, Thunar plugin: {{AUR|thunar-sendto-clamtk}}}}&lt;br /&gt;
* {{App|Linux Malware Detect||共有ホスト環境の脅威に対応するために作られたマルウェアスキャナ。|https://www.rfxn.com/projects/linux-malware-detect/|{{AUR|maldet}}}}&lt;br /&gt;
* {{App|Rootkit Hunter|rootkit などの招かれざるツールの存在をチェックします。|http://rkhunter.sourceforge.net/|{{Pkg|rkhunter}}}}&lt;br /&gt;
* {{App|Hostsblock|A script that downloads, sorts, and compiles multiple ad- and malware-blocking {{ic|hosts}} files.|https://gaenserich.github.io/hostsblock/|{{AUR|hostsblock}}}}&lt;br /&gt;
&lt;br /&gt;
=== スクリーンロック ===&lt;br /&gt;
&lt;br /&gt;
{{Merge|Session lock#By environment|Same purpose.}}&lt;br /&gt;
&lt;br /&gt;
See also [[Session lock]].&lt;br /&gt;
&lt;br /&gt;
{{Warning|&#039;&#039;sflock&#039;&#039;, &#039;&#039;physlock&#039;&#039;, &#039;&#039;Cinnamon Screensaver&#039;&#039;, &#039;&#039;MATE Screensaver&#039;&#039;, &#039;&#039;GNOME Screensaver&#039;&#039; だけが tty アクセスをブロックすることができます。手動でブロックする方法は [[Xorg#TTY のアクセスをブロック]]を見てください。}}&lt;br /&gt;
&lt;br /&gt;
* {{App|betterlockscreen|&#039;&#039;i3lock-color&#039;&#039; wrapper. Betterlockscreen allows you to cache images with different filters and lockscreen with blazing speed.|https://github.com/pavanjadhaw/betterlockscreen|{{Aur|betterlockscreen}}}}&lt;br /&gt;
* {{App|Cinnamon Screensaver|Cinnamon デスクトップの画面ロッカー。|https://github.com/linuxmint/cinnamon-screensaver|{{Pkg|cinnamon-screensaver}}}}&lt;br /&gt;
* {{App|Deepin Screensaver|A lightweight Qt5 based screensaver.|https://github.com/linuxdeepin/deepin-screensaver|{{Pkg|deepin-screensaver}}}}&lt;br /&gt;
* {{App|GNOME Screensaver|Legacy GNOME デスクトップの画面ロッカー。Unmaintained since 2012.|https://wiki.gnome.org/Attic/GnomeScreensaver|{{Pkg|gnome-screensaver}}}}&lt;br /&gt;
* {{App|i3lock|シンプルな画面ロッカー。ユーザーフィードバックを提供し、PAM 認証を使用します。画像や単色の背景を設定可能。|https://i3wm.org/i3lock/|{{Pkg|i3lock}}}}&lt;br /&gt;
* {{App|i3lock-blur|&#039;&#039;i3lock&#039;&#039; のフォークで背景としてブラー効果をかけたデスクトップを使うことができます。|https://github.com/karulont/i3lock-blur|{{Aur|i3lock-blur}}}}&lt;br /&gt;
* {{App|i3lock-color|Fork of &#039;&#039;i3lock&#039;&#039; with color and positioning configuration support and 背景画像としてブラーのかかったデスクトップのスクリーンショットをセットします。|https://github.com/Raymo111/i3lock-color|{{AUR|i3lock-color}}, {{AUR|i3lock-color-git}}}}&lt;br /&gt;
* {{App|Light-locker|デスクトップの依存を増やすことなくデスクトップと統合することができる、単純な安全で安心なシンプルロッカー (&#039;&#039;gnome-screensaver&#039;&#039; のフォーク)。ConsoleKit/UPower や &#039;&#039;logind/systemd&#039;&#039; でセッションをロックするために [[LightDM]] を使っています。|https://github.com/the-cavalry/light-locker|{{Pkg|light-locker}}}}&lt;br /&gt;
* {{App|MATE Screensaver|MATE デスクトップ環境のスクリーンセーバー・ロッカー。|https://github.com/mate-desktop/mate-screensaver|{{Pkg|mate-screensaver}}}}&lt;br /&gt;
* {{App|physlock|画面とコンソールのロッカー。|https://github.com/muennich/physlock|{{Pkg|physlock}}}}&lt;br /&gt;
* {{App|sflock|X 用の slock ベースのシンプルなスクリーンロッカー。基本的なユーザーフィードバックを提供します。|https://github.com/benruijl/sflock|{{AUR|sflock-git}}}}&lt;br /&gt;
* {{App|[[slock]]|てもシンプルで軽量な X スクリーンロッカー。ロック時には黒い背景しか表示しません、アニメーションやテキストはありません。|https://tools.suckless.org/slock/|{{Pkg|slock}}}}&lt;br /&gt;
* {{App|sxlock|sflock のフォーク。基本的なユーザーフィードバック・PAM 認証・DPMS と RandR をサポート。サスペンドやハイバネート時に画面をロックする {{ic|sxlock.service}} があります。詳しくは [https://github.com/lahwaacz/sxlock/blob/master/README.md README] を参照。|https://github.com/lahwaacz/sxlock|{{AUR|sxlock-git}}}}&lt;br /&gt;
* {{App|tsscreenlock|theShell で使われているスクリーンロッカー。音楽のコントロールを表示し、theShell を使用している場合、デスクトップ通知も表示。|https://github.com/vicr123/tsscreenlock|{{AUR|tsscreenlock}}}}&lt;br /&gt;
* {{App|vlock|TTY ロッカー。[https://lists.archlinux.org/pipermail/aur-general/2013-July/024662.html オリジナルの vlock] のミラーは [https://github.com/WorMzy/vlock GitHub] から取得できます。|http://kbd-project.org/|{{Pkg|kbd}}}}&lt;br /&gt;
* {{App|xfce4-screensaver|A screen saver and locker that aims to have simple, sane, secure defaults and be well integrated with the xfce desktop.|https://git.xfce.org/apps/xfce4-screensaver/about/|{{Pkg|xfce4-screensaver}}}}&lt;br /&gt;
* {{App|xlockmore|シンプルな X11 画面ロック。PAM 対応。|http://sillycycle.com/xlockmore.html|{{Pkg|xlockmore}}}}&lt;br /&gt;
* {{App|[[XScreenSaver]]|X Window System 向けのスクリーンセーバー・ロッカー。|https://www.jwz.org/xscreensaver/|{{Pkg|xscreensaver}}}}&lt;br /&gt;
* {{App|XSecureLock|セキュリティに焦点を置いた X11 のスクリーンロックユーティリティ。|https://github.com/google/xsecurelock|{{Pkg|xsecurelock}}}}&lt;br /&gt;
* {{App|xtrlock|非常に軽量な X ディスプレイロッカー。ウィンドウは表示したままで、マウスカーソルの代わりにロックアイコンを表示します。パスワードを入力すれば画面のロックは解除されます。|https://packages.debian.org/sid/xtrlock|{{Pkg|xtrlock}}}}&lt;br /&gt;
&lt;br /&gt;
=== Password auditing ===&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Wikipedia:John the Ripper|John the Ripper]]|Password cracker.|https://www.openwall.com/john|{{Pkg|john}}}}&lt;br /&gt;
* {{App|[[Hashcat]]|Multithreaded advanced password recovery utility.|https://hashcat.net/hashcat|{{Pkg|hashcat}}}}&lt;br /&gt;
&lt;br /&gt;
=== パスワードマネージャ ===&lt;br /&gt;
&lt;br /&gt;
See also [[KeePass]].&lt;br /&gt;
&lt;br /&gt;
==== Console ====&lt;br /&gt;
&lt;br /&gt;
* {{App|gopass|Advanced console based password manager, supporting GnuPG and other backends.|https://github.com/justwatchcom/gopass|{{Pkg|gopass}}}}&lt;br /&gt;
* {{App|KeePassC|Curses-based password manager compatible to KeePass v.1.x.|https://outerhaven.de/keepassc/|{{AUR|keepassc}}}}&lt;br /&gt;
* {{App|LastPass|Hosted password manager. |https://www.lastpass.com/|{{Pkg|lastpass-cli}}}}&lt;br /&gt;
* {{App|[[pass]]|シンプルなコンソールベースのパスワードマネージャ featuring flat text file organization and GnuPG encryption.|https://www.passwordstore.org/|{{Pkg|pass}}}}&lt;br /&gt;
* {{App|pwsafe|暗号化されたパスワードデータベースを管理する Unix コマンドラインプログラム。|http://nsd.dyndns.org/pwsafe/|{{AUR|pwsafe}}}}&lt;br /&gt;
* {{App|spm|PGP を使用して POSIX シェルだけで書かれたシンプルなパスワードマネージャ。軽量・高速でスクリプトに簡単に組み込めます。|https://notabug.org/kl3/spm/|{{AUR|spm}}}}&lt;br /&gt;
* {{App|tpm|tiny password manager, inspired by pass, written entirely in POSIX shell.|https://github.com/nmeum/tpm|{{AUR|tpm}}}}&lt;br /&gt;
* {{App|Ylva|Command-line password manager, written in C, uses OpenSSL.|https://www.ylvapasswordmanager.com/|{{AUR|ylva}}}}&lt;br /&gt;
&lt;br /&gt;
==== Graphical ====&lt;br /&gt;
&lt;br /&gt;
* {{App|Authenticator|Two-factor authentication application built for GNOME.|https://gitlab.gnome.org/World/Authenticator|{{AUR|authenticator}}}}&lt;br /&gt;
* {{App|Bitwarden|Open source password manager with desktop, mobile, browser, and CLI versions. Cloud or self-hosted.|https://bitwarden.com/|{{Pkg|bitwarden}}, {{Pkg|bitwarden-cli}}}}&lt;br /&gt;
* {{App|Encryptr|ゼロ知識・クラウドベースのパスワードマネージャ。|https://spideroak.com/encryptr/|{{AUR|encryptr}}}}&lt;br /&gt;
* {{App|Enpass|マルチプラットフォームのパスワードマネージャ。|https://www.enpass.io/|{{AUR|enpass-bin}}}}&lt;br /&gt;
* {{App|Figaro&#039;s Password Manager 2|[http://fpm.sourceforge.net/ Figaro&#039;s Password Manager] の GTK2 ポートで新機能がいくつか追加されています。|https://als.regnet.cz/fpm2/|{{AUR|fpm2}}}}&lt;br /&gt;
* {{App|GNOME Password Safe|Password manager for GNOME which makes use of the KeePass v.4 format.|https://gitlab.gnome.org/World/PasswordSafe|{{Pkg|gnome-passwordsafe}}}}&lt;br /&gt;
* {{App|Ked Password Manager|大量のパスワードを扱うのに役立つパスワードマネージャ。|http://kedpm.sourceforge.net|{{AUR|kedpm}}}}&lt;br /&gt;
* {{App|[[KeePass|KeePass Password Safe]]|安全な方法でパスワードを管理するための、パスワードマネージャ。Mono ベース。|https://keepass.info/|{{Pkg|keepass}}}}&lt;br /&gt;
* {{App|KeePassX|Qt-based password manager. KeePass v.1.x や KeePass v.2.x と互換性あり。|https://www.keepassx.org/|version 1: {{AUR|keepassx}}, version 2: {{AUR|keepassx2}}}}&lt;br /&gt;
* {{App|KeePassXC|Community fork of KeePassX with more active development. Compatible with KeePass v.1.x (import only) and KeePass v.2.x.|https://keepassxc.org/|{{Pkg|keepassxc}}}}&lt;br /&gt;
* {{App|[[KDE Wallet|KDE Wallet Manager]]|Tool to manage the passwords on your system. By using the KDE wallet subsystem it not only allows you to keep your own secrets but also to access and manage the passwords of every application that integrates with the wallet.|https://kde.org/applications/en/system/org.kde.kwalletmanager5|{{Pkg|kwalletmanager}}}}&lt;br /&gt;
* {{App|OTPClient|Highly secure and easy to use GTK software for two-factor authentication that supports both Time-based One-time Passwords (TOTP) and HMAC-Based One-Time Passwords (HOTP).|https://github.com/paolostivanin/OTPClient|{{AUR|otpclient}}}}&lt;br /&gt;
* {{App|Passbook|Modern password manager for GNOME.|https://wiki.gnome.org/Apps/Passbook|{{AUR|passbook}}}}&lt;br /&gt;
* {{App|Password Gorilla|クロスプラットフォームのパスワードマネージャ。|https://github.com/zdia/gorilla/wiki|{{AUR|password-gorilla}}}}&lt;br /&gt;
* {{App|Password Safe|シンプルで安全なパスワードマネージャ。|https://pwsafe.org/|{{AUR|passwordsafe}}}}&lt;br /&gt;
* {{App|QPass|パスワード生成器が付いている使いやすいパスワードマネージャ。|http://qpass.sourceforge.net/|{{AUR|qpass}}}}&lt;br /&gt;
* {{App|QtPass|GUI for pass, the standard unix password manager.|https://qtpass.org/|{{Pkg|qtpass}}}}&lt;br /&gt;
* {{App|Revelation|GNOME デスクトップのパスワードマネージャ。|https://revelation.olasagasti.info/|{{AUR|revelation}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Seahorse (software)|Seahorse]]|GNOME Keyring で暗号化キーとパスワードを管理する GNOME アプリケーション。|https://wiki.gnome.org/Apps/Seahorse|{{Pkg|seahorse}}}}&lt;br /&gt;
* {{App|Universal Password Manager|GNOME Keyring で暗号化キーとパスワードを管理する GNOME アプリケーション。|http://upm.sourceforge.net/|{{AUR|universal-password-manager}}}}&lt;br /&gt;
&lt;br /&gt;
=== Cryptography ===&lt;br /&gt;
&lt;br /&gt;
==== ハッシュチェッカー ====&lt;br /&gt;
&lt;br /&gt;
* {{app|cfv|チェックサムファイルのテストと作成ができる小さなユーティリティ。{{ic|.sfv}}, {{ic|.csv}}, {{ic|.crc}}, {{ic|.md5}}, {{ic|md5sum}}, {{ic|sha1sum}}, {{ic|.torrent}}, {{ic|par}}, {{ic|.par2}} ファイルに対応。| http://cfv.sourceforge.net/|{{AUR|cfv}}}}&lt;br /&gt;
* {{App|GtkHash|メッセージダイジェストまたはチェックサムを計算する GTK ユーティリティ。|https://github.com/tristanheaven/gtkhash|{{AUR|gtkhash}}}}&lt;br /&gt;
* {{App|hashdeep|様々なファイルのハッシュやメッセージダイジェストを計算するクロスプラットフォームのツール。|http://md5deep.sourceforge.net/|{{Pkg|hashdeep}}}}&lt;br /&gt;
* {{App|Quick Hash GUI|ファイルのすばやい選択とハッシュ作成ができる GUI (フォルダ構造で別々に行ったり再帰的に使用可能)。|https://www.quickhash-gui.org/|{{AUR|quickhash-gui-bin}}}}&lt;br /&gt;
* {{App|RHash|ハッシュサムを確認するためのユーティリティ (SFV, CRC など)。多数のアルゴリズムをサポート。|https://github.com/rhash/RHash/|{{Pkg|rhash}}}}&lt;br /&gt;
* {{App|MassHash|Python で書かれたファイルハッシュ作成ツールのセット (CLI と GTK の GUI)。MD5, SHA-1, SHA-224, SHA-256, SHA-384, SHA-512 などのアルゴリズムをサポート。|https://jdleicher.github.io/MassHash/|{{AUR|masshash}}}}&lt;br /&gt;
* {{App|Parchive||https://github.com/Parchive/par2cmdline|{{Pkg|par2cmdline}}}}&lt;br /&gt;
&lt;br /&gt;
==== 暗号化, 署名, ステガノグラフィー ====&lt;br /&gt;
&lt;br /&gt;
* {{app|age|A simple, modern and secure encryption tool (and library) with small explicit keys, no config options, and UNIX-style composability.|https://age-encryption.org/v1|Go: {{Pkg|age}} {{AUR|age-git}} Rust: {{AUR|rust-rage}} {{AUR|rust-rage-git}}}}&lt;br /&gt;
* {{app|ccrypt|ファイルやストリームを暗号化・復号化するためのコマンドラインユーティリティ based on [[Wikipedia:Advanced_Encryption_Standard|Rijndael]].|http://ccrypt.sourceforge.net/|{{AUR|ccrypt}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Enigmail|Enigmail]]|Mozilla Thunderbird や Seamonkey のセキュリティ拡張。OpenPGP 規格で暗号化・署名されたメールを送受信できるようになります。|https://enigmail.net|{{Pkg|thunderbird-extension-enigmail}}}}&lt;br /&gt;
* {{App|GNOME Keysign|GTK/GNOME application to use GnuPG for signing other people&#039;s keys. Quickly, easily, and securely.|https://wiki.gnome.org/Apps/Keysign|{{AUR|gnome-keysign}}}}&lt;br /&gt;
* {{App|[[GnuPG]]|RFC4880 で定義されている OpenPGP 標準の GNU プロジェクトによる完全でフリーな実装。パッケージの電子署名で広く使われている、PGP を置き換える。|https://gnupg.org/|{{Pkg|gnupg}}}}&lt;br /&gt;
* {{App|GPG-Crypter|Graphical front-end to GnuPG(GPG) using the GTK3 toolkit and GPGME library.|https://sourceforge.net/projects/gpg-crypter/|{{Pkg|gpg-crypter}}}}&lt;br /&gt;
* {{App|[[Keybase]]|Key directory mapping social media identities, with cross platform encrypted chat, cloud storage, and git repositories.|https://keybase.io/|{{Pkg|keybase}}}}&lt;br /&gt;
* {{App|[[Wikipedia:KGPG|KGpg]]|KDE のシンプルな GnuPG インターフェイス。|https://www.kde.org/applications/utilities/kgpg/|{{Pkg|kgpg}}}}&lt;br /&gt;
* {{App|Kleopatra|Certificate Manager and Unified Crypto GUI for KDE. It supports managing X.509 and OpenPGP certificates in the GpgSM keybox and retrieving certificates from LDAP servers.|https://www.kde.org/applications/utilities/kleopatra/|{{Pkg|kleopatra}}}}&lt;br /&gt;
* {{app|minisign|Simple program that only implements key signing|https://github.com/jedisct1/minisign|{{pkg|minisign}} }}&lt;br /&gt;
* {{App|[[Wikipedia:Seahorse (software)|Seahorse]]|GNOME Keyring で暗号鍵やパスワードを管理するための GNOME アプリケーション。|https://wiki.gnome.org/Apps/Seahorse|{{Pkg|seahorse}}}}&lt;br /&gt;
* {{App|scrypt|Command-line encryption utility featuring the memory-hardened {{ic|scrypt}} key derivation function.|https://www.tarsnap.com/scrypt.html|{{pkg|scrypt}}}}&lt;br /&gt;
* {{App|steghide|画像や音声ファイルなど様々な種類のファイルにデータを隠すことが出来るステガノグラフィーユーティリティ。|http://steghide.sourceforge.net|{{AUR|steghide}}}}&lt;br /&gt;
&lt;br /&gt;
==== Data-at-rest encryption ====&lt;br /&gt;
&lt;br /&gt;
See [[Data-at-rest encryption]].&lt;br /&gt;
&lt;br /&gt;
=== 管理者権限 ===&lt;br /&gt;
&lt;br /&gt;
* {{App|[https://man.openbsd.org/doas.1 doas]|A portable version of OpenBSD&#039;s doas command, known for being substantially smaller in size compared to sudo.|https://github.com/Duncaen/OpenDoas|{{pkg|opendoas}}}}&lt;br /&gt;
* {{App|[[su]]|Command used to assume the identity of another user on the system.|https://git.kernel.org/pub/scm/utils/util-linux/util-linux.git/about/|{{Pkg|util-linux}}}}&lt;br /&gt;
* {{App|[[sudo]]|Command to delegate the ability to run commands as root or another user while providing an audit trail.|https://www.sudo.ws/sudo/|{{pkg|sudo}}}}&lt;/div&gt;</summary>
		<author><name>Funcrab</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Qutebrowser&amp;diff=22097</id>
		<title>Qutebrowser</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Qutebrowser&amp;diff=22097"/>
		<updated>2021-10-24T16:15:52Z</updated>

		<summary type="html">&lt;p&gt;Funcrab: fix typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Lowercase title}}&lt;br /&gt;
[[Category:ウェブブラウザ]]&lt;br /&gt;
[[en:Qutebrowser]]&lt;br /&gt;
[https://github.com/The-Compiler/qutebrowser qutebrowser] は軽量で vim ライクなキーボード操作ができる PyQt5 と QtWebEngine ベースのブラウザです。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
{{Pkg|qutebrowser}} または {{AUR|qutebrowser-git}} パッケージをインストールしてください。&lt;br /&gt;
&lt;br /&gt;
== 基本的な使い方 ==&lt;br /&gt;
&lt;br /&gt;
コマンドプロンプトを出すには {{ic|:}} を使います。{{ic|Tab}} で自動補完が効きます。&lt;br /&gt;
&lt;br /&gt;
qutebrowser を初めて起動した場合、クイックスタートページが表示されます。クイックスタートは {{ic|:help}} でいつでも開けます。キーボードショートカットは [http://qutebrowser.org/img/cheatsheet-big.png チートシート] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== ユーザー設定 ===&lt;br /&gt;
&lt;br /&gt;
UIから、コマンドラインから、もしくはPythonスクリプトからの三種類の方法で設定することができます。 &lt;br /&gt;
&lt;br /&gt;
qutebrowser に付属しているヘルプでは、それぞれの使い方について詳細に書かれています。ヘルプを参照するには、 {{ic|:help}} を入力し、そのページで {{ic|Configuring qutebrowser}} を選択してください。&lt;br /&gt;
&lt;br /&gt;
設定ファイルがおかれるパスを知るには、 {{ic|qute://version}} を開いてください。Archlinux では {{ic|$XDG_CONFIG_HOME/qutebrowser/}}になるはずです。&lt;br /&gt;
&lt;br /&gt;
qutebrowserによって設定される値は {{ic|autoconfig.yml}} (手動では変更しないべきです)に、ユーザーの書いた Python スクリプトは {{ic|config.py}} に保存されます。&lt;br /&gt;
&lt;br /&gt;
==== UIから設定する ====&lt;br /&gt;
&lt;br /&gt;
{{ic|:set}} で設定画面を開くことができます。設定が終わったら、もう一度 {{ic|:set}} することで保存できます。&lt;br /&gt;
&lt;br /&gt;
例えば、 {{ic|url.searchengines}} の下では検索エンジンの設定ができます。これは、key-value のペアのリストとして保存されています。何も設定していない場合、以下のような値になっているはずです。&lt;br /&gt;
&lt;br /&gt;
 {&amp;quot;DEFAULT&amp;quot;: &amp;quot;&amp;lt;nowiki&amp;gt;https://duckduckgo.com/?q={}&amp;lt;/nowiki&amp;gt;&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
これは、DuckDuckGo をデフォルトの検索エンジンとして設定しています。ここで、{{ic|&amp;lt;nowiki&amp;gt;{}&amp;lt;/nowiki&amp;gt;}} は検索する文字列に置き換えられます。&lt;br /&gt;
&lt;br /&gt;
ArchWiki を検索するショートカットを追加したいときは、以下のようにします:&lt;br /&gt;
&lt;br /&gt;
 {&amp;quot;DEFAULT&amp;quot;: &amp;quot;&amp;lt;nowiki&amp;gt;https://duckduckgo.com/?q={}&amp;lt;/nowiki&amp;gt;&amp;quot;, &amp;quot;aw&amp;quot;: &amp;quot;&amp;lt;nowiki&amp;gt;https://wiki.archlinux.jp/?search={}&amp;lt;/nowiki&amp;gt;&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
これで、 {{ic|:open aw qutebrowser}} と入力すればこのページが開かれるはずです。標準設定では {{ic|o}} で {{ic|:open}} を置き換えるようにキーマップが設定されているので、{{ic|o aw &#039;&#039;your_search_term&#039;&#039;}} と入力することで ArchWiki を素早く検索できます。&lt;br /&gt;
&lt;br /&gt;
検索するための引数の渡し方は検索エンジンによって異なることに注意してください。例えば Google を設定するには {{ic|&amp;lt;nowiki&amp;gt;https://www.google.com/search?hl=en&amp;amp;q={}&amp;lt;/nowiki&amp;gt;}} とします&lt;br /&gt;
&lt;br /&gt;
==== コマンドラインから設定する ====&lt;br /&gt;
&lt;br /&gt;
{{ic|:set}} の後に、設定したい項目と設定したい値を打ちます。例えば、 qutebrowser を再起動したときに前回開いていたページを復元したい場合、以下のようにすることができます。&lt;br /&gt;
&lt;br /&gt;
 :set auto_save.session true&lt;br /&gt;
&lt;br /&gt;
==== Python スクリプトで設定する ====&lt;br /&gt;
&lt;br /&gt;
{{ic|:config-write-py --defaults}} でテンプレートファイルが生成されます。&lt;br /&gt;
&lt;br /&gt;
詳しくは {{ic|qute://help/configuring.html#configpy}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== {{ic|qutebrowser.conf}} と {{ic|keys.config}} からのミグレーション ===&lt;br /&gt;
&lt;br /&gt;
{{ic|qutebrowser.conf}} と {{ic|keys.config}} は、v1.0.0 以前までに使われていた方法です。&lt;br /&gt;
&lt;br /&gt;
=== キーバインド ===&lt;br /&gt;
&lt;br /&gt;
{{Note|キーバインドも他の設定と同じファイルに保存されるようになりました}}&lt;br /&gt;
&lt;br /&gt;
{{ic|:bind &#039;&#039;key&#039;&#039; &#039;&#039;command&#039;&#039;}} コマンドで直接ブラウザからキーバインドを編集してもかまいませんし、ファイルからキーバインドを編集することも可能です。初めから、大漁、盛りだくさんのキーバインドが設定されています。キーバインドにラグが感じられる場合、他のキーバインドが同じキーを使っているのが原因です。&lt;br /&gt;
&lt;br /&gt;
=== 動画の再生 ===&lt;br /&gt;
&lt;br /&gt;
[[ブラウザプラグイン#マルチメディアの再生]]を見てください。&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== {{ic|WM_CLASS}} を設定する ===&lt;br /&gt;
&lt;br /&gt;
{{ic|--qt-arg NAME VALUE}} でQtに値を渡すことができます。{{ic|NAME}} に {{ic|name}} を指定すると、 {{ic|WM_CLASS}} に任意の文字列を設定することができます。&lt;br /&gt;
&lt;br /&gt;
 qutebrowser --qt-arg name &amp;lt;設定したい文字列&amp;gt;&lt;br /&gt;
&lt;br /&gt;
これは、タイル型ウィンドウマネージャーでウィンドウの管理をする場合等に有用です。&lt;br /&gt;
&lt;br /&gt;
{{Tip|{{ic|--temp-basedir}} や {{ic|--basedir}} を使わない場合、全てのウィンドウは同じqutebrowserインスタンスに属するため同じ {{ic|WM_CLASS}} を共有します。}}&lt;/div&gt;</summary>
		<author><name>Funcrab</name></author>
	</entry>
</feed>