2 ポイント 投稿者 GN⁺ 2024-04-21 | 1件のコメント | WhatsAppで共有

ホームディレクトリ構造のヒント

  • ディレクトリの構造化や整理は、他の物事の構造化や整理と大きくは変わらず、自分にとって最も理にかなった方法で行うことが重要
  • 整理を扱う際は、非常に短時間で手に負えない状態になりうる
  • 整理の主な目的は効率性であり、探したいものを簡単かつ素早く見つけられ、保存すべきものを簡単かつ素早く保存できる必要がある

隠し標準ファイルとディレクトリ

  • 自分のホームディレクトリには、.config.aliases.profile.gnupg.mozilla など、現代の Unix 系オペレーティングシステムの一部である標準的な隠しファイルが一通りある
  • すべてのアプリケーションが XDG_CONFIG_HOME を尊重してくれるのが望ましいが、その点にあまり干渉したり気にしすぎたりはしない
  • 以前は Git で $HOME を管理しており、これは Dotfiles を構成する優れた方法
  • 変更履歴を維持するため、今でもすべての Dotfiles を Git に入れているが、利用しているさまざまなシステムで同じように動作する Dotfiles だけをそのまま残している
  • 設定ごとの Dotfiles は dotfiles ディレクトリに保管し、シンボリックリンクを使う

一般的なファイルおよびディレクトリの構成

  • 一般的なファイルとディレクトリは、主に「カテゴリ」と「日付」の2つの方法で構成する
  • 基本ディレクトリ構造:
    • bin
    • data
    • edata
    • mnt
    • usr/dotfiles
  • DesktopDownloads ディレクトリはそのままにしている(ほとんどのアプリケーションがそれを前提にしているようなので)
  • bin ディレクトリにはシェルスクリプトと個人用バイナリ実行ファイルを保管する(パッケージマネージャー経由でインストールしたものは除く)
  • mnt ディレクトリは、SD カード、USB ディスク、ホームラボで使う共有ストレージなど、さまざまなマウントポイントに使う
  • 自動マウントは決して使わず、マウント用のシェルスクリプトを使う
  • usr/dotfiles ディレクトリは .aliases のような一般的な Dotfiles とともに Git で管理し、dotfiles ディレクトリ内の関連ファイルへのシンボリックリンクを使う

データディレクトリの構成

  • dataedata ディレクトリは、すべての資料を保管する2つの主要ディレクトリ
  • この2つのディレクトリは、ルートインストールとは別に、ディスクミラーリングプール上で動作する ZFS データセット
  • ZFS を活用し、スナップショットや ZFS の send / receive を定期的に使って、ネットワークストレージへ簡単にバックアップしている
  • dataedata の違いは、edata が ZFS のネイティブ暗号化データセットである点
  • 暗号化はプライバシーに有効だが、すでに複雑なファイルシステム階層の上にさらに厄介な複雑さの層を重ねるものであり、ZFS の暗号化にはバグもある
  • 重要なデータは、常に複数の異なる保存手段と場所にバックアップすることを強く推奨する
  • 重要なものにはクラウドストレージを使わない

追加のヒント

  • ファイル名およびディレクトリ名の基本ルールは、名前を見るだけでそれが何かを簡単に識別できるようにすること
  • ファイルを開いてみないとそのファイルが何についてのものかわからないなら、すぐに開いて確認し、次にそのファイル名を見たときにより意味のある名前へ変更すべき
  • ファイルやディレクトリを整理せず放置すると、後から修正するのが非常に難しくなる
  • ファイルを開かなくても内容を把握できるよう、必要に応じて長い説明を含んだファイル名を使う

GN⁺の意見

  • この記事は、ディレクトリ構造を整理し構成する方法について実用的なヒントを提供している。特に ZFS データセットを活用して、暗号化されたディレクトリと暗号化されていないディレクトリを分けて管理する方法が興味深い。

  • 個人的には、重要なデータは暗号化して保管するのがよいと考える。ただし、暗号化による性能低下や複雑性の増加といった欠点もあるため、状況に応じて選択的に使うのがよさそうだ。

  • また、暗号化されたデータへのアクセス方法を家族と共有しておくことも重要なポイントだと思う。事故などで自分がアクセスできなくなったとしても、データを失わないようにする必要がある。

  • 個人データ管理のためには、著者のように体系的なバックアップ戦略を立てることが非常に重要。321 バックアップルールに従いつつ、クラウドストレージよりも物理的に分散したローカルストレージを活用するのもよい方法に見える。

  • 個人データ整理に役立つオープンソースツールとしては、Syncthing や Nextcloud などがある。こうしたツールをうまく活用すれば、体系的で安全な個人データ管理が可能になるだろう。

1件のコメント

 
GN⁺ 2024-04-21
Hacker Newsの意見

以下はHacker Newsのコメントを要約した内容です:

  • アプリケーションによってホームディレクトリが散らかることへの不満がある。特に Go モジュールのデフォルトディレクトリである ~/go が問題だと指摘されている。GOPATH の設定で解決できるが、望ましくないデフォルト値だという意見である。
  • xdg-ninja というツールを使うと、ほとんどのアプリケーションが XDG 標準に従うよう設定でき、ホームディレクトリの整理に役立つ。
  • .config フォルダにアプリケーションがセッションデータをギガバイト単位で保存するため、バックアップ時に苦労する。設定とセッションデータは分離されるべきだという意見である。
  • ファイル構造の好みは人それぞれである。ホームディレクトリをほとんど空にして、クラウドストレージや別パーティションを使う人もいる。SSH キーをパスワードマネージャーに保存するのも方法になり得る。
  • 写真は EXIF キーワードで分類するのが、重複の問題を避けられる良い方法である。文書ファイル名は 日付-説明.txt または キーワード-タイトル-日付.txt 形式を使うことができる。
  • GUI 用のフォルダ名は大文字、CLI 用は小文字で区別するのがよい。~/dotfiles はドットファイルを管理する Git リポジトリとして使い、ホームディレクトリにシンボリックリンクを作ると便利である。
  • ~/projects はプロジェクトごとにサブディレクトリを作って管理し、~/tmp は一時ファイルを保存する場所として活用できる。Web サイトや Markdown でノートを整理するのも良い方法である。
  • 多くのディレクトリ名が 'D' で始まるため、混乱することがある。年別・日付別にプロジェクトフォルダを作り、1 段階だけ深くネストするのが探索しやすい。
  • ファイル名やディレクトリ名では、アンダースコアよりハイフンを使うほうが SEO に有利で、ターミナルでも扱いやすい。
  • バックアップは Time Machine、Backblaze、iCloud など複数のサービスを併用し、S3 に圧縮ファイルとして保管するのも良い方法になり得る。