लिनक्स के तहत एक कार्यक्रम द्वारा किए गए फ़ाइल सिस्टम संशोधनों को ट्रैक करें, सहेजें और वापस लाएं


9

मैं ऐसा करने में सक्षम होना चाहता हूं, जब एक प्रोग्राम जैसे कि इंस्टॉलर चलाया जाता है, मेरे फाइलसिस्टम में किए गए संशोधनों की सूची को ट्रैक करें ताकि मैं बाद में उन्हें वापस कर सकूं।

EDIT: यह एक गैर-पैकेज्ड प्रोग्राम की चिंता करता है । मैं एप्ट-गेट का उपयोग करता हूं जहां तक ​​मैं कर सकता हूं।

आदर्श रूप से मैं ऐसा कुछ करने में सक्षम होना चाहता हूं:

(sudo) catch-modifs some-installer.bin > fsmodifs.patch

और तब:

(sudo) revert-modifs fsmodifs.patch

क्या ऐसा करने का एक सुविधाजनक तरीका है?

जवाबों:


1

संभवतः ऐसा करने का सबसे आसान (?) तरीका है "लाइव डेटा विभाजन" के साथ LiveUSB को बूट करना। (या, अपने आप को प्रभाव को दोहराने के लिए, चेरोट जेल में: आरओ परत को आरओ परत पर माउंट करें।) आरडब्ल्यू फाइलसिस्टम का स्नैपशॉट लें - जो एक ताजा बूट के बाद बहुत पतला होना चाहिए - फिर अपना इंस्टॉलर चलाएं। प्रत्येक फ़ाइल जो इसे बदल देती है या बनाता है वह rw "लगातार डेटा" ओवरले विभाजन पर होगी। यहां तक ​​कि हटा दी गई फाइलें "जादू डॉटफाइल्स" के रूप में दिखाई देंगी।


यह जटिल लगता है ... क्या नया विभाजन बनाना संभव नहीं है, पुराने आरओ को माउंट करें और आरडब्ल्यू में नए को माउंट करें?
य्वान

हां, आप सिंगल-यूजर-मोड से भी ऐसा कर सकते हैं। पर एक नजर डालें unionfsमूल रूप से, आरडब्ल्यू फाइल सिस्टम सभी लेखन को स्वीकार करता है, लेकिन आरओ फाइल सिस्टम अभी भी यह नीचे दिखाई दे रहा है -। यदि फ़ाइल बदली गई है, तो यह आरडब्ल्यू एफएस के लिए "माइग्रेट" करती है; यदि इसे हटा दिया गया है, तो वास्तव में "मास्क" करने के लिए आरडब्ल्यू एफएस पर एक "जादू डॉटफाइल" है। स्थापित करना unionfsथोड़ा मार्मिक हो सकता है, यही कारण है कि मैंने लाइवयूएसबी का सुझाव दिया है (यह आपके लिए वह हिस्सा है, और आपके पास शुरू करने के लिए "साफ" सिस्टम छवि है)
BRPocock

2

हो सकता है कि ट्रिपवायर पर एक नज़र डालें? ट्रिपवायर आपके सक्रिय उदाहरण से अधिक निष्क्रिय है, लेकिन यह अभी भी आपके लिए काम कर सकता है।

http://www.linuxjournal.com/article/8758

ट्रिपवायर एक घुसपैठ का पता लगाने वाला सिस्टम (आईडीएस) है, जो लगातार और स्वचालित रूप से, आपके महत्वपूर्ण सिस्टम फाइलों और रिपोर्टों को नियंत्रण में रखता है यदि वे एक पटाखा (या गलती से) नष्ट हो गए हैं या संशोधित किए गए हैं। यह सिस्टम प्रशासक को तुरंत यह जानने की अनुमति देता है कि क्या समझौता किया गया था और इसे ठीक करें।


1

इंस्टॉलवॉच पर एक नज़र डालें:

http://en.wikipedia.org/wiki/Installwatch#Functionality

http://asic-linux.com.mx/~izto/checkinstall/installwatch.html


आप "CheckInstall" मतलब है? क्या यह काम करता है जब मेरे पास मेकफाइल्स नहीं है? मेरे मामले में (एक्लिम) इंस्टॉलेशन जार इंस्टॉलर के माध्यम से किया गया था।

नहीं, मेरा मतलब है Installwatch जो कि CheckInstall का एक हिस्सा है।
qerub

"इंस्टॉलवॉच हर गतिशील रूप से जुड़े ईएलएफ प्रोग्राम के साथ काम करता है, सिस्टम कॉल को ओवरराइड करता है जो फ़ाइल सिस्टम परिवर्तन का कारण बनता है। ऐसी कुछ सिस्टम कॉल खुली (2) और अनलिंक (2) हैं।" एक जेवीएम के साथ ठीक काम करना चाहिए।
qerub

