Trong cấu trúc thư mục Unix / Linux, / etc là nơi chứa các thư mục và tệp cấu hình toàn hệ thống dành riêng cho từng máy chủ; nó là vị trí trung tâm cho tất cả các tệp cấu hình toàn hệ thống. Tệp cấu hình là một tệp cục bộ được sử dụng để kiểm soát cách thức hoạt động của một chương trình, nó phải là tệp tĩnh và không thể là tệp nhị phân thực thi được.

Để theo dõi các thay đổi đối với tệp cấu hình hệ thống, quản trị viên hệ thống thường tạo bản sao (hoặc sao lưu) tệp cấu hình trước khi sửa đổi chúng. Bằng cách đó, nếu họ trực tiếp sửa đổi tệp gốc và mắc lỗi, họ có thể hoàn nguyên về bản sao đã lưu.

Etckeeper là một bộ sưu tập công cụ đơn giản, dễ sử dụng, mô-đun và có thể định cấu hình để cho phép / vv được quản lý bằng cách sử dụng kiểm soát phiên bản. Nó cho phép bạn lưu trữ các thay đổi trong / etc trong hệ thống kiểm soát phiên bản (VCS) như git (là VCS ưu tiên), kho lưu trữ thương mại, chợ hoặc darcs. Do đó, cho phép bạn sử dụng git để xem lại hoặc hoàn nguyên các thay đổi đã được thực hiện thành / etc, trong trường hợp nhầm lẫn.

Các tính năng khác của nó là:

  1. nó hỗ trợ tích hợp với các trình quản lý gói front-end bao gồm APT, YUM, DNF, Zypper và pacman-g2 để tự động cam kết các thay đổi được thực hiện đối với / etc trong quá trình nâng cấp gói.
  2. nó theo dõi siêu dữ liệu tệp (chẳng hạn như quyền đối với tệp) mà git thường không hỗ trợ, nhưng điều đó rất quan trọng đối với / etc, và
  3. nó bao gồm cả công việc cron và bộ đếm thời gian systemd, mỗi bộ có thể tự động thực hiện các thay đổi thoát ra / etc một lần mỗi ngày.

Cách cài đặt Etckeeper trong Linux

Etckeeper có sẵn trong Debian, Ubuntu, Fedora và các bản phân phối Linux khác. Để cài đặt nó, hãy sử dụng trình quản lý gói mặc định của bạn như được hiển thị. Lưu ý rằng lệnh này cũng sẽ cài đặt git và một vài gói khác dưới dạng phụ thuộc.

$ sudo apt-get install etckeeper	#Ubuntu and Debian
# apt-get install etckeeper		#Debian as root user
# dnf install etckeeper			#Fedora 22+
$ sudo zypper install etckeeper	        #OpenSUSE 15

Trên các bản phân phối Enterprise Linux như RedHat Enterprise Linux (RHEL), CentOS và các bản khác, bạn cần thêm kho EPEL trước khi cài đặt như hình minh họa.

# yum install epel-release
# yum install etckeeper

Cấu hình Etckeeper trong Linux

Khi bạn đã cài đặt etckeeper như hình trên, bạn cần cấu hình cách nó hoạt động và tệp cấu hình chính của nó là /etc/etckeeper/etckeeper.conf. Để mở nó để chỉnh sửa, hãy sử dụng bất kỳ trình soạn thảo dựa trên văn bản yêu thích nào của bạn như được hiển thị.

# vim /etc/etckeeper/etckeeper.conf
OR
$ sudo nano /etc/etckeeper/etckeeper.conf

Tệp chứa một số tùy chọn cấu hình (mỗi tùy chọn có một mô tả sử dụng nhỏ, rõ ràng) cho phép bạn đặt hệ thống kiểm soát phiên bản (VCS) để sử dụng, chuyển các tùy chọn cho VSC; để bật hoặc tắt bộ đếm thời gian, bật hoặc tắt cảnh báo tệp đặc biệt, bật hoặc tắt trình khắc phục thực hiện các thay đổi hiện có đối với / etc trước khi cài đặt.

Ngoài ra, bạn có thể đặt trình quản lý gói phía trước hoặc cấp cao hơn (chẳng hạn như apt, yum, dnf, v.v.) và trình quản lý gói cơ bản hoặc cấp thấp (dpkg, rpm, v.v.) để làm việc với etckeeper.

Nếu bạn đã thực hiện bất kỳ thay đổi nào trong tệp, hãy lưu nó và đóng tệp.

Khởi tạo Kho lưu trữ Git và Thực hiện Cam kết Ban đầu

Bây giờ bạn đã cấu hình etckeeper, bạn cần khởi tạo kho lưu trữ Git để bắt đầu theo dõi bất kỳ thay đổi nào trong / etc của bạn như sau. Bạn chỉ có thể chạy quyền root của etckeeper, nếu không hãy sử dụng sudo.

$ cd 
$ sudo etckeeper init
Khởi tạo Kho lưu trữ Git trên / etc

