Toàn bộ hệ thống Linux


8

Tôi đã cài đặt một hệ thống Linux cơ bản. Tôi muốn chạy một tập lệnh bên thứ ba rất lớn và phức tạp sẽ thực hiện nhiều thay đổi cho các phần khác nhau của toàn bộ hệ thống. Những thay đổi này sẽ bao gồm thêm các tệp mới, sửa đổi các tệp hiện có và xóa các tệp hiện có. Khi kịch bản hoàn thành, tôi sẽ có một hệ thống được sửa đổi. Các sửa đổi sẽ rộng và đáng kể.

Tôi muốn một số loại báo cáo về tất cả các tệp đã được thêm, xóa hoặc sửa đổi và phân tích từng dòng về các sửa đổi. Một cái gì đó giống như đầu ra của một công cụ khác biệt tập tin sẽ là tuyệt vời.

Tôi giả sử tôi cần thực hiện một số ảnh chụp nhanh trước khi chạy tập lệnh và ảnh chụp nhanh thứ hai sau. Tôi giả sử sau đó tôi sẽ đưa những ảnh chụp nhanh đó vào một số loại công cụ khác hoặc khác.

Có ai biết công cụ nào để sử dụng và làm thế nào để làm khác toàn bộ hệ thống không?

Tôi đang sử dụng Virtualbox có tính năng hình ảnh khác biệt , mặc dù tôi không biết liệu tôi có thể điều chỉnh nó theo mục đích này hay không. Hơn nữa, tôi muốn một giải pháp chung chung hơn nếu có thể.


Hình ảnh khác biệt (còn gọi là ảnh chụp nhanh) không phải là thứ bạn đang tìm kiếm. Mục tiêu của họ là tạo ra một khác biệt nhị phân càng nhỏ càng tốt, không phải là một văn bản dài dòng khác.
Dmitry Grigoryev

@DmitryGrigoryev Đó là ấn tượng tôi có được từ liên kết. Cảm ơn đã xác nhận điều này cho tôi.

Trong thực tế những gì bạn muốn là khá dễ dàng nhưng phức tạp để đạt được. Với các tài nguyên tôi sẽ cài đặt hai hệ thống giống hệt nhau. Cho phép kiểm tra hệ thống tệp trên hệ thống sẽ sửa đổi các tệp. Lấy báo cáo từ kiểm toán để xác định những gì đã được thêm / modfiry / xóa. Sau đó so sánh các tệp này với hệ thống được cài đặt khác.
BitsOfNix

1
Bạn có thể sử dụng rsyncđể tạo ảnh chụp nhanh và một lần chạy khác sau khi sửa đổi để tạo báo cáo về các tệp đã sửa đổi. Phần khác có lẽ sẽ khó hơn.
FloHimelf

Câu trả lời:


1

Tôi nghĩ rằng ý tưởng của bạn không phải là một giải pháp. Để phác thảo một cách có thể: Tôi đang sử dụng rsnapshotđể sao lưu. Nó tạo ra một cấu trúc thư mục (sao lưu) của tất cả hoặc một tập hợp con các tệp của bạn với các điểm nhập của (ví dụ) /backup/hourly.1/.../backup/hourly.0/..., trong đó mỗi nhánh mang toàn bộ dữ liệu, nhưng sử dụng các liên kết (cứng-) cho các tệp mà không có thay đổi nào được thực hiện . Thực hiện đệ quy lshoặc findtrên cả hai cấu trúc và so sánh đầu ra (được sắp xếp, trong trường hợp tìm thấy) sẽ hiển thị các tệp bị thiếu và kiểm tra số lượng liên kết (trong ls -lđó sẽ là cột thứ hai) sẽ hiển thị các tệp mới (có số lượng liên kết 1). Để biết chi tiết về các thay đổi trong các tệp bạn có thể (đối với các tệp đã xác định), hãy sử dụng thông thườngdiffcông cụ. Như đã nói đây là một phác thảo, sẽ cần một số công việc để thực hiện và có thể có những điều kỳ quặc không rõ ràng, vì vậy hãy thực hiện đề xuất đó với một hạt muối


0

Tôi có thể sẽ làm điều này bằng cách sử dụng rsync như được đề xuất trong một trong các ý kiến. Rupync có chế độ chạy khô và tính năng tổng kiểm tra mà bạn có thể sử dụng để tạo báo cáo chính xác về những gì đã thay đổi.

Đưa nó đi xa hơn có lẽ bạn có thể viết một tập lệnh thực hiện khác biệt trên các tệp đã thay đổi, mặc dù bạn phải làm cho nó tránh các tệp nhị phân (không biết làm thế nào) ..

Hoặc, bạn có thể thực hiện một cách tiếp cận hoàn toàn khác .. sử dụng git. Vì vậy, trên hệ thống 'cơ sở' của bạn, hãy thực hiện một git init trong /, sau đó sau khi bạn chạy điều thứ ba bạn có thể làm:

git status > /tmp/changed-files.txt
git diff > /tmp/changes.txt

sử dụng git sẽ cung cấp cho bạn một chút linh hoạt. Đã nói rằng nó có thể đấu tranh trên toàn bộ hệ thống và có thể bị nhầm lẫn về / Proc, v.v.


0

Có một thứ gọi là libguestfs mà bạn có thể sử dụng để thực hiện diff. Đó là những gì tôi đã sử dụng trong quá khứ và tôi nghĩ bây giờ hoạt động đó thậm chí có thể được xây dựng để bạn sẽ không phải sử dụng vỏ cá.

Một tùy chọn khác là chạy các hoạt động của bạn trong một thùng chứa docker, sau đó xuất và khuếch tán các cây tệp kết quả dưới dạng tệp tar.

Mặc dù vậy, hãy lưu ý rằng nếu tập lệnh thay đổi cài đặt hệ thống bằng cách ghi vào tệp ảo thì những thay đổi đó sẽ không hiển thị trong cây tệp và bạn cần một cái gì đó khác để ghi lại những thay đổi đó. Một ví dụ về một cái gì đó như thế là quy tắc iptable. Bạn sẽ cần logic tùy chỉnh để nắm bắt những thay đổi đó.


Ngoại trừ nếu quy tắc là liên tục thì nó phải được lưu trữ ở đâu đó để có thể chạy lại / bật lại sau khi mạng xuất hiện, v.v.
ivanivan

0

Trang tại Linux Cookbook hiển thị một tìm kiếm sửa đổi trước và sau, sau đó là một khác biệt. Rất đơn giản, nó có thể là điểm khởi đầu, nhưng vấn đề của bạn có thể được giải quyết tốt hơn với các giải pháp tinh vi hơn được ghi nhận.

Điều này có vẻ như nó sẽ chỉ bắt các bổ sung và xóa, không sửa đổi ... chúc mừng, drl


0

Tất cả những câu trả lời này đều đi đúng hướng và cùng một cách. Cũng có thể ném 8 bit của tôi vào ...

Cài đặt hệ thống cơ sở trên hộp ảo. Sau khi thiết lập ban đầu và cơ sở của bạn đã sẵn sàng, hãy khởi động vm với một số phương tiện trực tiếp khác. Sau đó, bạn có thể tar lên hoặc xuất hệ thống tệp mà không có các thư mục dễ bay hơi như /proccó liên quan.

Chạy tập lệnh lớn của bạn và lặp lại quy trình xuất.

Bây giờ bạn có sẵn 2 hệ thống tập tin, bạn có thể sử dụng các công cụ so sánh khác nhau.

diff --brief -Nr /tree1 /tree2

Sẽ cung cấp cho bạn một danh sách các tệp khác nhau stdoutvà một danh sách các tệp không tìm thấy trong một cây này hoặc cây kia stderr.

Để tìm hiểu những thay đổi thực tế đã diễn ra, bạn có thể phân tích stdoutđầu ra của các tệp khác nhau và chạy thường xuyên difftrên chúng riêng lẻ, chuyển hướng đầu ra sang một tệp. Hoặc bạn chỉ có thể kiểm tra danh sách và chạy diff trên các tệp mà bạn đặc biệt quan tâm.

Bạn có thể kết hợp tất cả những điều này vào một lệnh, sử dụng git. Có thể được sử dụng mà không cần khởi tạo lại repo, chỉ cần trỏ đến bất kỳ 2 thư mục. Cung cấp một đầu ra màu đẹp, phân trang qua ít.

git diff --no-index /tree1 /tree2

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.