2 điểm bởi GN⁺ 2024-04-21 | 1 bình luận | Chia sẻ qua WhatsApp

Mẹo về cấu trúc thư mục home

  • Việc cấu trúc hoặc sắp xếp thư mục thực ra không khác nhiều so với việc cấu trúc hay sắp xếp những thứ khác; điều cốt lõi là làm theo cách hợp lý nhất với bản thân
  • Khi xử lý việc tổ chức, mọi thứ có thể rất nhanh chóng trở nên mất kiểm soát
  • Mục đích chính của việc sắp xếp là hiệu quả: phải có thể tìm thứ cần tìm một cách dễ dàng và nhanh chóng, đồng thời lưu thứ cần lưu cũng dễ dàng và nhanh chóng

Các tệp và thư mục mặc định bị ẩn

  • Trong thư mục home của tôi có đầy đủ các tệp ẩn mặc định vốn là một phần của các hệ điều hành Unix hiện đại như .config, .aliases, .profile, .gnupg, .mozilla
  • Tôi muốn mọi ứng dụng đều tôn trọng XDG_CONFIG_HOME, nhưng cũng không quá can thiệp hay bận tâm về việc đó
  • Trước đây tôi từng quản lý $HOME bằng Git, và đó là một cách rất tốt để tổ chức Dotfiles
  • Tôi vẫn đưa tất cả Dotfiles vào Git để giữ lịch sử thay đổi, nhưng chỉ giữ nguyên những Dotfiles hoạt động giống nhau trên các hệ thống khác nhau mà tôi sử dụng
  • Các Dotfiles theo từng cấu hình được lưu trong thư mục dotfiles và dùng symbolic link

Cấu trúc chung cho tệp và thư mục

  • Các tệp và thư mục thông thường chủ yếu được tổ chức theo hai cách: "danh mục" và "ngày tháng"
  • Cấu trúc thư mục cơ bản:
    • bin
    • data
    • edata
    • mnt
    • usr/dotfiles
  • Giữ nguyên các thư mục DesktopDownloads (vì có vẻ hầu hết ứng dụng đều ép dùng chúng)
  • Thư mục bin dùng để lưu shell script và các tệp thực thi nhị phân cá nhân (không bao gồm những thứ được cài qua trình quản lý gói)
  • Thư mục mnt được dùng cho nhiều điểm mount khác nhau như thẻ SD, đĩa USB, bộ nhớ dùng chung trong homelab, v.v.
  • Tôi tuyệt đối không dùng tự động mount mà sử dụng shell script để mount
  • Thư mục usr/dotfiles được quản lý bằng Git cùng với các Dotfiles thông thường như .aliases, và sử dụng symbolic link tới các tệp liên quan trong thư mục dotfiles

Cấu trúc thư mục dữ liệu

  • Thư mục dataedata là hai thư mục chính dùng để lưu toàn bộ dữ liệu
  • Hai thư mục này là các ZFS dataset chạy trên một pool mirror đĩa, tách biệt với cài đặt hệ thống gốc
  • Tôi tận dụng ZFS để sao lưu dễ dàng lên bộ nhớ mạng bằng cách thường xuyên dùng snapshot cũng như ZFS send/receive
  • Điểm khác biệt giữa dataedataedata là ZFS dataset dùng mã hóa gốc mặc định
  • Mã hóa tốt cho quyền riêng tư, nhưng cũng là một lớp phức tạp khủng khiếp đặt chồng lên một hệ thống phân cấp tệp vốn đã phức tạp, và ZFS encryption vẫn có lỗi
  • Tôi đặc biệt khuyến nghị luôn sao lưu dữ liệu quan trọng vào nhiều giải pháp lưu trữ và nhiều địa điểm khác nhau
  • Tôi không dùng lưu trữ đám mây cho những thứ quan trọng

Mẹo bổ sung

  • Quy tắc cơ bản khi đặt tên tệp và thư mục là chỉ nhìn tên cũng phải dễ dàng nhận ra đó là gì
  • Nếu không thể biết tệp nói về gì nếu chưa mở nó ra, thì bạn nên mở ngay và đổi sang một cái tên có ý nghĩa hơn cho lần sau khi nhìn thấy nó
  • Nếu để tệp và thư mục bừa bộn mà không sắp xếp, về sau sẽ rất khó chỉnh sửa lại
  • Tôi dùng tên tệp có mô tả dài khi cần, để có thể nắm được nội dung tệp mà không cần mở nó ra

Ý kiến của GN⁺

  • Bài viết này đưa ra các mẹo thực tế về cách sắp xếp và tổ chức cấu trúc thư mục. Đặc biệt, cách tận dụng ZFS dataset để chia tách và quản lý thư mục được mã hóa và không mã hóa khá thú vị.

  • Cá nhân tôi nghĩ rằng nên lưu trữ dữ liệu quan trọng dưới dạng mã hóa. Tuy nhiên, vì cũng có những nhược điểm như suy giảm hiệu năng hoặc tăng độ phức tạp do mã hóa gây ra, nên có vẻ tốt hơn nếu sử dụng có chọn lọc tùy theo tình huống.

  • Ngoài ra, tôi cho rằng việc chia sẻ trước cách truy cập dữ liệu đã mã hóa với người thân trong gia đình cũng là một điểm quan trọng. Điều này cần thiết để không làm mất dữ liệu ngay cả khi bản thân không thể truy cập được nữa do tai nạn hay sự cố.

  • Đối với quản lý dữ liệu cá nhân, việc xây dựng một chiến lược sao lưu có hệ thống như tác giả là rất quan trọng. Có thể tuân theo quy tắc sao lưu 3-2-1, nhưng thay vì lưu trữ đám mây thì tận dụng các kho lưu trữ cục bộ phân tán về mặt vật lý cũng có vẻ là một cách hay.

  • Các công cụ mã nguồn mở hữu ích cho việc quản lý dữ liệu cá nhân gồm có Syncthing hoặc Nextcloud. Nếu tận dụng tốt các công cụ này, có thể đạt được việc quản lý dữ liệu cá nhân một cách có hệ thống và an toàn.

1 bình luận

 
GN⁺ 2024-04-21
Ý kiến trên Hacker News

Sau đây là phần tóm tắt các bình luận trên Hacker News:

  • Có ý kiến phàn nàn rằng thư mục home bị các ứng dụng làm bừa bộn. Đặc biệt, thư mục mặc định của module Go là ~/go bị chỉ ra là một vấn đề. Có thể giải quyết bằng cách cấu hình GOPATH, nhưng vẫn bị xem là một giá trị mặc định không tốt.
  • Dùng công cụ xdg-ninja có thể giúp cấu hình để phần lớn ứng dụng tuân theo tiêu chuẩn XDG, từ đó hỗ trợ dọn dẹp thư mục home.
  • Các ứng dụng lưu dữ liệu phiên làm việc trong thư mục .config với dung lượng lên tới hàng gigabyte, gây khó khăn khi sao lưu. Có ý kiến cho rằng nên tách riêng cấu hình và dữ liệu phiên.
  • Mỗi người có sở thích khác nhau về cấu trúc tệp. Có người gần như để trống thư mục home và dùng cloud storage hoặc phân vùng riêng. Lưu khóa SSH trong trình quản lý mật khẩu cũng có thể là một cách.
  • Phân loại ảnh bằng từ khóa EXIF là một cách tốt để tránh vấn đề trùng lặp. Tên tệp tài liệu có thể dùng định dạng ngày-mô-tả.txt hoặc từ-khóa-tiêu-đề-ngày.txt.
  • Nên phân biệt tên thư mục cho GUI bằng chữ hoa và cho CLI bằng chữ thường. ~/dotfiles có thể dùng làm kho Git để quản lý dotfile, rồi tạo symbolic link trong thư mục home để tiện sử dụng.
  • ~/projects có thể được dùng để quản lý theo từng dự án với các thư mục con, còn ~/tmp có thể tận dụng làm nơi lưu tệp tạm. Sắp xếp ghi chú bằng website hoặc Markdown cũng là một cách hay.
  • Nhiều tên thư mục bắt đầu bằng chữ "D" nên có thể gây nhầm lẫn. Tạo thư mục dự án theo năm hoặc theo ngày và chỉ lồng sâu một cấp sẽ giúp việc duyệt dễ hơn.
  • Dùng dấu gạch nối thay vì dấu gạch dưới trong tên tệp và thư mục sẽ có lợi hơn cho SEO và cũng tiện thao tác trong terminal.
  • Với sao lưu, có thể dùng kết hợp nhiều dịch vụ như Time Machine, Backblaze, iCloud, và lưu trữ dưới dạng tệp nén trên S3 cũng có thể là một phương án tốt.