为树莓派做系统备份镜像(for Linux & Mac)

20130910134534601-0
准备一个SD卡让你花费了一些时间,不是么?我打赌你肯定不想再做一遍,对吧?好吧,我们来做一个备份!

论坛用户,使用MAC并且是Adafruit的客户phil.drummond根据他自己的发现找到了最好的备份系统镜像的方法。

并且他找到了一个十分快速而简单的方法 – 一个快速创建一个正在运行的树莓派系统的克隆,在小派本身上!

注意:这个脚本只能在occidentalis 0.2以及老一些的Raspbian版本上工作。
这个脚本来自于Pastbin的用户BILLW

点击这里下载BILLW的克隆脚本。

你需要的:

  • USB SD卡读卡器
  • 空白SD卡
  • 启动并且正在运行的树莓派

获取脚本文件

首先,把这个脚本复制到你的小派里。你可以通过以下几种方法做到这一点:

  • 首先,把这个脚本下载到你的电脑上

然后…

  • 使用ssh或者vnc把文件从电脑上传输到小派里

…或者…

  • 把空白SD卡插入USB 读卡器
  • 把读卡器插入电脑
  • 复制脚本到SD卡上
  • 把SD读卡器插到小派上
  • 从SD卡拷贝脚本到小派上

…再或者…

  • 使用小派上的浏览器访问这个网址直接下载脚本文件

运行脚本

1.把SD卡插入USB读卡器,然后把读卡器插入到小派的一个USB口上。
2.在小派上打开一个终端。
3.定位到存储脚本的目录。(如果你把文件放到了小派的桌面上,仅仅需要输入”cd Desktop”)

20140601190758102

在你运行脚本的时候必须指定SD卡的名字。Raspbian和occidentalis会为USB上找到的SD卡分配类似”sda”,”sdb”等的名字。
如果你只插入了一个USB读卡器,那么你的新SD卡的名字将会是”sda”.

如果你不确定sda是不是正确的卡,使用下面的命令列出连接到小派上的卡。

sudo fdisk -l

SD卡插槽上正在运行系统的SD卡应该显示为/dev/mmcblk0。你的空白的SD卡应该显示为/dev/sda1(或者是/dev/sdb1,如果你插入了不止一个USB读卡器到小派上)。

注意你不应该输入”1″ – 如果你看到你的卡显示为”/dev/sda1″,你仍然应该在运行脚本时输入sda(“sda”是卡的名字,而”sda1″是卡的第一个分区的名字)。

现在,你可以开始运行脚本了。

chmod +x rpi-clone.sh
sudo ./rpi_clone sda -f

之前提醒过,第一个参数是SD卡的名字,这里是”sda”。”-f”告诉脚本完整格式化SD卡。

脚本会提示你是否初始化目标SD卡。输入”y”然后按一下回车。

20140601190758292

如果你看到的是一个错误消息,看一下下面的解决办法!
接着,会提示你是否想给你的备份镜像指定一个标签。这不是必须的 – 按一下回车跳过。

20140601190758575

最后,脚本会提示你是否真的要这么做,在它正式开始备份之前。按一下”y”然后回车。

20140601190758461

现在能做的只有等待 – 这将会花费一小会时间。

20140601190758187

当这个过程完成,脚本会提示你是否卸载(unmount)这个新系统卡,按一下”y”,然后就完成啦!

现在你应该关闭小派,把新卡插入到SD卡插槽中,然后重启 – Bingo!一个完全树莓派系统的完全克隆!

遇到了问题?

如果你看到类似下面的错误:

20140601190758565

…这意味着你的SD卡当前被挂载在了系统上。在你操作前你必须卸载它。在图片里,我正准备写入一个在早些时候克隆的SD卡,它有2个分区:/dev/sda1和/dev/sda2,你应该只有一个分区。

不论有几个分区,把每一个挂载的分区使用umount命令进行卸载:

sudo umount /dev/sda1

20140601190758293

这是一篇发布于 10年 前的文章,其中的信息可能已经有所发展或是发生改变,请了解。


4 评论

  1. 貌似所用tf卡大于8G时,无法新建第二个分区(root partition)。会报错: Can’t have a partition outside the disk!
    因为在Sizing partition 2 (root partition) to use all SD card space时,会:
    Value out of range.

    有太多个超级块或扇区数太大的缘故吧。

  2. 我按照上面的方法备份之后,将TF卡插入到树莓派中,没有进入系统,出现了如下字幕:—[ end Kernel panic] – not syncing: No working init found. Try passing init = option to kernel. see Linux documentation/init.txt for guidance. 我不知道怎么找到init.txt文件,所以也不知道怎么解决这个问题,还请多多指教,谢谢

发表评论

你的邮件地址不会公开


*