हाँ लेकिन जाहिरा तौर पर Installwatch अकेले अब एक लंबे समय के लिए रखा गया है। इसके अलावा आप InstallWatch लॉग को वापस लाने में सक्षम होने के लिए CheckInstall की जरूरत है। मुझे अब भी देखना चाहिए। धन्यवाद।

1

लाइब्रेरी फ़ंक्शन को LD_PRELOADइंटरसेप्ट करने के लिए openलाइब्रेरी को लोड करने के लिए उपयोग करें और फ़ाइल को खोलने से पहले पथनाम / आउटपुट को लॉग करता है / बैकअप बनाता है।

के लिए स्रोत कोड पर एक नज़र है strace


हां, लेकिन जैसा कि किसी ने कहा, क्या होगा यदि कार्यक्रम सांख्यिकीय रूप से जुड़ा हुआ है?
य्वान

0

यदि इंस्टॉलर कुछ पैकेजिंग सुविधा का उपयोग करता है (जैसे कि .debडेबियन / उबंटू / ... के .rpmपैकेज के लिए, RedHat / CentOS / ... आदि के लिए पैकेज) तो पैकेज इंस्टॉलर को पता होना चाहिए कि इंस्टॉलेशन और हटाने पर क्या करना है। और मेरा मानना ​​है कि आपको मौजूदा पैकेजिंग सिस्टम का उपयोग करना चाहिए , अपने स्वयं के आविष्कार नहीं करना चाहिए । (लिनक्स परंपरागत रूप से विंडोज जैसे इंस्टॉलर नहीं है)।

यदि आप वास्तव में कुछ प्रक्रिया द्वारा किए गए फ़ाइल परिवर्तनों का पालन करना चाहते हैं, तो आप सिस्टम कॉल का उपयोग कर सकते हैं straceया कर सकते हैं ltrace। आप इनोटिफाई और संबंधित सुविधाएं भी प्राप्त कर सकते हैं ।

लेकिन मुझे ऐसा नहीं पता है catch-modifsऔर revert-modifsआप जैसा चाहते हैं।

मैं आपके आवेदन के लिए एक इंस्टॉलर नहीं बनाने का सुझाव देता हूं, लेकिन पैकेज प्रबंधक का उपयोग करने के लिए, इसलिए आपके आवेदन के लिए .deb(और / या .rpm) पैकेज प्रदान करना है। वे अपने इंस्टॉलर से बेहतर निर्भरता के मुद्दों को संभाल लेंगे।


हां, मैं हर समय apt-get का उपयोग करता हूं। मैं अपने स्वयं के अनुप्रयोगों के बारे में बात नहीं कर रहा था, लेकिन अनपैक्ड लोगों के बारे में। मैं हमेशा हाथ में एकdeb नहीं है।

आपके द्वारा उल्लिखित अनपैक्ड एप्लिकेशन को यह दस्तावेज होना चाहिए कि वे किन फाइलों का उपयोग करते हैं और उन्हें कैसे स्थापित किया जाना चाहिए।

^ ^ क्या होगा अगर वे नहीं करते हैं? मुझे पता था कि मैं उन्हें खुद पैकेज कर सकता हूं, लेकिन यह सीधा नहीं है । इसके अलावा इस तरह के आदेश आपके द्वारा किए गए कुछ सिस्टम स्क्रिप्ट को सुरक्षित तरीके से जांचने के लिए उपयोगी हो सकते हैं।

मैं मानता हूं कि आपकी इच्छा दिलचस्प है, लेकिन मुझे यकीन नहीं है कि यह आसानी से लागू हो सकता है ....

0

आप जो चाहते हैं, उसे प्राप्त करने का आसान तरीका: एक ब्रांड के नए वर्चुअल मशीन उदाहरण (VMWare वर्कस्टेशन, ओरेकल वर्चुअलबॉक्स, आदि) में "अविश्वसनीय" एप्लिकेशन इंस्टॉल करें।

जब आप तय करते हैं कि अब आपको आवेदन नहीं करना है, तो वर्चुअल मशीन को हटा दें।

आपके अन्य विकल्प - फ़ाइल एक्सेस syscalls को पकड़ना - त्रुटि प्रवण और अपूर्ण होने की संभावना है। किसी भी समाधान से विशेष रूप से सावधान रहें जिसके लिए काम करने के लिए डायनेमिक लिंकिंग की आवश्यकता होती है (जैसा कि इंस्टॉलवॉच करता है)। इंस्टॉलर काफी वैध तरीके से डायरेक्ट सिस्टम कॉल का प्रयोग कर सकता है, या स्टेटिकली लिंक हो सकता है।


वाह, वर्चुअल मशीन निश्चित रूप से ओवरकिल है ... मुझे बस एक सुविधाजनक तरीके से कुछ कॉन्फ़िगरेशन फ़ाइलों को सहेजने और बैकअप करने की आवश्यकता है।
य्वेन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.