如何备份我的整个系统?

Wil*_*ill 128 backup

如果我想备份我的整个操作系统(包括但不只是我的主目录),我该怎么做?

是否像备份所有内容一样简单/,然后当我遇到崩溃时,只需将文件复制回来?
这会涵盖 grub,当系统无法运行时,我该如何实际操作?

evg*_*eny 110

档案

请参阅此操作方法:http : //ubuntuforums.org/showthread.php? t= 35087

简单来说,备份命令是:sudo tar czf /backup.tar.gz --exclude=/backup.tar.gz --exclude=/dev --exclude=/mnt --exclude=/proc --exclude=/sys --exclude=/tmp --exclude=/lost+found /--exclude=如果需要,添加更多参数。

它将在 中创建所有文件的存档/backup.tar.gz,然后您可以将其复制到另一台计算机/驱动器并在安装过程中恢复您的文件。您可以从 LiveCD 执行此操作,方法是在/media或下安装“坏”系统/mnt并运行tar xf /path/to/drive/with/backup.tar.gz -C /mnt(替代“坏”系统的实际路径)。

格鲁布

这不会涵盖 GRUB,但是您可以按照此处的指南轻松地重新安装它。您只需要执行步骤三和四

  • `tar -cvpzf /backup.tar.gz --exclude=/backup.tar.gz --one-file-system /` 将执行您想要的操作,而无需添加所有其他 `--exclude` 目录 (3认同)
  • tar 文件通常有多大?例如,我在“/”中有 90GB 的数据。但是由于空间不足,备份过程(制作backup.tar.gz)停止了..有没有办法在外部驱动器中创建backup.tar.gz文件? (2认同)
  • @SDsolar:因为它是一个_虚拟文件系统_,就像`/dev`和`/proc`:https://askubuntu.com/a/720473/11015 (2认同)
  • @ArkyaChatterjee:或者当然......只需安装您的外部驱动器并将“/backup.tar.gz”更改为您的安装点,例如“/media/backup//backup.tar.gz” (2认同)
  • OP 明确表示“包括(...)我的主目录”,但您排除了所有用户的主目录(--exclude=/home)。我在这里错过了什么吗? (2认同)

mre*_*req 24

没有人注意到clonezilla。它可以为您的硬盘制作完整的映像,因此它绝对可以备份所有内容。就像刻录 ISO 或创建可引导闪存驱动器一样简单。

实际备份需要一段时间,但最可靠。


New*_*wbi 18

将您的系统克隆到另一个系统。或者做一个备份。在终端类型中:

dpkg --get-selections | grep -v deinstall > ubuntu-files
Run Code Online (Sandbox Code Playgroud)

此命令创建系统中所有已安装软件包的文件列表(并将其存储在当前工作目录中)。在硬盘、电子邮件等中备份此文件...(此文件非常小)。

在新安装的 ubuntu 系统中运行:

sudo dpkg --set-selections <./ubuntu-files (will set it up and)

apt-get -y update
apt-get dselect-upgrade
Run Code Online (Sandbox Code Playgroud)

这将仅安装您apt-get在旧系统中安装(使用)的那些软件包。

                                    (OR)
Run Code Online (Sandbox Code Playgroud)

您可以使用以下方法备份所有.deb软件包/var/cache/apt/archives/并手动安装它们:

dpkg -i *.deb
Run Code Online (Sandbox Code Playgroud)

之后运行更新周期。


afr*_*ish 14

这是我与 SquashFS 一起使用的解决方案。它与之前提出的 TAR.GZ 解决方案非常相似,但具有一些主要优点。

SquashFS 是一种压缩文件系统,它完全存储在一个文件中。该文件可以挂载到现有系统并以通常的方式访问,就像任何其他分区一样。与 TAR.GZ 的不同之处在于 SquashFS 是一个成熟的文件系统,可以随机访问文件,而 TAR 只是一个大的连接文件。

这意味着,如果您想挂载整个文件系统的一些大型备份,对于 TAR.GZ 将需要 5 个小时(根据我的经验),而对于 SquashFS,它只需要几分钟/秒。压缩/备份操作也是如此,SquashFS 快很多倍。

更新 2017-01-31:看来您不仅可以挂载 squashfs 文件,还可以使用熟悉的应用程序(如 Linux 上的 File Roller 和 Windows 上的 7-Zip 等)将其作为普通存档打开。

所以这是我用来备份根文件夹的命令:

sudo mksquashfs / /path/to/backup/hdd/root-backup.sqsh -e home media dev run mnt proc sys tmp
Run Code Online (Sandbox Code Playgroud)

其中“-e”开关排除了要排除的文件夹(例如我的示例中的虚拟和外部 Linux 文件夹)。

备份完成后,我现在可以挂载它:

sudo mkdir /mnt/root_backup
sudo mount /path/to/backup/hdd/root-backup.sqsh /mnt/root_backup -t squashfs -o loop
Run Code Online (Sandbox Code Playgroud)

现在只需等待几分钟(取决于存档的大小)并享受 /mnt/root_backup 文件夹中的所有文件。

对 /home/myname 文件夹也可以这样做,例如

sudo mksquashfs /home/myname /path/to/backup/hdd/home-backup.sqsh -e Dropbox GoogleDrive
Run Code Online (Sandbox Code Playgroud)

我在这里排除了 Dropbox 和 GoogleDrive 以避免将来出现任何潜在问题,以防我从备份中恢复这些文件夹并且它们与云中的实际文件混淆。

