如何在Linux中迁移用户目录 Linux usermod主目录转移

说白了,Linux迁移用户主目录就三步:备份数据、改路径、修权限。
但实际操作中,几个细节特别容易踩坑。

先说最重要的,迁移前必须锁定用户账户。
去年我们跑那个项目,有个哥们忘了用passwd -l锁账户,结果用户正在编辑文件,rsync同步时直接乱套了,说实话挺坑的。
另外一点,用usermod -d改路径时,带不带-m差别巨大。
3 000量级的用户目录,不带-m的得手动挪文件,累死个人;但带-m自动移动后,原目录直接删,省事是省事了,不过我一开始也以为原目录会保留,后来发现不对,必须确认过备份再操作。

还有个细节挺关键的,就是ACL和SELinux上下文。
用rsync -AX能保留大部分属性,但去年测试时发现某个应用硬依赖特定SELinux标签,直接迁移就崩了。
这时候就得用getfattr和setfattr手动修复,这个点很多人没注意。

等等,还有个事,如果新目录在另一块盘,千万别忘了检查/etc/fstab挂载是否生效。
有次因为分区未挂载,导致chown后用户连新家都打不开。

建议先在测试环境完整走一遍流程,特别是带-m的移动操作,原目录删除是实时的,后悔都来不及。

宝塔Linux面板一键迁移功能实现网站快速搬家教程

说实话,我当年第一次用宝塔一键迁移搬家时,心里还真有点打鼓。
毕竟服务器那点事儿,稍微出岔子整个站瘫痪可不是开玩笑的。
但好在宝塔这功能设计得还算贴心,跟着步骤走,大部分时候真挺顺利的。

比如我去年帮朋友搬家那次,两台都是宝塔面板,PHP7 .4 +MySQL8 .0,环境完全对得上。
迁出那台,在"软件管理"里找到"宝塔插件"的"一键迁移",把"迁出接口"勾上,它就给了个类似http://migration.btpanel.com/xxxx的地址和一把长长短短的密钥。
我这人记性不好,赶紧手机录屏又用备忘录抄了一遍,生怕迁入时手滑填错。

迁入那台操作就简单多了。
同样找"宝塔插件",点"迁入数据"填上旧主机的地址密钥,它就开始自动对环境。
我盯着那个进度条,看着从"检测数据库..."到"校验配置文件",心里默数着。
当时网络正好不太稳,它提示说"部分文件传输超时",我就暂停了几分钟等网好了继续,最后居然只花了二十分钟就全迁移完。

最有意思的是数据库迁移那部分。
因为我网站有个特别大的附件目录,它单独算了一项"文件迁移",另一项才是"数据库迁移"。
当时我看着进度条,突然想起这个目录可能得单独备份,后来果然在旧主机上又打包了一份附件,避免遗漏。

不过有几点得特别提。
第一就是面板设置是带不走的,这点迁移前我就忘了,结果在新主机上发现主题没了、监控图标也乱码了,花了半天重新配置。
第二是FTP账号它默认是迁过去的,但密码没迁,得手动改。
第三是如果源站有防盗链或者CDN缓存,迁过去后访问会出问题,得记得清理。

我后来又试过用命令行方式迁移,发现比面板快不少,但操作复杂多了。
现在帮客户搬家,基本还是推荐用这个一键迁移,实在不行再辅以宝塔的"文件管理器"和"数据库管理器"手动补漏。
虽然它不是万能的,但确实把很多"搬砖"的活儿简单化了不少。

在Linux中进行Gitlab跨服务器同版本跨系统迁移

说白了,Linux中进行GitLab跨服务器迁移其实很简单,但复杂在细节处理上。
先说最重要的,确保新服务器安装的是目标Linux版本,比如Centos8 ,同时原服务器与新服务器之间要有网络连接。
去年我们跑的那个项目,内存至少得有2 G,网络环境要稳定。

另外一点,迁移前准备挺关键的。
比如查看Linux版本信息,用cat/proc/version和cat/etc/redhat-release确认版本。
安装依赖包,执行yum install policycoreutils openssh-server openssh-clients postfix。
确保SSH和邮件服务已启用并运行。

我一开始以为只要安装好依赖就万事大吉了,后来发现不对,还得调整防火墙规则,开放HTTP和HTTPS服务,比如端口8 09 0。
使用systemctl status firewalld检查防火墙状态,必要时启动防火墙。

数据迁移时,先备份原服务器数据,用gitlab-rake gitlab:backup:create命令。
然后通过WinSCP或scp命令将备份文件传输到目标服务器。
导入备份数据,用gitlab-rake gitlab:backup:restore命令。

等等,还有个事,迁移后要清理和卸载GitLab。
停服务,卸载GitLab,清理守护进程和磁盘文件。
这个点很多人没注意,其实挺坑的。

最后提醒一下,迁移前一定要充分备份和测试,避免数据丢失或服务中断。
我觉得值得试试,但一定要小心谨慎。