2010-02-16 90 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

相关问题