想把服務器上的一大批文件下回本地,本以為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獲取列表,用迅雷下載回來,再貼一段批量解壓的腳本:
for i in `cat tarlist.txt`
do
tar xzvf $i --remove-files
done
不知道該如何將壓縮包的名字設置為原來的名字,求大佬賜教。。
(如果將兩個腳本結合並放大量大文件 用crontab循環執行可以實現消耗資源的作用?)