这个坑值得记一笔。/home 使用率到了百分之百,网站头像上传失败,想把 /home/www/uploads 挪到新挂上去的数据盘,又担心应用里写死的绝对路径断掉。

这类报错背后常见的原因有几处,逐个排除就行。上传目录和历史备份长期挤在同一个分区里;目录迁移之后属主属组没有跟着改,应用读不到;应用里写死了绝对路径,软链没有真正生效。

上来先确认目录大小和属主

du -sh /home/www/uploads; ls -ld /home/www/uploads

保留权限复制到新盘

rsync -aHAX /home/www/uploads/ /data/uploads/

再往下改属主之后建软链

chown -R www:www /data/uploads; ln -s /data/uploads /home/www/uploads

以运行用户验证读写

sudo -u www touch /home/www/uploads/.probe

隔了一天再看,现象没变,说明不是偶发。

改完先别撤,确认这几项。上传一张图片成功,du -sh 新目录随之增长,旧位置只剩一个软链占位,应用日志里没有报错。

容易忽略的是,迁移前把应用停几十秒,边写边拷一定会漏文件;PHP 的 open_basedir 也要把新路径加进去,否则照样报无权限。改动前把原配置备份一份,出问题能马上回滚,这比任何技巧都实用。

作者 9823189