AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 522138
Accepted
gatorback
gatorback
Asked: 2019-06-01 03:36:30 +0800 CST2019-06-01 03:36:30 +0800 CST 2019-06-01 03:36:30 +0800 CST

复制 SD 卡

  • 772

背景

已为 Raspberry pi 配置了 SD 卡。目标是完全复制 SD 卡(操作系统、应用程序、数据),以便副本在 rPi 中的功能与原始\主 SD 卡完全相同。

更新:假设:

  • 复制将在配置有类似 UNIX 操作系统的笔记本电脑上执行
  • 不应从 rPi 执行复制
  • 目标 SD 卡的品牌/型号相同
  • 源 SD 卡使用不同的文件系统进行分区:

在此处输入图像描述

问题

哪些 UNIX 克隆选项适用于带有 SD 卡插槽和 USB SD 卡读卡器/写卡器的 Ubuntu HP 笔记本电脑。

USB SD卡RW是读卡器还是写卡器有区别吗?

一个目标(约束)是避免购买额外的硬件。

解决方案观察

date; sudo sh -c 'cat sdcard.image >/dev/mmcblk0'; date

2019 年 6 月 3 日星期一 17:53:18 EDT [sudo] 用户密码:2019 年 6 月 3 日星期一 23:42:17 EDT

date; sudo sh -c 'pv sdcard.image >/dev/mmcblk0'; date

2019 年 6 月 4 日星期二 00:33:50 EDT [sudo] 用户密码:119GiB 6:06:12 [5.56MiB/s] [=================== ============>] 100%
2019 年 6 月 4 日星期二 06:43:05 EDT

对闪存 SD 卡的 gParted 分析显示相同的分区:

在此处输入图像描述

macOS\OSX

要查找 SD 卡的位置:

diskutil list

写入时请务必卸载 SD 卡:

sudo diskutil unmount /dev/disk#

其中 # 是 1,2,3...

storage sd-card
  • 2 2 个回答
  • 3682 Views

2 个回答

  • Voted
  1. Philip Couling
    2019-06-01T03:50:31+08:002019-06-01T03:50:31+08:00

    如果您只是想将一张 SD 卡从一张卡复制到另一张卡,那么您可以在命令行上使用dd进行操作。

    您不应该从您自己的操作系统中的树莓派执行此操作。这是因为操作系统可能会在复制和损坏副本时写入 SD 卡。

    要复制 SD 卡,请将两者都插入您的两个读卡器(无论它们是否是 USB 都无关紧要)。然后检查/dev. 卡片应显示为/dev/sd*。例如/dev/sdb。 请小心,因为您的内部硬盘驱动器可能已经打开 /dev/sda。

    确保没有安装任何 SD 卡,在命令提示符下键入以下内容,通读输出:

    mount | grep /dev/sd
    

    还要检查输出,以便您知道哪个卡具有哪个文件名(作为根):

    sudo blkid
    

    要实际复制(例如从 /dev/sdb 到 /dev/sdc)类型(以 root 身份):

    dd if=/dev/sdb of=/dev/sdc bs=4096 status=progress
    
    • 7
  2. Best Answer
    Gilles 'SO- stop being evil'
    2019-06-03T14:26:35+08:002019-06-03T14:26:35+08:00

    Unix 系统通过设备文件使存储设备可用。设备文件在许多方面表现得像普通文件。特别是,要制作存储设备的精确副本,只需将源设备的内容复制到目标设备即可。

    首先需要确定源设备文件和目标设备文件。该名称取决于您的 Unix 变体及其配置方式,但实际上设备文件始终位于该/dev目录下。如果你安装了 SD 卡,你可以找到设备文件是什么

    df /media/sdcard1/some/file/on/the/sdcard
    

    设备文件位于第一列。其他工具可以提供相同的信息,例如插入 SD 卡时的内核日志消息,或lsblkLinux 上的命令。

    卡上可能有分区。如果是这样,请复制整个卡,即使只有一个分区,因为某些启动时间信息可能位于分区之外。例如,如果在 Linux 上df显示,请复制而不仅仅是./dev/sdb1/dev/sdb/dev/sdb1

    如果您将 SD 卡拔出并重新插入,它通常会具有与以前相同的设备文件名,但这不能保证。

    在复制之前,请确保:

    • 源设备未安装或仅以只读方式安装。
    • 目标设备根本没有安装。
    • 目标设备至少与源设备一样大。在 Linux 上,lsblk显示设备大小。
    • 您拥有正确的目标设备。请注意,下面的命令将覆盖其内容而不要求确认!

    假设您已经确定源设备是/dev/sdb并且目标设备是/dev/sdc。要复制内容,请以 root 身份运行以下命令:

    cat /dev/sdb >/dev/sdc
    

    如果您使用 sudo,重定向>需要以 root 身份发生,因此您需要编写类似

    sudo sh -c 'cat /dev/sdb >/dev/sdc'
    

    或者,为确保您不会意外覆盖错误的设备,您可以分两步进行:

    1. 授予用户(gatorback在我的示例中)从源设备读取(dev/sdb在我的示例中)和写入源设备(/dev/sdc在我的示例中)的权限。
      sudo setfacl -m user:gatorback:r /dev/sdb
      sudo setfacl -m user:gatorback:w /dev/sdc
      
    2. 在没有 sudo 的情况下执行复制。
      cat /dev/sdb >/dev/sdc
      

    您可以将磁盘映像复制到文件,然后将映像文件复制到目标设备。如果您需要制作多份副本,或者您只有一个 SD 卡读卡器,或者降低复制方向错误的风险,这很有用。

    1. sudo cat /dev/sdb >sdcard.image
    2. 拔出源卡,插入目标卡。
    3. 或者,通过挂载图像来验证内容,例如sudo mount -o loop -r sdcard.image /mnt。
    4. sudo sh -c 'cat sdcard.image >/dev/sdb'

    如果您想方便地查看进度信息,请使用pv而不是cat(pv默认情况下很少安装,但它在大多数发行版上都以包的形式提供)。

    • 1

相关问题

  • 我的磁盘已满 - 我是否分区错误?

  • 用另一个 lvm 的空间扩展 lvm

  • Steam 库文件夹必须位于可执行文件系统上

  • ceph-mon 无法在 rasberry pi (raspbian 8.0) 上启动

  • 如何从网络存储中监控/删除下载的电影和音乐?[关闭]

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve