有一种情况,我不得不将大量帐户从一个分区大量迁移到另一个分区。 WHM的“Rearranging Accounts”功能一次只能处理一个帐户,但要移入其中的100多个帐户,就需要一种脚本化的解决方案。 在不造成任何停机的情况下,如何在实时服务器上执行以下操作:

方案: 将正在使用的服务器上的账户(超过100个)从 /home4 转移到 /home3

步骤 1: 获取用户列表

通过如下命令快速获取服务器上的用户

1
for user in `cat /etc/passwd | grep /home/ | cut -d: -f1` ; do echo $user >> /root/users ; done

步骤 2: Rsync所有数据

你可以通过下面的命令将一个磁盘上的数据复制到另一个磁盘上,此外,即便是在本地,这样的操作可能会占用大量CPU,因此您可能会修改rsync的可选参数bwlimit达到限制传输的带宽,但是这会减慢传输速度。

1
for user in `cat users` ; do rsync -av --bwlimit=8000 --delete /home4/$user /home3 ; done

You may want to run this command a few times depending on how much data is being moved over.

步骤 3: 更新配置

将以下脚本内容粘贴到一个空文件中(该脚本用于用与服务器有关的分区名称替换分区名称),chmod 755,然后运行:

1
2
3
4
5
6
7
for user in `cat users` ; do
replace /home4/ /home3/ — /var/cpanel/userdata/$user/*
replace /home4/ /home3/ — /etc/proftpd/$user
replace /home4/$user /home3/$user — /etc/passwd
ln -s /home3/$user /home4/$user
replace /home4/$user /home3/$user — /home3/$user/etc/*/passwd
done

然后,运行该脚本:

1
2
/scripts/rebuildhttpconf && service httpd restart
service pure-ftpd restart (或 proftp)

确定所有内容都已移走后,您可以从旧分区中删除所有用户数据。