Làm thế nào tôi có thể khác hai máy chủ Redhat Linux?


15

Tôi có hai máy chủ nên có cùng một thiết lập ngoại trừ những khác biệt đã biết.

Bằng cách chạy:

find / \( -path /proc -o -path /sys -o -path /dev \) -prune -o -print | sort > allfiles.txt

Tôi có thể tìm thấy danh sách tất cả các tệp trên một máy chủ và so sánh nó với danh sách các tệp trên máy chủ kia. Điều này sẽ cho tôi thấy sự khác biệt trong tên của các tệp nằm trên máy chủ.

Những gì tôi thực sự muốn làm là chạy một tổng kiểm tra trên tất cả các tệp trên cả hai máy chủ và so sánh chúng với các nội dung khác nhau. ví dụ

find / \( -path /proc -o -path /sys -o -path /dev \) -prune -o -print | xargs /usr/bin/sha1sum

Đây có phải là một cách hợp lý để làm điều này? Tôi đã nghĩ rằng rysnc đã có hầu hết các chức năng này nhưng nó có thể được sử dụng để cung cấp danh sách các khác biệt không?


2
Lần sau bạn nên sử dụng -print0thay vì -printxargs -0thay vì xargs. Bạn sẽ tránh mọi vấn đề gây ra bởi tên tệp "lẻ".
Cristian Ciupitu

Câu trả lời:


22

Bạn nói đúng, rsync là hoàn hảo cho việc này. Sử dụng --itemize-changes(aka -i). Đảm bảo bạn có thể chạy cái này dưới dạng root ở cả hai bên (hoặc một số người dùng khác có toàn quyền truy cập vào máy):

rsync -ani --delete / root@remotehost:/
  • -a là để lưu trữ và về cơ bản làm cho rsync tạo một bản sao chính xác (ngoài một số trường hợp liên quan đến liên kết)
  • -n dành cho chạy khô và có nghĩa là không có gì thực sự sẽ thay đổi (Cái này là QUAN TRỌNG! :))
  • -i dành cho thay đổi từng mục và đưa ra định dạng đơn giản dễ hiểu một lần bạn nhận được hiển thị mọi tệp cần được cập nhật (cú pháp được giải thích đầy đủ trong trang hướng dẫn dưới trợ giúp chi tiết cho trình kích hoạt đó).
  • --delete làm cho rsync xóa các tệp tồn tại trên đích nhưng không phải là nguồn.

Nếu bạn muốn loại trừ các đường dẫn nhất định, hãy sử dụng các lệnh như --exclude /var. Các mẫu loại trừ có liên quan đến thư mục nguồn (trong trường hợp này là /, vì vậy chúng có hiệu quả tuyệt đối).


Nếu bạn loại trừ / var, bạn cũng sẽ loại trừ nơi crontabs được lưu trữ, mà có lẽ DO cần phải được kiểm tra. Tuy nhiên, bạn muốn loại trừ những thứ như / var / log và / var / cache
Sean Reifschneider

7

Bạn có thể muốn điều tra cờ -c của rsync. Từ man rsync:

    -c, --checksum              skip based on checksum, not mod-time & size

Tôi sẽ để lại nhận xét cho câu trả lời của Alex Jurkiewicz, nhưng tôi không có đủ đại diện: '(chưa ...


1
Một số kịch bản tồn tại mà cờ này hữu ích. Phổ biến nhất tôi từng thấy là khi bạn có dữ liệu được lưu trữ ở một số định dạng 'lạ' (thường là nhị phân) có kích thước không đổi. Nếu tệp được cập nhật bởi một quy trình tự động trên cả hai mặt của đồng bộ hóa chính xác cùng một lúc (giả sử xoay vòng nhật ký hoặc tương tự), rsync có thể bỏ lỡ khi đồng bộ hóa chỉ ở kích thước / m-time. Chắc chắn là có thể, nhưng khá hiếm.
Alex J

Tôi đã mong đợi nó chỉ kiểm tra nội dung của các tệp, để bạn có thể so sánh mà không cần chú ý đến thời gian sửa đổi, nhưng có vẻ như Alex đã đúng ... có một cách hay để bỏ qua tất cả meta- dữ liệu và chỉ chú ý đến nội dung, cách git nào?
iconoclast

4

Một công cụ hữu ích bạn nên xem xét là "vòng / phút". Điều này sẽ in ra một danh sách tất cả các tệp được đóng gói khác với khi chúng được đóng gói. Điều này bỏ qua mọi tệp không được đóng gói, nhưng đó là một cách rất hay để có ý tưởng về các tệp đã được thay đổi kể từ khi cài đặt, là một phần của hệ thống cơ sở. Chúng cũng bao gồm một cờ cho bạn biết nếu chúng được coi là tệp cấu hình.

Ví dụ:

S.5....T  c /root/.bashrc
S.5....T  c /etc/yum/yum-updatesd.conf
.M......    /usr/bin/rdate
..5....T  c /etc/dbbackup.conf
S.5....T  c /etc/webalizer.conf
SM5....T  c /etc/sysconfig/iptables-config

Vì vậy, ".bashrc" và "yum-Updatesd.conf" là các tệp "cấu hình" đã thay đổi về kích thước, thời gian và tổng kiểm MD5. "Thứ hạng" đã thay đổi chế độ ...

Cơ sở dữ liệu RPM là một điều rất hữu ích.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.