想像一下汹桦,目錄/var/www/app/public/upload被用于資源上傳存放鲁驶。
起初,用戶量不大舞骆,看起來沒什么問題钥弯。可是用戶越來越多了督禽,這里的空間越占越大脆霎,慢慢地接近100%。
此時狈惫,我們需要將這些資源轉(zhuǎn)移:
- 將資源轉(zhuǎn)移到另一大磁盤睛蛛,如:/data下(簡單,影響须侍浮)
- 轉(zhuǎn)移到云存儲服務(wù)(七牛忆肾,阿里云等)(麻煩,牽動大)【其實(shí)一開始就應(yīng)該使用云服務(wù)】
現(xiàn)階段菱肖,我選了前者客冈;當(dāng)然,對于改革蔑滓,我從未放棄郊酒。
考慮到/var和/data是兩個不同文件系統(tǒng)遇绞。
假設(shè)使用:
- mv /var/www/app/public/upload /data/resource/upload
- ln -s /data/resource/upload /var/www/app/public/upload
則會在mv會先拷貝,再將原有文件刪除燎窘,整個過程漫長之極摹闽,即便選擇訪問最少時間段,也容易造成影響褐健。
顯然付鹿,這方法不靠譜;最后蚜迅,我的做法是這樣的:
#!/bin/bash
rsync -av /var/www/app/public/upload /data/resource/
rsync -av /var/www/app/public/upload /data/resource/
mv /var/www/app/public/upload /var/www/app/public/upload.bk
ln -s /data/resource/upload /var/www/app/public/upload
因?yàn)榍懊嬉呀?jīng)做了第一次rsync舵匾,第二次rsync其實(shí)速度會非常快(幾乎瞬間)谁不,此時將mv移動到同目錄下(同文件系統(tǒng))坐梯,其實(shí)是重命名(也是瞬間),最后刹帕,ln軟鏈回去(同時也是瞬間完成)
job done!