如何备份已创建的文件?
我可以简单地将SD卡插入Windows(XP或7)PC并将其复制到硬盘驱动器或另一个SD卡吗?
#1 楼
如果要保留所有数据,则可能必须创建一个磁盘映像。此外,Windows无法识别典型的Linux文件系统,因此,当您插入SD卡时,甚至可能看不到文件。创建磁盘映像不仅可以保留文件,还可以保留文件文件系统结构,当您决定刷新新的SD卡时,只需将其插入即可使用。
Linux
在Linux上,您可以使用标准的
dd
工具:dd if=/dev/sdx of=/path/to/image bs=1M
/dev/sdx
是您的SD卡。 Mac
在Mac上,您还可以使用标准
dd
工具,语法略有不同:dd if=/dev/rdiskx of=/path/to/image bs=1m
其中
/dev/rdiskx
是您的SD卡。 (最好使用rdisk作为其原始设备-更快)
要找出在命令提示符下键入
diskutil list
的设备是哪个磁盘,也可能需要扎根为此,请键入sudo -s
并在出现提示时输入密码。刷新SD卡时使用。 您可以使用Win32 Disk Imager,这是用于刷新Foundation SD卡的首选工具。只需输入文件名(要保存的备份映像文件的位置和名称),选择设备(SD卡)并按以下命令即可:
当然,您也可以使用Windows的RawWrite,
dd
或类似工具,其过程非常相似。选项2
如果您不想备份整个系统,但仅限特定文件,建议您通过SFTP连接到Raspberry Pi,然后将文件复制到本地计算机(可以使用WinScp客户端)。如果启用了SSH,则SFTP通常不需要在Raspberry Pi端进行任何特殊配置。
另一个选择是使用rsync将文件复制到远程系统。
您还可以安装特殊的驱动程序,以便Windows可以读取
ext
文件系统(从而可以读取整个SD卡),例如ext2fsd
,但这可能不值得。 >由于图像大小与SD卡相同,因此您可能需要对其进行压缩。只需使用您喜欢的压缩工具即可实现,例如gzip
,7zip,WinZip,WinRar ... 评论
总的来说+1,尽管通过ssh进行rsync可能会更容易。另外,对于源代码(如Mark Booth所述),您绝对应该使用DVCS
– Tobias Kienzler
2012年12月13日在16:54
如果我的SD卡损坏了,该如何将映像安装到新的SD卡上?
–拖鞋
13年2月3日在8:57
没有指向Win32 Disk Imager的链接,没有下载可用。我认为它与sourceforge.net/projects/win32diskimager相同吗?
– Yamikuronue
13年2月14日在1:03
哦,天哪,我无法区分该图片中的“读取”是指“读取图像文件”还是“读取分区并将其写入图像文件” ....与“写入”相同... gui需要进行消毒。类似于“图片->设备”和“设备->图片”(或更好的替代方法)
–奥利维尔·杜拉克(Olivier Dulac)
2013年12月5日18:43
Win32DiskImager似乎只能处理Windows识别的分区。我几乎没有运气来克隆Noobs / Raspbian SD卡。找到了这个免费软件程序:hddguru.com/software/HDD-Raw-Copy-Tool。无论分区方案和内容如何,在Windows中对SD卡进行逐字节克隆(我将其与Win7 64位一起使用)都像是一种魅力。
–techie007
2015年2月3日在16:37
#2 楼
如果您正在运行Linux,则可以使用dd
命令对映像进行完整备份:dd if=/dev/sdx of=/path/to/image
或进行压缩:
dd if=/dev/sdx | gzip > /path/to/image.gz
sdx
是SD卡。要恢复备份,请反向执行以下命令:
dd if=/path/to/image of=/dev/sdx
或压缩后:
gzip -dc /path/to/image.gz | dd of=/dev/sdx
评论
我强烈建议使用gzip-今天我已经备份了一些桌面分区,而20Gb分区已保存在8.9Gb中。
–亚历克斯·张伯伦
2012年7月4日15:48
bzip2应该可以更好地压缩,并且在所有Linux系统上都可用。在较新的Linux系统上,xz的压缩效果更好,它们的解压缩器分别为bunzip2和unxz。
– Arne
13年5月29日在12:10
@Arne我不希望有如此大的不同!尽管如此,这似乎仍远远超出我的担忧。 (顺便说一句,当您回复将近1年的评论时,这很酷,并且您会在2分钟内得到回复:))
–吗?
2014年3月24日10:00
不要犯错(像我刚才那样),将bs = 1M或一些类似的参数排除在外。默认的512字节块大小会破坏复制性能。
–陆even
2014年4月13日在3:57
@Arne我现在尝试使用bzip2,如果从我的Class 4 SD卡备份,也许会比较合适,但是在此Class 10 UHS 1 SanDisk 8GB卡(上周为12美元)上,它使Ivy Bridge容量最大化CPU线程,并将卡的读取速度限制为6MB / s(使用Ctrl + T的dd报告为4.2MB / s)。这不是理想的,因为我可以将此gzip与该卡一起使用,并以更快的速度读取它(dd报告为18MB / s)。当然,如果磁盘的大部分是可用空间,那么在这些空的拉伸期间读取将加快速度。但是,我必须查看生成的文件大小有何不同。
–陆even
2014年4月20日在3:40
#3 楼
在Mac上,您不想使用/dev/diskn
。您应该改用/dev/rdiskn
,其中n是操作系统用来标识SD卡的数字。这样可以大大减少复制所需的时间。因此,对于Mac上的最佳备份过程,我建议执行以下操作:
运行
diskutil list
并查找与您的Raspberry Pi的SD卡相对应的磁盘:$ diskutil list
/dev/disk0
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *500.1 GB disk0
1: EFI 209.7 MB disk0s1
2: Apple_HFS Macintosh HD 499.2 GB disk0s2
3: Apple_Boot Recovery HD 650.0 MB disk0s3
/dev/disk1
#: TYPE NAME SIZE IDENTIFIER
0: FDisk_partition_scheme *7.9 GB disk1
1: Windows_FAT_32 58.7 MB disk1s1
2: Linux 7.9 GB disk1s2
很明显,/dev/disk1
是我的8GB SD卡,Linux分区名称也有点儿线索。 > 但是,与其使用
/dev/disk1
和dd
,不如使用/dev/rdisk1
,就像这样:文件)和if
(输出文件)参数:sudo dd if=/dev/rdisk1 of=/path/to/backup.img bs=1m
或者使用
of
节省大量空间:sudo dd if=/path/to/backup.img of=/dev/rdisk1 bs=1m
然后,将映像复制回SD:
sudo dd if=/dev/rdisk1 bs=1m | gzip > /path/to/backup.gz
有关更多信息,请参见此Wiki页面。
评论
我发现这是最有效的答案,并对此表示投票,谢谢@Alex Coplan。
–博世
16-09-25在10:11
但是,我一直在寻找适用于MacOS的万无一失的GUI工具(就像Windows用户一样),并且没有dd风险,因此我从“两个独木舟”中找到了“ SD Clone”(我是WinClone的用户,因此可以信任它)。它是非常新的-2016-且价格昂贵(100美元,为期2周的试用期),但似乎是针对RasPi的,所以我现在就尝试一下,并在新评论中告知您。
–博世
16-09-25在10:25
返回时,如果出现以下消息,请卸载SD卡:“资源繁忙”
–Paul Spiesberger
17年4月4日在5:55
#4 楼
除了这些块级备份之外,还有两种常见的方法来处理源:将其连续存档(1)或使用版本控制系统(2)。我们将使用命令行(到Raspberry Pi计算机的任何本地终端或SSH连接),对吗?
1。存档
cd ~/projects
tar czvf your-raspberry-project-top-level-dir-v1.0.tgz \
./your-raspberry-project-top-level-dir
scp your-raspberry-project-top-level-dir-v1.0.tgz \
user@backup-host:/home/user/backups/
2。 RCS(例如Git)
cd ~/projects/your-raspberry-project-top-level-dir
make clean # Or clean it manually using rm (rm ./*.o ./*.pyc)
git init # Create new repo here
git add . # Add source files to the staging index
git status # Verify if it's OK
git commit -a -m "Initial import" # Fix application's source changes
git add remote https://github.com/user/your-raspberry-project.git
git push -u origin master # Sends the sources to your github repo
git pull && git push && git status # Now origin/master is your tracking branch
评论
值得一提的是,人们可以在网络上的其他计算机上设置裸仓库,然后将其从Raspberry Pi推送到那里,而不必设置github帐户,ssh密钥等然后推送到那里。
– Mark Booth
2014年4月13日在12:06
这是真正答案的一个好的开始。如果要维护代码,则需要在版本控制下对其进行管理。版本控制可跟踪更改,了解更改历史,管理不同分支(例如稳定版与开发版)并在它们之间合并。但这本身不是备份。但是,只需要备份存储库(例如Git的.git文件夹)。查看Linux / Unix论坛,Wiki,stackexchanges等,以了解在Linux下备份文件夹的方法。注意:我不认为github是备份。而且您不想将所有内容发布到github!
–惠更斯
15年2月28日在20:27
#5 楼
您可以在Linux PC上运行此命令,并留出大量空间:ssh root@raspberrypi gzip -c /dev/mmcblk0 > img.gz
作为前提条件,您需要生成.ssh密钥并将
id_XXX.pub
复制到/root/.ssh/authorized_keys
。文件系统可能存在问题,因为它是实时备份,但是如果您的Raspberry Pi不很忙,通常会没事。
它是像这样在PC上进行压缩可能更快:
ssh root@raspberrypi dd if=/dev/mmcblk0 | gzip -c > img.gz
评论
或使用sudo'ssh pi @ raspberry sudo dd if = / dev / mmcblk0 | gzip -c> raspberry.img.gz'
–cupakob
2012年11月25日14:35
并且作为无密码登录的参考,raspberrypi.stackexchange.com / a / 1687/22603
–保罗
15年1月3日,10:47
我还发现增加块大小很有用,并且可以使用pv检查进度。 ssh root @ raspberry dd if = / dev / mmcblk0 bs = 1M | pv | gzip -c> img.gz
–保罗
15年1月3日,14:08
如果您不想卸载SD卡,那么这是一个很好的答案,它也适用于macOS。这是我使用的命令行:ssh pi @ raspberrypi sudo dd if = / dev / mmcblk0 | xz -9 -e --threads = 4>sd.img.xz。不需要以此方式生成SSH密钥。可以按Ctrl-T查看进度。
–了解OpenGL ES
16 Dec 9'在19:36
为什么gzip比dd命令更可取?
– IgorGanapolsky
17年1月25日在14:19
#6 楼
如果使用Windows,请下载Win32 Disk Imager。创建要用于保存映像的文件路径。 (我使用C:\ RasPi_Bkp)
运行Win32 Disk Imager
浏览到备份文件路径位置,并键入文件名。
单击“读取”
等待。
评论
谢谢-只是工作。 (奇怪的是,当我将SD卡插入主PC时,Windows 7进入了BSOD!幸运的是,它在另一台计算机上正常运行。
–乔恩·埃格顿(Jon Egerton)
2012年7月5日上午10:01
对于像我一样在Win32 Disk Imager上遇到问题的任何人,请尝试Rufus。
–DaveTheMinion
16 Dec 26'0:26
#7 楼
如果您的程序全部在pi用户ID中,则实际上没有理由像建议的那样备份整个文件系统。我要做的就是备份单个ID。我从pi的主目录运行命令:tar -czf pi.tgz *
,该目录创建pi.tgz文件,其中包含其中包含的所有文件和目录(不包括隐藏文件)。然后,我将该文件压缩到另一台linux计算机上,但是您可以通过ftp或通过电子邮件将其发送到某处以进行安全保存……将其保存到另一台计算机上的任何内容。供您备份。
您担心在安装过程中安装的所有其他软件包吗?创建一个脚本,该脚本将在您需要重新创建SD卡并将其保存在pi的主目录中的某个位置时,再次为您执行这些安装。 (我有一个〜/ bin目录用于此类操作)。具有安装所需的所有命令,以使您回到想要的位置。它记录您的更改,并允许您快速构建新的SD卡。它会包含以下形式的命令:开始添加软件包之前,系统也已升级到当前级别。
由于这将在pi.tgz文件中,因此在需要时将具有它。
评论
请注意,对于Raspbmc衍生产品,apt-get升级显然会引起问题。它对我有用,显然这是一个已知问题。
–克里斯蒂安·迪亚科内斯库(Cristian Diaconescu)
13年5月6日在16:11
这也可以远程完成,即:ssh pi@raspberrypi.local“ sudo tar -cvp〜/ *” | xz -9 -e --threads = 4> raspbian.home.tar.xz
–了解OpenGL ES
16 Dec 9'在20:06
#8 楼
我运行Raspbian,并使用dd和cron将SD卡自动备份到外部USB驱动器。这是一个非常简单的解决方案。它每周一在凌晨2点运行一次,并制作SD卡的映像。在备份中间写入存储卡时,它会调用dd,然后在备份完成后再次开始服务。 ://www.stuffaboutcode.com/2012/08/raspberry-pi-auto-backups.html
评论
如果您不能拔下卡,这可能是一个合理的解决方案。但是,放置SD?装有分区的设备听起来不太安全。
–吗?
2014年3月24日在9:58
您可能是对的,但我没有遇到任何问题。
–马丁·奥汉隆(Martin O'Hanlon)
2014年3月24日13:57
#9 楼
对于Debian,您可以使用dd和tar。这将完整复制您的SD卡,并需要外部(至SD卡)存储,可能需要安装USB或网络驱动器。dd if=/dev/sdd of=yourbackupfilenamehere.dd
tar zcvf yourbackupfilenamehere.dd.tar.gz
使用/ dev / sdd是SD卡的位置,而
of
是输出文件名。评论
这样做的局限性是需要在某个地方写入图像(它也足够大以拍摄图像。想必这也意味着通过USB集线器的大量数据io-会花费一段时间吗?
–乔恩·埃格顿(Jon Egerton)
2012年7月5日在10:38
是的,但在以下问题中是必需的:“我想要SD卡的完整图像。”
– Forkrul Assail
2012年7月5日在10:39
为什么要制作dd文件的.tar.gz文件?直接在dd文件上运行gzip或bzip2会更好吗?
–安德斯
2012年7月25日在21:11
/ dev / sdd是什么意思?我列出了/ dev / mmcblk0p1和/ dev / mmcblk0p2 ...
– IgorGanapolsky
17年1月25日在14:20
#10 楼
幸运的是,Raspberry Pi可以创建自己的备份,该备份独立于用于访问Raspberry的主要操作系统(Windows,Linux,Mac)。dd,tar和rsync是在Linux上创建备份的不同工具。所有这些类型的备份都可以由运行中的Pi创建,前提是它在创建备份之前停止了所有繁忙的任务,例如mysql,smb,dlna,owncloud,seafile,apache等。还有一个不同的问题,在这里将详细解释该方法,并在此处解释一种可能的解决方案
#11 楼
如果您的Raspberry Pi已连接到网络,并且需要自动即时备份,则最简单的方法可能是Bittorent Sync-非常容易安装,并且可以在Pi和许多其他平台上平稳稳定地运行。评论
我只想广告同步和备份是两件事
– Pitto
16年7月7日在15:43
#12 楼
不再有可怕的dd,sync,tar,...,对初学者友好的SD卡复印机Raspbian的新版本称为Stretch,它具有一个非常初学者友好的应用程序,称为SD Card Copier。您不需要使用dd等Linux工具。它甚至可以将大卡复制为小卡。
操作方法
从GUI开始在左上角的RPi应用程序菜单图标,转到“附件”,然后单击“ SD卡复印机”。
制作备份SD卡后,可以使用Windows磁盘管理器将卡的映像读取到Windows文件,并将其存储在任何Windows目录中。这样,您只需要一个物理SD卡,即可在Windows PC中存储许多版本的图像。成为您的主卡,并将其锁定在安全的地方。
#13 楼
在搜索创建自定义SD卡的图像时,我发现了此信息。最好的答案是讨论SD卡的成像,但是我一直在寻找缩小文件系统以缩小图像的方法。我最终创建了自己的工具来执行此操作,并在以下位置概述了该过程:https://raspberrypi.stackexchange.com/a/37899/32585#14 楼
这是3个选项:在最新版本的Raspbian中,有一个工具可以将操作系统和文件转换为.img文件,然后可以将其放置到USB或USB电脑
将SD卡插入Windows PC,然后启动Win32 Disk Imager(如果尚未安装,请在此处安装。)
在(1)中,输入图像文件的文件名和位置。在(2)中,选择SD卡的驱动器号。然后按3。这与选项1相同。
将USB闪存盘插入Pi,然后复制所有重要文件。
#15 楼
此android应用会将SD卡读入.img文件,并同时将其压缩:https://play.google.com/store/apps/details?id=com.redrobe.raspicardimager
#16 楼
我创建了一个实用程序来备份树莓派(如果您是Linux)。这也会缩小树莓派的图像,因此您可以将.iso放在较小的SD卡上: 。只需将microSD卡插入Ubuntu,Linux Mint或Debain计算机,然后按照终端中的说明进行操作即可。#17 楼
这个问题有许多出色的答案,尽管可能有些过时了。#18 楼
我一直在Windows上使用usbit。这是我发现的唯一工具,可让您从较大的SD卡交换到较小的SD卡。我所做的只是在选项页面上打勾。忽略大小检查并截断超大图像。这使我可以将OpenELEC和Xbian图像从16 GB的4类SD卡交换为8 GB的10类卡。这比调整分区表的大小等要容易得多。
评论
您是否曾经验证过文件?我的意思是用find -type f -exec md5sum {} \; > filelist.txt?
– Avio
2012年10月5日在22:16
由于磁盘后半部分上存储的数据已删除,因此不能保证此功能有效。此外,分区表已损坏。
–亚历克斯·张伯伦
2012年10月6日,9:22
评论
我的PC同时运行Ubuntu和Windows(XP和7),但是我希望大多数人对Windows答案感兴趣。我将编辑问题以使其清楚。从Raspi同步到您的PC?
对于代码,您可能还需要考虑使用git或hg之类的分布式版本控制软件,这样,您不仅可以在多个位置拥有代码副本,而且还具有有关代码更改方式的完整历史记录。
@MarkBooth如果我们只是考虑以后可以检索代码,我不明白为什么在VCS上需要DVCS。哎呀,因为您使用修订号而不提交哈希来标识特定状态,所以这甚至更加容易。学习像Subversion这样的CVCS并不是很多时间上的投资(我记得……虽然很久很久以前)。是的,当时切换到Git有点令人不安,但我从未回头。
在@StevenLu进行此类讨论时,评论不是一个好地方,我们应该将其带到Raspberry Pi Chat。