Bagaimana cara melacak perubahan di / etc /

30

Saya ingin melacak perubahan di / etc /

Pada dasarnya saya ingin tahu apakah suatu file diubah, oleh yum updateatau oleh pengguna dan putar kembali jika saya tidak suka chage. Saya berpikir untuk menggunakan VCS seperti snapshot git, LVM atau btrfs atau program cadangan untuk ini.

Apa yang akan kamu rekomendasikan?

taffer
sumber
1
kemungkinan duplikat dari praktik terbaik untuk mencadangkan file konfigurasi
enzotib

Jawaban:

32

Sepertinya Anda ingin dllkeeper dari Joey Hess of Debian, yang mengelola file di bawah /etcmenggunakan kontrol versi. Ini mendukung git, lincah, darcs dan bazaar.

git adalah VCS terbaik yang didukung oleh dllkeeper dan pengguna VCS kemungkinan besar akan tahu. Mungkin saja distribusi Anda telah memilih untuk memodifikasi etckeeper sehingga VCS defaultnya bukan git. Anda seharusnya hanya menggunakan penjaga etc dengan VCS selain git jika Anda jatuh cinta dengan VCS lainnya.

Faheem Mitha
sumber
Etckeeper dengan mudah adalah salah satu alat admin paling berharga yang telah saya instal di komputer saya, dan merupakan salah satu paket pertama yang saya instal setelah menyiapkan sistem baru.
hlovdal
6

Saya tidak bisa memberikan rekomendasi terakhir kepada Anda, tetapi saya dapat berbagi beberapa pemikiran tentang masalah ini. Mengingat bahwa / etc biasanya agak kecil, Anda mungkin hanya pergi untuk solusi tar-ball terkompresi sederhana. Jika Anda hampir tidak perlu menelusuri sejarah, itu mungkin solusi termudah untuk disiapkan.

Bagi saya itu akan menjadi membosankan untuk mengelola volume logis hanya untuk melacak / etc dan terutama karena saya tidak berpikir bahwa snapshot LVM dirancang untuk dibuat secara teratur sebagai sarana untuk cadangan data yang jumlahnya relatif kecil.

btrfs menurut saya menjadi perlengkapan yang jauh lebih baik untuk ini, tetapi masih belum stabil seperti, misalnya, ext {2,3,4} dan alat fsck juga belum dilakukan. Tapi itu terus membaik.

Secara pribadi saya sebenarnya menggunakan git untuk melacak / etc tetapi Anda harus ingat bahwa git tidak menyimpan metainformation file seperti kepemilikan atau izin! Dan juga periksa bahwa direktori .git memiliki izin yang benar. Ada beberapa alat yang membantu mengatasi masalah ini. Anda mungkin ingin melihat dll-penjaga , yang dikembangkan persis untuk melacak / etc atau menggunakan setidaknya menggunakan sesuatu seperti gitperma atau metastore untuk melacak metainformation.

antje-m
sumber
3

Untuk melacak perubahan "yang tidak diinginkan" kami menggunakan HIDS - dalam kasus kami yang samhainlain adalah tripwireatau aide. Semua sistem ini akan memperingatkan Anda ketika sesuatu yang tidak diinginkan terjadi.

A yum updatetidak boleh mengubah apa pun tanpa meninggalkan .rpmnew atau .rpmold, jika file konfigurasi ditandai seperti itu di rpm yang sesuai.

Saya merasa ini adalah praktik yang baik untuk membuat salinan keamanan dari file yang akan saya modifikasi dengan cp -p origfile origfileYYYY-MM-DDtanggal hari sebelumnya.

Jika semuanya gagal - saya memanggil orang-orang cadangan dan meminta pengembalian dari cadangan "baik" yang terakhir diketahui.

Nils
sumber
1

Saya pikir Anda dapat membuat snapshot dari file / direktori di /etc.

Pertama-tama buatlah daftar file / etc / direktori:

# ls -lha /etc >> /snapshotofetc

Dan jika Anda membuat file di /etc

# touch testfile

dan jika Anda mengambil snapshot /etcseperti apa yang telah kami lakukan sebelumnya

# ls -lhs /etc /lastsnapshotofetc

dan kemudian Anda dapat membandingkan perbedaan antara 2 file seperti ini:

# diff /snapshotofetc /lastsnapshotofetc
saya datang ke
sumber
1

Selalu ada Radmind . Anda dapat memutar kembali perubahan itu jika tidak menyukainya.

chiggs
sumber
0

Apakah Anda mencari manajemen konfigurasi atau melacak / memantau perubahan sistem file?

Jika lebih awal, saya akan melihat puppetatau chef. CFEngineada untuk tujuan komersial. puppetadalah binatang yang populer hari ini.

Jika ini yang terakhir, sulit bagi Anda untuk memantau perubahan sistem file tetapi ada contoh program seperti inotifydan audit sistem file auditctlatau SGI, famtetapi sekali lagi, ini adalah hal pemantauan dan bisa jadi implementasi yang mahal (kinerja sistem file bisa rusak).

Nikhil Mulley
sumber
dllkeeper bisa tenang hanya untuk hal-hal tertentu / etc.
Nikhil Mulley
Maaf karena tidak seaman itu. Saya memperbaiki pertanyaan.
taffer
0

Anda dapat memeriksa rsnapshotsnapshot per jam dari direktori apa pun yang Anda inginkan ... Anda dapat mengaturnya hingga 24 jam, lalu X harian, lalu X mingguan, dll. Sebanyak yang Anda inginkan untuk ruang disk. Cukup cerdas untuk tautan keras ketika file tidak berubah (digunakan di rsyncbelakang layar.

Aaron D. Marasco
sumber
0

Anda mungkin mempertimbangkan untuk menggunakan git. Anda bisa. Ini efisien dalam melacak perubahan dan sangat mudah digunakan untuk hal seperti ini.

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

Saya percaya pengaturan awal berjalan seperti ini. Saya belum melakukannya untuk sementara waktu.

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

Pendekatan ini bekerja paling baik untuk satu server, tetapi bisa dilapisi dengan alat lain yang mengubah repositori. Ini dapat berguna di situs kenari Anda untuk memastikan perubahan yang diharapkan terjadi.

Anda mungkin dapat menggunakan kloning untuk menangani file yang umum untuk beberapa server.

BillThor
sumber
0

Saya memiliki skrip yang berjalan setiap hari dan mencadangkan file yang telah berubah sejak cadangan sebelumnya:

#!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"

Anda melewati jalur di mana cadangan akan dibuat dan direktori itu akan memiliki daftar yang mirip dengan ini (setelah beberapa kali berjalan):

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

Anda bisa memodifikasinya sedikit untuk merekam perubahan lebih sering atau menggunakan inotify untuk memicu versi skrip yang dimodifikasi ketika perubahan terjadi /etc.

trk7
sumber