系统备份

📂 best365从哪能进去 ⏳ 2026-02-14 15:11:55 👽 admin 👁️ 2330 💾 887
系统备份

相关文章

同步和备份程序

系统维护#备份

数据静止加密#磁盘加密场景下的备份

磁盘克隆

将安装迁移到新硬件

文件恢复

系统备份是备份操作系统、文件以及系统特定有用/必需数据的过程。[它]主要确保不仅保存系统中的用户数据,还保存系统的状态或运行状况。这有助于将系统恢复到上次保存的状态以及所有选定的备份数据。[1][死链接 2025-11-17—HTTP 404]

一种常见且通常有效的方法是遵循 3-2-1 策略

保留数据的三个副本,

使用两种不同的存储介质,

将一个副本异地存储。

使用 Btrfs 快照

请参阅 Btrfs#快照、#快照和 /boot 分区,以及 Snapper。

使用 LVM 快照

请参阅 LVM#快照、使用 LVM 创建根文件系统快照,以及 #快照和 /boot 分区。

使用 rsync

请参阅 rsync#作为备份工具。

使用 tar

请参阅 使用 tar 进行全系统备份。

使用 SquashFS

请参阅 使用 SquashFS 进行全系统备份。

注意 SquashFS 不支持 ACL。

可引导备份

在文件系统损坏或更新破坏系统的情况下,拥有可引导的备份会很有用。备份还可以用作更新的测试平台,启用测试仓库等。如果您将系统转移到另一个分区或驱动器并希望从中引导,过程就像更新备份的/etc/fstab和引导加载程序的配置文件一样简单。

本节假定您已将系统备份到另一个驱动器或分区,您当前的引导加载程序工作正常,并且您也希望从备份引导。

更新 fstab

无需重新启动,编辑备份的 fstab 文件,注释掉或删除任何现有条目。为包含备份的分区添加一个条目,如下例所示:

/dev/sdaX / ext4 defaults 0 1

请记住使用正确的设备名称和文件系统类型。

更新引导加载程序的配置文件

对于 Syslinux,您只需复制当前条目,但指向不同的驱动器或分区。

提示 您也可以在引导时临时编辑菜单,而不是编辑syslinux.cfg。当菜单显示时,按Tab键并更改相关条目。分区从一开始计数,驱动器从零开始计数。

对于 GRUB,建议您 自动重新生成主配置文件。如果您想将所有 GRUB 文件全新安装到/boot以外的位置,例如/mnt/newroot/boot,请使用--boot-directory标志。

还要验证/boot/grub/grub.cfg中的新菜单项。确保 UUID 与新分区匹配,否则仍可能引导旧系统。使用 lsblk 查找分区的 UUID

$ lsblk -no NAME,UUID /dev/sdXY

其中/dev/sdXY是所需分区(例如/dev/sdb3)。要列出 GRUB 认为可以引导的分区的 UUID,请使用grep

# grep UUID= /boot/grub/grub.cfg

首次引导

重新启动计算机并在引导加载程序中选择正确的条目。这将首次加载系统。所有外围设备都应被检测到,并且/目录中的空文件夹将被填充。

现在您可以重新编辑/etc/fstab以添加先前删除的分区和挂载点。

快照和 /boot 分区

如果您的 文件系统支持快照(例如 LVM 或 Btrfs),这些快照很可能不包括/boot分区或 ESP。

您可以使用 pacman hook 在内核更新时将引导分区自动复制到您的root分区(确保 hook 文件属于 root)

/etc/pacman.d/hooks/55-bootbackup_pre.hook

[Trigger]

Operation = Upgrade

Operation = Install

Operation = Remove

Type = Path

Target = usr/lib/modules/*/vmlinuz

[Action]

Depends = rsync

Description = Backing up pre /boot...

When = PreTransaction

Exec = /usr/bin/bash -c 'rsync -a --mkpath --delete /boot/ "/.bootbackup/$(date +%Y_%m_%d_%H.%M.%S)_pre"/'

/etc/pacman.d/hooks/95-bootbackup_post.hook

[Trigger]

Operation = Upgrade

Operation = Install

Operation = Remove

Type = Path

Target = usr/lib/modules/*/vmlinuz

[Action]

Depends = rsync

Description = Backing up post /boot...

When = PostTransaction

Exec = /usr/bin/bash -c 'rsync -a --mkpath --delete /boot/ "/.bootbackup/$(date +%Y_%m_%d_%H.%M.%S)_post"/'

自动化

仅手动创建的备份在需要时很少是最新的。因此,建议设置一个自动化流程以确保备份过程定期执行。最常见的解决方案由 systemd/Timers 和 Cron 提供。

对于需要对所有文件进行读取访问的本地系统范围备份,以下 systemd 定时器和服务单元可用作自动化备份流程的模板。

要使用timer单元,请像启用和启动其他单元一样启用并启动它。

/etc/systemd/system/backup.timer

[Unit]

Description=Timer for backups

[Timer]

OnCalendar=weekly

Persistent=true

Unit=backup.service

[Install]

WantedBy=timers.target

以下示例配置为使用最少的必需权限运行,同时阻止普通用户进行修改以提高安全性。

请注意,此示例将在备份运行时启动时阻止关机过程。这确保了备份不会中断,但如果需要保存大量新文件,可能会导致关机/重启延迟。

/etc/systemd/system/backup.service

[Unit]

Description=Backup system

[Service]

Type=simple

User=backupuser

AmbientCapabilities=CAP_DAC_READ_SEARCH

CapabilityBoundingSet=CAP_DAC_READ_SEARCH

DevicePolicy=closed

LockPersonality=yes

MemoryDenyWriteExecute=yes

NoNewPrivileges=yes

PrivateDevices=yes

PrivateTmp=yes

ProtectClock=yes

ProtectControlGroups=yes

ProtectHome=read-only

ProtectHostname=yes

ProtectKernelLogs=yes

ProtectKernelModules=yes

ProtectKernelTunables=yes

ProtectProc=invisible

ProtectSystem=full

RemoveIPC=yes

RestrictAddressFamilies=AF_UNIX

RestrictNamespaces=yes

RestrictRealtime=yes

RestrictSUIDSGID=yes

SystemCallFilter=@system-service

UMask=7007

ExecStart=/usr/local/bin/backup.sh

ExecStop=bash -c 'if [ -n "$MAINPID" ]; then tail --pid="$MAINPID" -f /dev/null; fi'

CAP_DAC_READ_SEARCH设置了绕过文件系统中文件读取权限检查的能力;因此,文件系统中的所有文件都将可访问,而无需 root 权限。

对于远程备份,请允许使用网络协议

RestrictAddressFamilies=AF_UNIX AF_INET AF_INET6

相关数据包

Java获取系统时间的正确方式

Java获取系统时间的正确方式

📅 01-23 🔗 365bet手机版客户端
影評人監製12 大病毒電影推薦排行榜【2025最新】

影評人監製12 大病毒電影推薦排行榜【2025最新】

📅 10-04 🔗 365bet手机版客户端
‎《乐视视频 就视不一样》App

‎《乐视视频 就视不一样》App

📅 12-01 🔗 best365从哪能进去
玩传奇私服怎么赚人民币——玩家致富之路揭秘
← 流量卡不想用了怎么停 – 流量卡停用全攻略:4步避坑指南+最新资费解析 显卡驱动是什么?为什么重要 →