使用 rsync 方式升级 os(ubuntu12.04 -> ubuntu18.04),升级期间误按 Ctrl-C。之后再执行 rsync 命令,报错如下:

-bash: /usr/bin/rsync: No such file or directory

其他命令也是一样的报错。

想到使用 busybox, busybox ls 是好用的,busybox rsync 不好用,查看了 busybox 中没有 rsync 命令。

试了使用 busybox sh 进入到 busybox 的 shell,执行 rsync 命令,一样的报错。

也试了使用 nc -l -p 20000 -e sh, 但是对端连过来,依然使用的是本机的命令,还是不 OK 的

查看同步日志,在同步 /lib/systemd 时断开的, 那么 /lib/x86_64-linux-gnu 这个目录还没有同步到。这个目录正好就是库函数的目录,按道理也应该是库的问题导致。就想把这个目录同步过来

发现 nc 不能同步目录(其实 nc 可以写文件,可以通过在两边应用tar和管道,实现传输目录),我就先同步个 glibc,仍然没有把系统修复好。

后来想到可以先把 /lib/x86_64-linux-gnu 压缩,nc 传过去,再解压。这样系统就可以正常执行命令了。

后面测试了下,使用 tar 加 管道的命令如下:

nc -l -p 20000  |tar zxf - -C x86/   # 目标机器
tar zcvf - ./* | nc 目标机器 20000  # 正常的机器