这两天由于电脑进水了,所以申请换了一台 mac 电脑,所以想把老电脑的数据拷贝到新电脑,折腾了半天,最后还是发现 scp 命令最好用。
使用 「scp 命令方式」之前尝试的其他方法
1、隔空投送
刚开始使用那个隔空投送功能,但是发现不知道啥原因,只能传输几kb的文件,超过这个大小的文件都需要登录 ICound 账户,但是咱没有这个啊,没版本,放弃这个方法了。
PS: 隔空投送功能以前也用过,但是以前没遇到过这个问题,不管多大的文件都能随便传,不知道这次是不是老电脑系统版本问题导致有这个限制。
2、数据线数据传输
后来想用数据线直接连接两个电脑。这个方式遇到的问题也比较多:
刚开始是公司的电脑,端口被禁用了,不让使用数据线/USB导出数据,所以还申请了一个白名单;
后来申请完白名单发现需要等半小时才能生效,那就等吧,咱有啥办法;
等了 40 分钟后,用数据线把新老电脑一连接,发现在新电脑提示老电脑磁盘无法识别,这个方式又败北了。
提示:
通过数据线来数据传输,需要让老电脑进入USB 模式,进入的方式是关机,然后点点开按钮,随后长按按键「T」,直到屏幕出现 USB 的图标。
3、迁移助理
再后来想用迁移助理,发现迁移助理有两种模式
-
模式一:直接用老电脑的账户覆盖新电脑的账户,把数据完全复制过来;这显然不是我想要的,新电脑我已经装好了开发环境,如果被覆盖了,万一出现某个工具不能用,不是又得重新装一遍开发环境
-
模式二:新老电脑的账户同时存在,但是因为我的两个电脑用户名一样,需要给新电脑换用户名,我开发环境里有不少环境变量里都写了用户名了,这突然让我改,这不是想让我重装环境吗
于是迁移助理也败北了。
差点放弃了,后来想到了使用 scp 命令配合局域网来数据传输。下面介绍一下怎么通过 scp 命令在两台 Mac 中传输数据
scp 方式传输数据操作步骤
步骤一:打开新电脑的「远程登录开关」
设置中搜索「共享」,打开「远程登录开关」
不同版本的 Mac 可能界面略微有些不一样,可能有些 Mac 「共享」功能界面是这样的
步骤二:检查远程登录开关打开后 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服务