由于种种问题以及磁盘阵列空间有限,桑梓贴吧的阵列趋近饱和,为了解决这个问题最近稍微研究了一下,根据实际的发现,桑梓贴吧的视频文件有一些在网站后台已经被删除,但是在服务器上的文件却没有被删除。这样一来,我就在猜想这种情况恐怕不少。于是,经过一番考虑,想到了一个方法。
这个方法的要点如下:
- 从数据库中查出所有桑梓贴吧的视频文件名记录,导出到一个新的表。
- 从视频文件目录下导出所有视频文件名列表,再倒入到一个新的数据库表中。
- 对比两个数据库的文件名字段,筛选出不是同时存在于两个数据库之中的数据
- 导出多出的文件列表,删除文件。
那么一步一步看。
第一步:导出桑梓贴吧的视频文件名记录。假设表是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的东西,世界清静了。。。。
没有评论:
发表评论