Giới thiệu
Thư mục /etc/
đóng một vai trò quan trọng trong cách thức hoạt động của hệ thống Linux. Lý do cho điều này là bởi vì gần như mọi tập tin cấu hình hệ thống được đặt bên trong /etc/
. Dữ liệu được lưu trữ /etc/
không chỉ liên quan đến các thư viện hệ thống tích hợp mà còn cho phần mềm mới được cài đặt và cả cấu hình của nó. Cài đặt hệ thống và phần mềm, nâng cấp và thay đổi cấu hình đều được lưu trữ trong /etc/
. Vì vậy, nó có phải là một thực tiễn tốt để sử dụng kiểm soát phiên bản khi quản lý /etc/
để tránh các lỗi tiềm ẩn gây ra bởi các hoạt động không lường trước hoặc vô tình.
Với Etckeeper, bạn có thể dễ dàng quản lý /etc/
với cơ chế kiểm soát phiên bản của mình bằng cách sử dụng kho lưu trữ Git, Mercurial, Bazaar hoặc Darcs. Theo mặc định, Etckeeper sử dụng git để duy trì /etc/
thư mục kho lưu trữ phiên bản ở mức chi tiết hàng ngày để giảm thiểu mất dữ liệu tiềm năng. Ngoài ra, nó cho phép bạn thực hiện các thay đổi của mình theo cách thủ công bất cứ lúc nào.
Trong bài viết này, chúng ta hãy xem cách cài đặt Etckeeper trên phiên bản máy chủ CentOS 6, cũng như cách thực hiện thủ công một cam kết và hoàn tác các thay đổi.
Điều kiện tiên quyết
Các hướng dẫn trong bài viết này đã được xác thực trên phiên bản Vultr CentOS 6 với ngăn xếp LEMP. Hướng dẫn cho các bản phân phối khác có thể khác nhau.
Lưu ý: đó là một thực tiễn bảo mật tốt để truy cập hệ thống của bạn với tư cách là người dùng không root với các đặc quyền sudo.
Bước 1: Cài đặt Etckeeper
Etckeeper được bao gồm trong repo EPEL Yum. Bạn cần thiết lập repo EPEL Yum trước khi có thể cài đặt Etckeeper:
sudo yum install epel-release
sudo yum update
sudo yum install etckeeper
Cài đặt thành công Etckeeper sẽ tự động cài đặt git và các phụ thuộc khác.
Bạn có thể tùy chỉnh cấu hình của Etckeeper bằng cách chỉnh sửa tệp cấu hình tại /etc/etckeeper/etckeeper.conf
. Tuy nhiên, cấu hình mặc định là đầy đủ và chúng tôi sẽ sử dụng nó cho mục đích của hướng dẫn này.
Bạn có thể làm cho Etckeeper coi /etc/
là thư mục làm việc của git bằng cách thực hiện các lệnh sau:
cd /etc
sudo etckeeper init
Các "init" sub-lệnh trên sẽ tạo ra một file có tên .gitignore
và thư mục có tên .git
trong /etc/
.
Có .gitignore
chứa một danh sách các tập tin được xác định trước và không yêu cầu quản lý với kiểm soát phiên bản. Nếu cần, bạn có thể thêm hoặc xóa tên tệp trong đó nếu muốn, chỉ cần nhớ đặt một tên tệp trên mỗi dòng giữa dòng # begin section managed by etckeeper...
và dòng # end section managed by etckeeper
.
Thư mục .git
là nơi lưu trữ kho phiên bản của /etc/
thư mục.
Trước khi cam kết ban đầu, bạn có thể xem những gì sẽ được cam kết:
sudo etckeeper vcs status | more
Lệnh vcs
phụ của Etckeeper sẽ gọi phần mềm kiểm soát phiên bản (là git) để thực hiện lệnh phụ sau trong /etc/
thư mục. Vì vậy, lệnh trên bằng với:
sudo git -C /etc status | more
Nhấn space bar
để chuyển một trang. Nếu bạn tìm thấy bất kỳ tệp nào không được kiểm soát phiên bản, hãy thêm chúng vào .gitignore
tệp.
Bây giờ, bạn có thể cam kết tất cả các nội dung trong thư mục / etc (ngoại trừ các tệp được xác định trong .gitignore
) vào kho git của bạn. Hãy nhớ viết một số ý kiến có ý nghĩa giữa hai dấu ngoặc kép để xem xét.
sudo etckeeper commit "Initial config in /etc"
Tại đây, bạn có thể nén thư mục git để tiết kiệm dung lượng đĩa:
sudo etckeeper vcs gc
Kết hợp với git, Etckeeper có thể ghi lại bất kỳ thay đổi nào xảy ra trong /etc/
thư mục, chẳng hạn như thêm, sửa đổi hoặc xóa các tệp, cũng như thay đổi quyền sở hữu và / hoặc quyền đối với các tệp và thư mục. Tất cả mọi thứ thuộc /etc/
chính sách kiểm soát phiên bản của nó.
Xin lưu ý rằng việc /etc/
kiểm soát phiên bản không có nghĩa là bạn có thể thực hiện bất kỳ thao tác nào trên nó. Các hoạt động sai nghiêm trọng có thể khiến hệ thống không thể hoạt động trước khi Etckeeper có thể khôi phục cấu hình về trạng thái hoạt động.
Đối với mục đích thử nghiệm, bạn chỉ nên thực hiện các thay đổi an toàn /etc/
, chẳng hạn như thêm tệp mới, sửa đổi tên máy chủ /etc/hosts
hoặc cài đặt phần mềm mới bằng Yum.
Ví dụ: thêm tệp abcde
vào /etc/
:
sudo touch /etc/abcde
Sau đó, thêm dòng 192.168.0.2 desktop
trong /etc/hosts
tệp:
echo '192.168.0.2 desktop' | sudo tee -a /etc/hosts
Cuối cùng, bạn có thể thực hiện lại lệnh phụ "commit":
sudo etckeeper commit "add a file /etc/abcde and add a line to /etc/hosts"
Bước 5: Thu hồi các thay đổi của bạn
Đầu tiên, bạn có thể kiểm tra lịch sử git để nhận từng id và nhận xét của cam kết:
sudo etckeeper vcs log
Thứ hai, bạn có thể kiểm tra chi tiết của bất kỳ cam kết nào với một vài bit đầu tiên của id cam kết của nó. Ở đây, chúng tôi giả sử rằng id xác nhận đầu tiên là 7f5bff
, id xác nhận thứ hai là 1aa658
.
sudo etckeeper vcs show 1aa658
Bạn có thể nhấn j
để di chuyển xuống, nhấn k
để di chuyển lên, nhập /keyword<Enter>
để tìm kiếm, nhấn q
để thoát.
Thứ ba, bạn cũng có thể so sánh sự khác biệt giữa hai lần xác nhận với lệnh sau. Hãy nhận biết trình tự của hai cam kết, một chuỗi tự nhiên đang đặt cái trước trước cái thứ hai.
sudo etckeeper vcs diff 7f5bff..1aa658
Bây giờ, bạn thấy rằng bạn đã định cấu hình sai tên máy chủ /etc/hosts
trong lần xác nhận đầu tiên và lần xác nhận thứ hai, nhưng thêm tệp /etc/abcde
là một thao tác chính xác, bạn có thể thu hồi thay đổi của mình chỉ trong /etc/hosts
tệp bằng lệnh sau:
sudo etckeeper vcs checkout 7f5bff /etc/hosts
Nếu bạn muốn thu hồi tất cả các thay đổi giữa lần xác nhận đầu tiên và lần xác nhận thứ hai, bạn có thể sử dụng lệnh sau:
sudo etckeeper vcs checkout 7f5bff
Tất nhiên, bạn vẫn có thể quay lại cam kết thứ hai:
sudo etckeeper vcs checkout 1aa658
Phần kết luận
Có Etckeeper được cấu hình đúng cách, bạn có thể điều chỉnh và bảo trì hệ thống của mình một cách tự tin hơn. Tuy nhiên, hãy lưu ý rằng kiểm soát phiên bản khác với sao lưu và /etc/
thư mục không phải là nơi duy nhất cần quan tâm. Để giữ cho hệ thống của bạn luôn hoạt động, bạn cũng cần sao lưu hệ thống thường xuyên bên cạnh cơ chế kiểm soát phiên bản.