这两天由于电脑进水了,所以申请换了一台 mac 电脑,所以想把老电脑的数据拷贝到新电脑,折腾了半天,最后还是发现 scp 命令最好用。

使用 「scp 命令方式」之前尝试的其他方法

1、隔空投送

刚开始使用那个隔空投送功能,但是发现不知道啥原因,只能传输几kb的文件,超过这个大小的文件都需要登录 ICound 账户,但是咱没有这个啊,没版本,放弃这个方法了。

PS: 隔空投送功能以前也用过,但是以前没遇到过这个问题,不管多大的文件都能随便传,不知道这次是不是老电脑系统版本问题导致有这个限制。

2、数据线数据传输

后来想用数据线直接连接两个电脑。这个方式遇到的问题也比较多:

刚开始是公司的电脑,端口被禁用了,不让使用数据线/USB导出数据,所以还申请了一个白名单;

后来申请完白名单发现需要等半小时才能生效,那就等吧,咱有啥办法;

等了 40 分钟后,用数据线把新老电脑一连接,发现在新电脑提示老电脑磁盘无法识别,这个方式又败北了。

提示:

通过数据线来数据传输,需要让老电脑进入USB 模式,进入的方式是关机,然后点点开按钮,随后长按按键「T」,直到屏幕出现 USB 的图标。

3、迁移助理

再后来想用迁移助理,发现迁移助理有两种模式

  • 模式一:直接用老电脑的账户覆盖新电脑的账户,把数据完全复制过来;这显然不是我想要的,新电脑我已经装好了开发环境,如果被覆盖了,万一出现某个工具不能用,不是又得重新装一遍开发环境
  • 模式二:新老电脑的账户同时存在,但是因为我的两个电脑用户名一样,需要给新电脑换用户名,我开发环境里有不少环境变量里都写了用户名了,这突然让我改,这不是想让我重装环境吗

于是迁移助理也败北了。

差点放弃了,后来想到了使用 scp 命令配合局域网来数据传输。下面介绍一下怎么通过 scp 命令在两台 Mac 中传输数据

scp 方式传输数据操作步骤

步骤一:打开新电脑的「远程登录开关」

设置中搜索「共享」,打开「远程登录开关」

两台 mac 通过 scp 命令快速传输数据_远程登录

不同版本的 Mac 可能界面略微有些不一样,可能有些 Mac 「共享」功能界面是这样的

两台 mac 通过 scp 命令快速传输数据_mac_02

步骤二:检查远程登录开关打开后 sshd 服务是否成功启动

ps auwx | grep sshd

如果启动成功,会输出一条 sshd 的记录,如果没有输出 sshd 的记录,所以 sshd 服务没有启动成功。

如果没有启动成功,手动执行 ​​/usr/sbin/sshd​​ 命令来启动 sshd 服务

如果启动成功则继续按照步骤三继续操作, 如果启动时报错 ​​sshd: no hostkeys available -- exiting.​​,说明需要生成一些列的密钥啥的

  • 执行如下命令:
sudo ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
sudo ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
chmod 600 /etc/ssh/ssh_host_dsa_key
chmod 600 /etc/ssh/ssh_host_rsa_key
  • 重新启动终端:
ssh localhost
  • 然后再次尝试启动 sshd
/usr/sbin/sshd

步骤三:找到新电脑的 ip 和用户名

在新电脑的终端执行 ​​ifconfig​​ 找到新电脑的 ip 地址。

在新电脑的终端执行 ​​who am i​​ 找到自己的电脑用户名

在老电脑中执行 scp 命令复制文件夹到新电脑

scp -r localdir user@host:$dirpath  # 即 scp -r 本地目录路径 远程主机用户名@ip:存放文件路径

​-r​​ 表示传输的是文件夹,如果只是传输文件,则不需要加此参数

可能的报错

如果执行 scp 命令时提示 ​​ssh: connect to host xx.xx.xx.xx port 22: Connection refusedlost connection​​,说明 sshd 服务没开启成功,检查接受数据的电脑「远程登录开关」是否开启,按照第二部检查 ssd 服务是否启动。

小问题

scp 传输的速度不算快,20G 文件,传输了大约3个小时。算是美中不足吧。

参考:​​mac开启ssh服务​​