Tiếp theo, bước để etckeeper có thể hoạt động tự động, bạn cần chạy bản cam kết đầu tiên để bắt đầu theo dõi các thay đổi trong / etc, như sau.

$ sudo etckeeper commit "first commit"
Chạy Git Cam kết để theo dõi các thay đổi trong hệ thống tệp / etc
Chạy Git Cam kết để theo dõi các thay đổi trong hệ thống tệp / etc

Thay đổi và cam kết

Sau khi chạy cam kết đầu tiên của bạn, etckeeper qua git hiện đang theo dõi bất kỳ thay đổi nào trong / etc. Bây giờ hãy thử thực hiện bất kỳ thay đổi nào trong bất kỳ tệp cấu hình nào.

Sau đó, chạy lệnh sau để hiển thị các tệp đã thay đổi kể từ lần cam kết cuối cùng; lệnh này về cơ bản hiển thị các thay đổi trong / etc không được sắp xếp cho cam kết, trong đó VCS git và status là một lệnh con git.

$ sudo etckeeper vcs status
Xem các thay đổi đối với / etc Hệ thống tệpXem các thay đổi đối với / etc Hệ thống tệp

Sau đó, cam kết các thay đổi gần đây như sau.

$ sudo etckeeper commit "changed hosts and phpmyadmin config files"
Cam kết các thay đổi mới
Cam kết các thay đổi mới

Xem nhật ký cam kết

Để xem nhật ký của tất cả các cam kết (id và nhận xét của mỗi cam kết), bạn có thể chạy lệnh sau.

$ sudo etckeeper vcs log
Xem lịch sử cam kết GitXem lịch sử cam kết Git

Bạn cũng có thể hiển thị chi tiết của một cam kết, chỉ cần chỉ định ID cam kết (một vài ký tự đầu tiên có thể hoạt động) như được hiển thị:

$ sudo etckeeper vcs show a153b68479d0c440cc42c228cbbb6984095f322d
OR
$ sudo etckeeper vcs show a153b6847
Xem chi tiết cam kếtXem chi tiết cam kết

Bên cạnh đó, bạn có thể xem sự khác biệt giữa hai cam kết như hình. Điều này đặc biệt hữu ích nếu bạn muốn thu hồi các thay đổi như được hiển thị trong phần tiếp theo. Bạn có thể sử dụng các phím mũi tên để cuộn lên và xuống hoặc sang trái và phải và thoát bằng cách nhấn q.

$ sudo etckeeper vcs show 704cc56 a153b6847

Cách thu hồi các thay đổi

Bản chất của etckeeper là giúp bạn theo dõi các thay đổi đối với / etc của mình và đảo ngược các thay đổi khi cần thiết. Giả sử bạn nhận ra rằng bạn đã mắc phải một số lỗi trong /etc/nginx/nginx.conf khi bạn chỉnh sửa lần cuối và dịch vụ Nginx không thể khởi động lại do lỗi trong cấu trúc cấu hình, bạn có thể hoàn nguyên về bản sao đã lưu trong một bản cụ thể commit (ví dụ: 704cc56) trong đó bạn cho rằng cấu hình đã đúng như sau.

$ sudo etckeeper vcs checkout 704cc56 /etc/nginx/nginx.conf

Ngoài ra, bạn có thể hủy tất cả các thay đổi và hoàn nguyên về các phiên bản của tất cả các tệp trong / etc (và các thư mục con của nó) được lưu trữ trong một cam kết cụ thể.

$ sudo etckeeper vcs checkout 704cc56 

Cách cho phép các thay đổi được cam kết tự động

Etckeeper cũng cung cấp dịch vụ và đơn vị hẹn giờ cho Systemd, được bao gồm trong gói. Để khởi chạy Tự động gửi các thay đổi trong / etc, chỉ cần khởi động đơn vị etckeeper.timer ngay bây giờ và kiểm tra xem nó có hoạt động hay không, như sau.

$ sudo systemctl start etckeeper.timer
$ sudo systemctl status etckeeper.timer
Khởi động Bộ hẹn giờ EtckeeperKhởi động Bộ hẹn giờ Etckeeper

Và cho phép nó tự động khởi động khi khởi động hệ thống như hình minh họa.

$ sudo systemctl enable etckeeper.timer
Sự kết luận

Trong hướng dẫn này, chúng tôi đã chỉ ra cách cài đặt và sử dụng etckeeper cho các thay đổi của cửa hàng trong / etc trong hệ thống kiểm soát phiên bản (VCS) chẳng hạn như git và xem xét hoặc hoàn nguyên các thay đổi đã được thực hiện thành / etc, nếu cần. Chia sẻ suy nghĩ của bạn hoặc đặt câu hỏi về etckeeper qua biểu mẫu phản hồi bên dưới.

Trên đây là Cách quản lý bằng Kiểm soát phiên bản bằng Etckeeper trên Linux. Nếu bạn có bất kỳ câu hỏi nào liên quan đến các bước nói trên, hãy 2error.net biết trong phần bình luận và sẽ liên hệ với bạn để có giải pháp trong thời gian sớm nhất.