2010-02-16 87 views
1

我有一個疑問。我正在做一個與Linux系統恢復概念相關的項目。在那裏,我計劃在失敗的情況下執行應用程序明智的回滾。有什麼方法可以找出系統中應用程序使用的所有文件是什麼?找到與某個軟件相關的文件

好的。我會說清楚一點。例如考慮firefox應用程序。安裝時,許多文件都是從.deb文件寫入/ etc,/ usr,/ opt等文件夾中。在Windows中,所有文件都安裝在程序文件下的一個文件夾中,而在Linux中則不是。那麼有什麼方法可以找出屬於軟件的文件嗎?

謝謝。

+0

你是什麼意思「應用明智」。從命令行中,用戶可以嚮應用程序提供任何*文件名。 「應用方式」是什麼意思?請提供某種定義或規則來定義「應用方式」。 – 2010-02-16 13:30:01

+0

是的!這裏去!在Linux中,現有軟件確實將整個系統作爲整體進行備份。但是我的計劃是,如果某些應用程序說,在更新到2.5後,在某些版本中運行的firefox 2.4會失效!在這種情況下,我計劃通過恢復備份的文件將版本回滾到2.4!所以要做到這一點,我需要找到與軟件相關的文件!有什麼方法可以找到這個?謝謝 – 2010-02-16 13:51:59

+0

很多系統已經通過包管理提供了這個功能 – 2010-02-16 15:12:36

回答

5

那麼這可以涵蓋幾件事情。

如果你的意思是,哪些文件是由你的應用程序安裝提供的?然後,答案是,使用體面的軟件包管理,提供軟件作爲rpm/deb/...任何軟件包,並取消其餘部分。

如果你的意思是,我們的應用程序正在引用哪些庫?然後你可以使用ldd這會告訴你在執行這個應用程序時使用哪個動態庫。

如果你的意思是,我的應用程序主動使用哪些文件?然後查看lsof(lsof = list打開文件)(或者ls/proc // fd /)的輸出,這將顯示您的應用程序打開的所有文件描述符(文件,套接字,管道,tty的......) )

或者您可以使用以上全部。

你不能跟蹤的一件事(除非你自己記錄)是應用程序在其生命週期中創建了哪些文件。

+0

你的回答比較完整,upvoting。 – dubiousjim 2010-02-16 13:32:10

+0

它在這裏!在Linux中,現有軟件確實將整個系統作爲整體進行備份。但是我的計劃是,如果某些應用程序說,在更新到2.5後,在某些版本中運行的firefox 2.4會失效!在這種情況下,我計劃通過恢復備份的文件將版本回滾到2.4!所以要做到這一點,我需要找到與軟件 – 2010-02-16 14:02:15

+1

有關的文件,這正是您的發行版中的包管理應該爲您做的。但是這不包括在運行時創建的文件(例如firefox緩存),因爲這個鏈接沒有保存在任何地方。請記住,軟件包需要庫,回滾包可能意味着回滾庫,這可能意味着其他應用程序使用相同的庫時出現問題(困惑了?)。 – 2010-02-16 14:49:06

1

確定與應用程序一起安裝的所有文件取決於軟件包管理器。所有我處理過的(apt,pacman)都具備了這種能力。

要確定應用程序當前打開的所有文件,請使用lsof。

0

嗯,這取決於...

大多數Linux系統有某種分組管理軟件,如在Debian和Ubuntu資質。在那裏,你有關於什麼屬於一個數據包的信息。您可能可以使用該信息。這不包括應用程序運行時期間創建的文件。

0

如果您使用的是基於RPM的發行

# rpm -Uvh --repackage pkg-1-1.i386.rpm 

將重新包裝的舊文件和升級交易,所以你以後可以回滾,如果出事了。回滾到昨天的狀態,例如

# rpm -Uvh --rollback yesterday 

其他例子見this article

相關問題