我家里有好几台 Mac。平时主要在一台上干活,时间长了,这台机器里攒下了一大堆东西:好几个 AI 助手、自己调教了很久的技能库、命令行工具、各种登录态,还有一堆写进配置里的习惯。
后来我想在另一台 Mac mini 上也能干活。要求很简单,也很贪心:我希望坐过去之后,那台机器跟我主力机的体验一模一样,不用重新折腾一遍。
我一开始觉得这没什么难的,不就是复制文件吗?结果真动手才发现,"搬家"这件事的坑,一个接一个。
第一个坑:你连"哪台是哪台"都搞不清
我打算让 AI 帮我把东西同步过去。第一步,得先在局域网里找到那台目标机器。
就这一步,卡住了。
我知道目标机器的登录用户名,可局域网里好几台 Mac,AI 扫了一圈,按这个名字去找,死活对不上。文件共享那边试账号密码,直接被拒绝。
问题出在哪?后来才搞明白:Mac 在局域网里广播的"电脑名字",跟你登录用的用户名,根本不是一回事。 我脑子里记的是登录名,可网络上看到的是另一串名字,两台机器名字还长得像,特别容易认错。
再加上文件共享需要单独给用户开权限,哪怕账号密码对,没勾授权,照样连不上。
这里最容易走的捷径,是对着一台"看着像"的机器就开始传东西。我没有这么干,而是一台一台核对:到底是哪台机器、系统版本是什么、登录进去之后的用户名和主目录对不对。搬错机器,比不搬还麻烦。
最后的结论是:文件共享这条路走不通,换走远程登录(SSH),它更适合干迁移这种活儿。
先把"通道"修好,再谈搬家
走远程登录,又有个烦人的问题:每次连接都要输密码,后面要传几万个文件,总不能一直手动输。
我做的事情,是把本机的公钥放到目标机器上,建立"免密登录"。这样一来,两台机器之间就有了一条不用反复验证的通道。我还给这条通道起了个简短的别名,后面所有命令直接用别名,不用记一长串主机名。
这个顺序很重要:不是一上来就开始复制,而是先把"怎么连、怎么不用反复验证"这条通道彻底修好。 通道顺了,后面的搬运才是一气呵成的事;通道没修好,搬一半让你输密码、让你确认,特别容易半途而废。
第二个坑:工具版本太老,新语法用不了
通道修好,开始搬。我那台主力机光一个 AI 助手的目录,就有 9 个多 G。
我用的是 rsync,这是 Mac 上做同步最趁手的工具,它能保留文件权限、还能正确处理软链接。我兴冲冲地用了一个能显示总进度的参数,结果——报错了。
原因很尴尬:本机的 rsync 版本偏老,不支持这个较新的参数。
这是个特别典型的坑。你在网上搜教程、或者让 AI 生成命令,它给的往往是最新写法;可你自己机器上的工具是几年前的版本,语法不认。命令一行没跑,先卡在工具版本上。
我没有去升级系统(升级动静太大,迁移中途不动这些),而是换成老版本也支持的写法,进度和统计照样能看,先把东西搬完再说。
第三个坑:有些文件,你自己都没权限读
复制开始后,又出问题:中途有一批文件,当前用户打不开,同步直接报权限错误。
这听起来反直觉——我自己电脑里的文件,我还读不了?但系统用久了,确实会留下一些归属混乱的文件,比如某些程序以特殊身份生成的缓存、对象文件,它们的权限不属于当前用户。
这时候最省事的做法是无视报错,"能传多少传多少"。但迁移最怕的就是这个:你以为搬完了,其实缺了一块,等新机器上跑出错才发现,回头还得查缺的是什么。
我宁可停下来,把这批权限异常的文件定位出来,修好权限,再重新传,确保最后是完整的一份。
不是所有东西都该"复制"
搬着搬着,我意识到一个更大的问题:迁移不等于把整台机器照抄一遍,不同的东西,搬法完全不一样。
我把要搬的东西分成了几类。
第一类是数据和配置,比如 AI 助手的整个目录、技能库、shell 的配置文件。这些要完整复制,而且要保留权限和软链接,这是我"调教了很久"的核心。
第二类是应用程序。有些应用,我只需要在新机器上装一份,不用把它的旧数据拷过去——数据拷过去,反而可能因为路径不对、版本不对出问题。
第三类是登录态。这个最微妙,有些工具的登录记录可以同步,有些换了机器就得重新登录,没法简单复制。我把能同步的同步了,剩下的做好"需要重新登录"的心理准备。
而藏在所有这些底下的,是最大的一个坑:写死的路径。
很多配置、脚本里,会把"我是谁、我的主目录在哪"写成绝对路径。一旦换了机器、换了用户名,这些路径就全错了。所以我在同步之后,还要把这些路径逐一改成新机器对应的路径。文件复制过去只完成了一半,让它们在新路径下还能正常工作,才是另一半。
最后一道关:别信"看着搬完了"
东西都传完、路径也改了,我差点就合上电脑,觉得大功告成。
但我忍住了,在新机器上真刀真枪地干了一会儿活。 我打开平时用的 AI 助手,让它跑了个完整流程;又试了几个命令行工具,看配置加载对不对;还特意检查了那些需要登录的服务,看哪些还在线、哪些要重新认证。
这一测,果然又揪出几个小问题:某个工具的路径虽然改了,但有个配置文件里还藏着一处旧地址;某个命令在新机器上能运行,却找不到它依赖的一个文件。
这就是"文件到位"和"环境可用"之间的最后一道缝。 你看着进度条走完、文件都在,不代表它们能协同工作。迁移真正的完成标志,不是复制了多少 G,而是你在新机器上,能顺畅地干成一件真实的事。
如果我偷懒、不做这一步,这些小问题会在我以后某次赶时间、正要用的时候突然冒出来,那时候再排查,往往想不起来是迁移时埋下的,更费时间。
搬家真正搬的是什么
折腾完之后,我在新机器上坐下来,那些熟悉的工具、配置、习惯都还在,没有那种"换了电脑一切从头再来"的陌生感。
回头看,这件事表面上是在搬文件,实际上搬的是我长期养成的一整套工作环境。文件是死的,路径、权限、登录态、版本这些东西才是活的。
我也总结出几条以后可以直接复用的顺序:
先寻址,再通道,后搬运,最后改路径。 先确认目标机器到底是哪台、别认错;再把免密通道修好;然后分清楚什么数据完整复制、什么应用只装不拷、什么登录态要重来;最后把写死的路径改成新机器的。
下次我会怎么做
下次再要迁移环境,我会这么干:
第一,不急着复制。 先花时间确认目标机器、建立免密登录和别名,把通道彻底理顺。
第二,先列清单,把东西分类:数据配置完整同步、应用只装不拷旧数据、登录态单独评估,而不是整盘照抄。
第三,提前检查工具版本,别等用了新语法报错才想起来;同时留意源文件里有没有归属混乱、读不了的文件。
第四,同步完专门处理路径,把所有写死的绝对路径改成新机器的,并实际跑一遍验证,而不是"复制完就当搬完了"。
说到底,换电脑最消磨人的,从来不是硬件,而是"把旧环境重新搭一遍"的那几个小时。把这几个小时变成一套可以复用的迁移流程,比省下一次复制的时间,值当得多。