วิธีติดตามการเปลี่ยนแปลงใน / etc /


30

ฉันต้องการติดตามการเปลี่ยนแปลงใน / etc /

โดยทั่วไปฉันต้องการทราบว่าไฟล์มีการเปลี่ยนแปลงโดยyum updateหรือโดยผู้ใช้และย้อนกลับถ้าฉันไม่ชอบ chage ฉันคิดว่าจะใช้ VCS เช่น git, LVM หรือ btrfs snapshot หรือโปรแกรมสำรองข้อมูลสำหรับสิ่งนี้

คุณจะแนะนำอะไร


คำตอบ:


32

ดูเหมือนว่าคุณต้องการผู้ดูแลจาก Joey Hess of Debian ซึ่งจัดการไฟล์ภายใต้การ/etcใช้การควบคุมเวอร์ชัน รองรับ git, mercurial, darcs และ bazaar

git คือ VCS ที่ได้รับการสนับสนุนที่ดีที่สุดโดยผู้ดูแลระบบและผู้ใช้ VCS มีแนวโน้มที่จะรู้มากที่สุด อาจเป็นไปได้ว่าการกระจายของคุณเลือกที่จะแก้ไข etckeeper เพื่อให้ VCS เริ่มต้นไม่ใช่ git คุณควรใช้ etckeeper กับ VCS นอกเหนือจาก git เท่านั้นหากคุณรัก VCS อื่น


Etckeeper เป็นหนึ่งในเครื่องมือดูแลระบบที่มีค่าที่สุดที่ฉันได้ติดตั้งไว้ในเครื่องของฉันและเป็นหนึ่งในแพ็คเกจแรก ๆ ที่ฉันติดตั้งหลังจากตั้งค่าระบบใหม่
hlovdal

6

ฉันไม่สามารถให้คำแนะนำขั้นสุดท้ายแก่คุณได้ แต่ฉันสามารถแบ่งปันความคิดเล็กน้อยเกี่ยวกับเรื่องนี้ เนื่องจากปกติแล้ว / etc จะค่อนข้างเล็กคุณอาจใช้วิธีการบีบอัด tar-ball แบบง่ายๆ หากคุณไม่จำเป็นต้องผ่านประวัติศาสตร์มาก่อนอาจเป็นวิธีที่ง่ายที่สุดในการตั้งค่า

สำหรับฉันมันน่าเบื่อที่จะจัดการโลจิคัลวอลุ่มเพียงเพื่อติดตาม / etc และโดยเฉพาะอย่างยิ่งที่ฉันไม่คิดว่าสแนปชอตของ LVM ถูกออกแบบมาเพื่อสร้างเป็นประจำเป็นวิธีสำรองข้อมูลที่ค่อนข้างน้อย

btrfs ดูเหมือนว่าฉันจะมีอุปกรณ์ที่ดีกว่านี้ แต่ก็ยังไม่เสถียรเท่าที่ควรเช่น {2,3,4} และ fsck ยังไม่ได้ทำ แต่มันก็ดีขึ้นเรื่อย ๆ

โดยส่วนตัวแล้วฉันใช้ git ในการติดตาม / etc แต่คุณควรจำไว้ว่า git นั้นไม่ได้เก็บ metainformation ของไฟล์เช่นการเป็นเจ้าของหรือการอนุญาต! และตรวจสอบว่าไดเรกทอรี. git มีสิทธิ์ที่ถูกต้อง มีเครื่องมือบางอย่างที่ช่วยแก้ไขปัญหาเหล่านี้ คุณอาจต้องการดูetc-keeperซึ่งได้รับการพัฒนาเพื่อการติดตาม / etc หรือใช้อย่างน้อยก็ใช้gitpermsหรือmetastoreเพื่อติดตามการเปลี่ยนแปลง


3

เพื่อติดตาม "ที่ไม่พึงประสงค์" การเปลี่ยนแปลงที่เราใช้ HIDS ใช้ - ในกรณีของเราsamhainที่คนอื่นมีหรือtripwire aideระบบทั้งหมดนี้จะเตือนคุณเมื่อมีสิ่งไม่พึงประสงค์เกิดขึ้น

A yum updateไม่ควรเปลี่ยนแปลงสิ่งใดโดยไม่ปล่อยให้. rpmnew หรือ. rpmold หากไฟล์ config ถูกแฟล็กเช่นนี้ใน rpm ที่สอดคล้องกัน

Myselv ฉันพบว่าเป็นวิธีปฏิบัติที่ดีในการทำสำเนาความปลอดภัยของไฟล์ที่ฉันจะแก้ไขด้วยcp -p origfile origfileYYYY-MM-DDเมื่อวันก่อน

หากทุกอย่างอื่นล้มเหลว - ฉันเรียกคนสำรองและขอคืนค่าจากการสำรองข้อมูล "ดี" ที่เป็นที่รู้จักล่าสุด


1

ฉันคิดว่าคุณสามารถทำให้ภาพรวมของไฟล์ / /etcไดเรกทอรีใน

