tar压缩目录下所有文件到单独的压缩包并删除源文件

想把服务器上的一大批文件下回本地,本以为tar压缩下就可以,结果发现……

这万恶的10g空间……直接压缩是不可能的了。

其次打算直接用ftp传,看到200k的速度也放弃了……

再不济用http-server?

足足有3000多文件,等下载完手都废了……

发现到tar有一个--remove-files的选项 简直是为小空间服务器量身定做的,但当我带上参数再压缩时……空间又满了。。百度了下才知道这个选项是指全部压缩完后删除。那能不能单独压缩文件并删除呢?贴一个脚本:

find . -type f|xargs -I {} tar zcvf {}.tar.gz {}

运行完压缩包就放在了文件在的目录。灵感突发其来,贴一段自己写的

num=0
find . -type f  > filelist.txt
for i in `cat filelist.txt`
do
tar czvf $num.tar.gz --remove-files $i
num=$(($num+1))
done

用screen挂在后台运行。运行效果:

然后用ls | grep gz  > tarlist.txt获取列表,用wget下载回来,再贴一段批量解压的脚本:

for i in `cat tarlist.txt`
do
tar xzvf $i --remove-files
done

不知道该如何将压缩包的名字设置为原来的名字,求大佬赐教。。

(如果将两个脚本结合并放大量大文件 用crontab循环执行可以实现消耗资源的作用?)

 

posted @ 2021-08-31 13:23  星如雨yu  阅读(1461)  评论(0编辑  收藏  举报