2012-03-04 63 views
0

我需要写一个C程序查找两个文件夹,文件夹1和folder2.tar之间的差异,并用文件夹1更新folder2.tar的内容,以找到差异。C代码使用tar

#include <unistd.h> 
#include <stdio.h> 
main() 
{ 
system("tar df folder2.tar folder1 > file.patch"); 
system("tar uf folder2 folder1"); //Assume folder2 is the extracted version of folder2.tar 
} 

这里我有几个问题::所以我用tar --diff实用程序命令象下面这样写

  1. 首先,我没能获得在文件夹中的内容的差异到分开文件。我只得到了修改后的文件名的文件夹中,并修改的时间
  2. 其次,将文件夹中的许多文件,并在文件夹1修改一个随机文件后,我们如何指定的路径,只更新文件夹2特定文件。柏油?
  3. 我们如何写对于上述方案的代码?

任何想法!!!!!如果你有的话,请帮助我! 感谢

+0

是这个家庭作业?请将其标记为功课如果你因此需要使用版本控制,而不是这个 – Coren 2012-03-04 22:17:01

+3

。但是,我如何更新这个文件夹folder1中修改过的文件夹folder2.tar中的相同文件?我如何指定它的路径?它知道文件夹中的特定文件只有在运行命令后才被修改 – sehe 2012-03-04 22:18:23

回答

1

试试这个:

tar xf folder2.tar 
diff -rq folder1 folder2 

然后你可以从diff的输出,修改后的文件名,并传递给tar -u。随意将它包装在system()中,以便您可以将其称为C程序,但我建议您将其设置为bash脚本:更小,更快,并且在进行更改时无需重新编译。

+0

感谢亚历克西斯的.....现在我可以看到在内容的差异的情况下 – priya 2012-03-04 22:30:54

+0

我不明白你的问题。 diff的输出为您提供路径名。捕获并使用它。 'man tar'会告诉你如何告诉tar来更新一个特定的路径名​​。 – alexis 2012-03-04 22:34:55

+0

哦....好吧......谢谢! – priya 2012-03-04 22:38:41