http://tldp.org/HOWTO/SquashFS-HOWTO/creatingandusing.html查看更多信息

  • 很好的答案。我用它创建了自己的脚本,该脚本位于通过 NFS 连接的 NAS 驱动器上。下面单独回答,因为它有代码。 (3认同)

dv3*_*0ea 8

您可以使用Remastersys创建可启动的 Live CD/DVD 映像。这将像普通的 Ubuntu CD 一样安装。

要安装 Remastersys,您首先需要添加一个存储库:

deb http://www.geekconnection.org/remastersys/repository karmic/
Run Code Online (Sandbox Code Playgroud)

然后您可以像往常一样从软件中心安装它。

安装后,使用它进行“dist”备份。这意味着用户数据将从 ISO 映像中排除。

remastersys 用户界面

这通常用于创建自定义分发,但对于您想到的备份任务仍然很有用。一个警告是,如果/(减去 中的用户数据/home)的内容占用太多内存,它可能会失败,因为 ISO 文件格式只能容纳约 4GB 的数据。Remastersys 使用一个名为 squashfs 的文件系统来压缩您的数据,因此您应该可以使用高达约 8GB 的​​数据。


fox*_*oxy 6

试试Remastersys
使用该程序,您可以执行系统的 liveCD(与 Ubuntu 安装 iso 文件相同),并能够将其安装在硬盘驱动器上。工作非常简单(如果您知道如何将 iso 刻录到 USB/CD/DVD)。
在我的 11.10 和 11.04 以及较旧的版本上完美运行。

安装:
编辑文件 /etc/apt/sources.list
添加:# Remastersys
deb http://www.geekconnection.org/remastersys/repository karmic/ 并保存
然后在终端中运行:
sudo apt-get update
sudo apt-get install remastersys


d a*_*s y 5

我们还可以使用 rsync 备份系统并排除我们不想要的文件和文件夹。这是执行此操作的以下命令:

#rsync -aAXv --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} /* /path/to/backup/folder
Run Code Online (Sandbox Code Playgroud)

使用这-aAX组选项,文件以存档模式传输,确保符号链接、设备、权限和所有权、修改时间、ACL 和扩展属性得到保留

--exclude选项将导致排除与给定模式匹配的文件。

参考:使用 rsync 进行完整系统备份


小智 5

时移。

TimeShift 通过定期拍摄文件系统的增量快照来保护您的系统。稍后可以恢复这些快照,使您的系统恢复到拍摄快照时的准确状态。

打开终端并运行以下命令

sudo apt-add-repository -y ppa:teejee2008/ppa
sudo apt-get update
sudo apt-get install timeshift
Run Code Online (Sandbox Code Playgroud)

截图

在此输入图像描述

在此输入图像描述


rob*_*smt 5

我把阿夫里什的出色回答变成了自己的剧本。认为它对于那些希望实现自动化的人来说可能很有用。好处是,由于脚本可以驻留在 NAS 上,因此只有在连接时才会执行。

该脚本(可以复制到任何位置 - 最好是 NAS 本身)并将在同一文件夹中构建备份。

备份脚本

make_backups_root_and_home.sh

#!/usr/bin/env bash

set -e

if [ "$EUID" -ne 0 ]
  then echo "Please run as root"
  exit
fi

log="log.txt"
power=$(cat /sys/class/power_supply/AC/online)
start_date=$(date +%Y%m%d_%H%M%S)

if (( $power == 1 )); then
    echo "Starting backup $log at $start_date" >> $log

    # ROOT IMAGE
    root_backup_file=$start_date-root-backup.sqsh
    sudo mksquashfs / $root_backup_file -e home media dev run mnt proc sys tmp nfs

    # ALL HOMES IMAGE
    home_backup_file=$start_date-home-backup.sqsh
    sudo mksquashfs /home $home_backup_file -e Dropbox GoogleDrive

    finish_date=$(date +%Y%m%d_%H%M%S)
    echo "Completed $root_backup_file and $home_backup_file at $finish_date" >> $log
else
    echo "Power is not plugged in... skipped on $start_date" >> $log
fi
Run Code Online (Sandbox Code Playgroud)

别忘了chmod +x make_backups_root_and_home.sh


Linux 定时任务

要启用 cronjob:

sudo su
crontab -e
Run Code Online (Sandbox Code Playgroud)

对于周日凌晨 1 点,请附加:

00 01 * * sun  /nas_path/to/your/make_backups_root_and_home.sh >> /nas_path/to/your/log.txt 2>&1
Run Code Online (Sandbox Code Playgroud)

测试备份!

与所有好的备份一样,应该对它们进行测试!最后,我们可以创建一个脚本来安装最后一个可用的备份(因为它们是按日期排序的)。

mount_last_backup.sh

#!/usr/bin/env bash

sudo mkdir -p /mnt/root_backup
sudo mkdir -p /mnt/root_home

#UMOUNT ANY
sudo umount /mnt/root_backup
sudo umount /mnt/home_backup

last_root=$(ls -Xrt -1 *root-backup* | head -n 1)
last_home=$(ls -Xrt -1 *home-backup* | head -n 1)

sudo mount $last_root /mnt/root_backup -t squashfs -o loop
sudo mount $last_home /mnt/home_backup -t squashfs -o loop
Run Code Online (Sandbox Code Playgroud)