使用硬链接和coreutils的truncate工具shrink大文件方法一例

一般直接rm大文件必然会对数据库服务器的IO性能造成压力,因此可以使用coreutils的truncate工具对大文件进行shrink

该工具安装方法如下:

#wget http://ftp.gnu.org/gnu/coreutils/coreutils-8.9.tar.gz

#tar -zxvf coreutils-8.9.tar.gz 

#cd coreutils-8.9

#./configure

#make


实验如下:

[root@test /data]#du -hs S82.test.sql

907M    S82.test.sql


对目标文件建立硬链接:

#ln S82.test.sql S82.test.sql.hdlk


[root@test /data]#l *S82*

-rw-r--r--  2 root root 950988446 Apr 28 17:09 S82.test.sql

-rw-r--r--  2 root root 950988446 Apr 28 17:09 S82.test.sql.hdlk



注意  大小为900M左右,因此我们使用coreutils工具集中的truncate命令对大文件进行shrink,可以写个脚本,

内容如下:

#cat truncate.sh 

#!/bin/bash

TRUNCATE=/usr/local/bin/truncate

for i in `seq 900 -10 10 `;  #从900 开始每次递减10 ,输出结果见下面

do 

  sleep 2

  echo "$TRUNCATE -s ${i}M /data/S82.test.sql.hdlk"

  $TRUNCATE -s ${i}M /data/S82.test.sql.hdlk

done


开始执行:

./truncate.sh 

/usr/local/bin/truncate -s 900M /data/S82.test.sql.hdlk

/usr/local/bin/truncate -s 890M /data/S82.test.sql.hdlk

/usr/local/bin/truncate -s 880M /data/S82.test.sql.hdlk

/usr/local/bin/truncate -s 870M /data/S82.test.sql.hdlk

/usr/local/bin/truncate -s 860M /data/S82.test.sql.hdlk

/usr/local/bin/truncate -s 850M /data/S82.test.sql.hdlk

/usr/local/bin/truncate -s 840M /data/S82.test.sql.hdlk

/usr/local/bin/truncate -s 830M /data/S82.test.sql.hdlk

/usr/local/bin/truncate -s 820M /data/S82.test.sql.hdlk

/usr/local/bin/truncate -s 810M /data/S82.test.sql.hdlk

/usr/local/bin/truncate -s 800M /data/S82.test.sql.hdlk

/usr/local/bin/truncate -s 790M /data/S82.test.sql.hdlk

/usr/local/bin/truncate -s 780M /data/S82.test.sql.hdlk

/usr/local/bin/truncate -s 770M /data/S82.test.sql.hdlk

/usr/local/bin/truncate -s 760M /data/S82.test.sql.hdlk

/usr/local/bin/truncate -s 750M /data/S82.test.sql.hdlk

/usr/local/bin/truncate -s 740M /data/S82.test.sql.hdlk

/usr/local/bin/truncate -s 730M /data/S82.test.sql.hdlk

/usr/local/bin/truncate -s 720M /data/S82.test.sql.hdlk

/usr/local/bin/truncate -s 710M /data/S82.test.sql.hdlk

/usr/local/bin/truncate -s 700M /data/S82.test.sql.hdlk

/usr/local/bin/truncate -s 690M /data/S82.test.sql.hdlk

/usr/local/bin/truncate -s 680M /data/S82.test.sql.hdlk

/usr/local/bin/truncate -s 670M /data/S82.test.sql.hdlk

/usr/local/bin/truncate -s 660M /data/S82.test.sql.hdlk

/usr/local/bin/truncate -s 650M /data/S82.test.sql.hdlk

/usr/local/bin/truncate -s 640M /data/S82.test.sql.hdlk

/usr/local/bin/truncate -s 630M /data/S82.test.sql.hdlk

/usr/local/bin/truncate -s 620M /data/S82.test.sql.hdlk

/usr/local/bin/truncate -s 610M /data/S82.test.sql.hdlk

/usr/local/bin/truncate -s 600M /data/S82.test.sql.hdlk

/usr/local/bin/truncate -s 590M /data/S82.test.sql.hdlk

/usr/local/bin/truncate -s 580M /data/S82.test.sql.hdlk

/usr/local/bin/truncate -s 570M /data/S82.test.sql.hdlk

/usr/local/bin/truncate -s 560M /data/S82.test.sql.hdlk

/usr/local/bin/truncate -s 550M /data/S82.test.sql.hdlk

/usr/local/bin/truncate -s 540M /data/S82.test.sql.hdlk

/usr/local/bin/truncate -s 530M /data/S82.test.sql.hdlk

........................................................

........................................................

/usr/local/bin/truncate -s 30M /data/S82.test.sql.hdlk

/usr/local/bin/truncate -s 20M /data/S82.test.sql.hdlk

/usr/local/bin/truncate -s 10M /data/S82.test.sql.hdlk


shrink收缩后文件大小为10M左右:

[root@alpha-mongo-140-51 /data]#ll S82*

-rw-r--r-- 2 root root 10485760 Jul 25 13:43 S82.sq_comment.sql

-rw-r--r-- 2 root root 10485760 Jul 25 13:43 S82.sq_comment.sql.hdlk


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15498/viewspace-2158661/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/15498/viewspace-2158661/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值