2009-05-08

桑梓贴吧视频数据的解决方案

  由于种种问题以及磁盘阵列空间有限,桑梓贴吧的阵列趋近饱和,为了解决这个问题最近稍微研究了一下,根据实际的发现,桑梓贴吧的视频文件有一些在网站后台已经被删除,但是在服务器上的文件却没有被删除。这样一来,我就在猜想这种情况恐怕不少。于是,经过一番考虑,想到了一个方法。



这个方法的要点如下:


  1. 从数据库中查出所有桑梓贴吧的视频文件名记录,导出到一个新的表。
  2. 从视频文件目录下导出所有视频文件名列表,再倒入到一个新的数据库表中。
  3. 对比两个数据库的文件名字段,筛选出不是同时存在于两个数据库之中的数据
  4. 导出多出的文件列表,删除文件。

那么一步一步看。

  第一步:导出桑梓贴吧的视频文件名记录。假设表是address 字段是link那么。我们直接复制整个表到别的数据库。

  第二步:从视频目录下导出所有视频文件名的列表,只需要cd到视频目录然后:
find ./ -exec ls {} \; &;gt /home/temp/filelist.txt

  这样就成功的吧文件列表导出来了。之后再想办法把这个列表导入到一个数据库表中。

  第三步:假设我们导入的数据表是exist那么现在对比找出在两个表中不同时存在的数据:

insert into temp(link)
select link from fileexist
where not exists ( select link from addresswhere address.link = fileexist.link) ;

  这一步会在一个临时表temp中的link字段中插入在两个表中不同时存在的数据,因此再把temp表的字段导出就成为了我们要挑选出的文件了。

  第四步:要删除文件,由于数量众多需要使用xargs命令:为免意外我先移动到其他目录,再行删除:

xargs -i mv {}&;lt /home/ftp/temp.txt ../tempuse

这个命令就是用xargs把文件名传递到{}的位置,移动过去而已。而且不怕列表里有文件不存在。

好了,一下子删了200多G的东西,世界清静了。。。。

没有评论: