整个系统的备份和恢复

整个系统的备份和恢复

我目前正在使用以下命令将我的 Raspberry Pi 3 备份到本地 NAS:

sudo dd if=/dev/mmcblk0 bs=1M | gzip > /mnt/MyCloud/"$(date +%FT%T)".gz

这应该每天运行,使用 cron 作业。

  • 如果驱动器坏了,这足以恢复吗?
  • 有没有更好/更快的方法?
  • 如果我想恢复整个系统,我该怎么做?驱动器已压缩,因此我dd if=my-backup.gz of=/dev/mmcblk0认为我不能

答案1

  1. 这对于恢复来说已经足够了(实际上,不建议在实时系统上执行此操作,但如果您不使用经常更改的文件(例如数据库),那么系统可以确定如何在恢复时恢复自身。如果您没有数据库,那么sync;sync;sync在启动整个系统备份之前使用以确保文件的缓存已闪存到驱动器)
  2. 请参阅下文以获得更好的解决方案
  3. 只需使用gunzip -c /path/to/your.image.gz | dd of=/dev/sdX

在我看来,这是对备份驱动器空间的浪费,因为你要多次克隆相同的未更改内容。使用tar增量模式,它将仅备份先前内容之间的更改。

增量备份的简单示例tar

#!/bin/sh

TAR='/bin/tar'
DATE='/bin/date'
SrcDir='/'
BkpDir='/mnt/MyCloud'
f=$($DATE '+%Y-%m-%dT%H-%M-%S')
snar="${BkpDir}/snar.diff" # If you need full backup then remove 
                           # ${snar} file before doing backup

[ -f "${snar}" ] && level=1 || level=0

$TAR -czf "${BkpDir}/${f}_dump.level.${level}.tgz"   \
    --listed-incremental=${snar}    \
    --no-check-device               \
    --totals                        \
    --level=${level}                \
    --directory=${SrcDir}           \
    --exclude=tmp/*                 \
    --exclude=media/*               \
    --exclude=mnt/*                 \
    --exclude=proc/*                \
    --exclude=sys/*                 \
    --exclude=dev/*                 \
    --exclude=run/*                 \
    --exclude=var/tmp/*             \
    --exclude=var/run/*             \
    --exclude=var/lock/*            \
    --exclude=var/cache/locate/*    \
    --exclude=var/dcc/dccifd                \
    --exclude=var/lib/amavis/amavisd.sock   \
    --exclude=var/lib/php5/sess_*           \
    --exclude=var/spool/postfix/dev/*       \
    --exclude=var/spool/postfix/pid/*       \
    --exclude=var/spool/postfix/private/*   \
    --exclude=var/spool/postfix/public/*    \
    --exclude=backup                        \
    --exclude=${BkpDir}                     \
    .
    exit $?

答案2

也许我在这里太简单了,但在查看了用于安排备份等的 DD 和 crontab 的选项后,我决定采用不同的方法,部分原因是我更习惯 Windows 系统。

  1. 关闭 RPi。
  2. 移除 SD 卡。
  3. 转到 Windows PC(Linux 也可以,但我想使用 DD)。
  4. 使用 Win32DiskImager将内容归档。

我每隔几个月才这样做一次,但是除了系统更新之外,SD卡上几乎没有什么变化。 Win32 磁盘映像器下载@sourceforge

这将提供完整的系统备份。如上所述,我认为除了占用空间之外,对整个驱动器进行多份备份几乎没有意义。我的方法提供了完整备份,而且我的其他文件(例如 dlna 音乐和 webserve 文件夹)无论如何都不存储在 SD 卡上,而是存储在 USB 驱动器上。我的方法很简单,但它有效。否则,tar 增量备份方法看起来非常好。

相关内容