ก่อนอื่นให้ทำรายการไฟล์ / etc / directory:

# ls -lha /etc >> /snapshotofetc

และถ้าคุณสร้างไฟล์ใน /etc

# touch testfile

และถ้าคุณถ่ายภาพ/etcเหมือนที่เราเคยทำมาก่อน

# ls -lhs /etc /lastsnapshotofetc

และจากนั้นคุณสามารถเปรียบเทียบความแตกต่างระหว่าง 2 ไฟล์ดังนี้:

# diff /snapshotofetc /lastsnapshotofetc

1

มีเสมอradmind คุณสามารถย้อนการเปลี่ยนแปลงนั้นได้ทันทีหากคุณไม่ชอบ


0

คุณกำลังมองหาการจัดการการกำหนดค่าหรือการติดตาม / ตรวจสอบการเปลี่ยนแปลงระบบไฟล์หรือไม่?

ถ้าเป็นก่อนหน้านี้ผมจะมองไปที่หรือpuppet มีอยู่เพื่อการค้า เป็นสัตว์ร้ายที่ได้รับความนิยมในทุกวันนี้chefCFEnginepuppet

ถ้ามันเป็นรุ่นต่อมามันยากที่คุณจะตรวจสอบการเปลี่ยนแปลงของระบบไฟล์อย่างไรก็ตามมีตัวอย่างของโปรแกรมเช่นinotifyและการตรวจสอบระบบไฟล์auditctlหรือ SGI ของfamแต่อีกครั้งมันเป็นสิ่งที่ตรวจสอบและสามารถนำมาใช้แพง


etckeeper สามารถเป็นผู้เชี่ยวชาญได้อย่างเงียบ ๆ สำหรับ / เฉพาะบางอย่าง
Nikhil Mulley

ขออภัยที่ไม่แน่นอน ฉันปรับปรุงคำถาม
taffer

0

คุณสามารถตรวจสอบrsnapshotว่าจะเก็บสแน็ปช็อตรายชั่วโมงใด ๆ ของไดเรกทอรีใด ๆ ที่คุณต้องการ ... คุณสามารถตั้งค่าให้ทำตลอด 24 ชั่วโมงจากนั้นเลือก Dailies X จากนั้นเลือก X weeklies และอื่น ๆ ตามที่คุณต้องการพื้นที่ดิสก์ มันฉลาดพอที่จะเชื่อมโยงอย่างหนักเมื่อไฟล์ไม่ได้เปลี่ยน (ใช้rsyncหลังฉาก


0

gitคุณอาจพิจารณาใช้ คุณสามารถทำได้มันมีประสิทธิภาพในการติดตามการเปลี่ยนแปลงและใช้งานง่ายสำหรับบางสิ่งเช่นนี้

git status # Show changed files
git diff # Show file differences (paged automatically)
git commit -a # Commit all changes. 

ฉันเชื่อว่าการตั้งค่าเริ่มต้นจะเป็นเช่นนี้ ฉันยังไม่ได้ทำมันสักพัก

cd /etc
git init
git add *
git commit -a -m "Created repository"

วิธีนี้ใช้ได้ดีที่สุดสำหรับเซิร์ฟเวอร์เดียว แต่สามารถใช้เลเยอร์กับเครื่องมืออื่นที่เปลี่ยนที่เก็บ สิ่งนี้มีประโยชน์ในไซต์นกขมิ้นของคุณเพื่อให้มั่นใจว่าการเปลี่ยนแปลงที่คาดว่าจะเกิดขึ้น

คุณอาจสามารถใช้การโคลนเพื่อจัดการไฟล์ที่ใช้ร่วมกันกับเซิร์ฟเวอร์หลายเครื่อง


0

ฉันมีสคริปต์ที่ทำงานทุกวันและสำรองไฟล์ที่มีการเปลี่ยนแปลงนับตั้งแต่การสำรองข้อมูลก่อนหน้า:

#!bin/bash
ext=$(date +"%Y%m%d")_ChangeS
mkdir -p "$1/$ext" && \
  ionice -c3 rsync -ah --numeric-ids --inplace --backup \
                   --backup-dir="$1/$ext" \
                   --include="/etc" / "$1" && \
  rmdir --ignore-fail-on-non-empty "$1/$ext"

คุณผ่านเส้นทางที่จะสร้างการสำรองข้อมูลและไดเรกทอรีนั้นจะมีรายชื่อที่คล้ายกับรายการนี้ (หลังจากผ่านไปสองสามครั้ง):

20120106_ChangeS  etc
$ls 20120106_ChangeS/etc/
cron.d

คุณสามารถปรับเปลี่ยนเล็กน้อยเพื่อบันทึกการเปลี่ยนแปลงบ่อยขึ้นหรือใช้ inotify /etcจะเรียกรุ่นล่าสุดของสคริปต์เมื่อมีการเปลี่ยนแปลงเกิดขึ้นใน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.