将已卸载的设备备份到 tar 文件

将已卸载的设备备份到 tar 文件

尽管我的总体目标是在 Amazon Web Services (AWS) 上做一些事情,但我的具体问题与 AWS 无关。

背景

我的目标是使用包装机创建一个 Amazon 系统映像 (AMI),其中多个不同路径安装到不同的文件系统以提高安全性。例如,/tmp应该使用该选项安装到文件系统noexec

事实上,我想要创建一个自动化流程来制作 AMI,这意味着我无法在实例本身中执行重新安装命令,因此我改为使用 Packer亚马逊 chroot 构建器。这意味着我运行一个 EC2 实例,并从该 EC2 实例运行 Packer。然后,Packer 将安装从与“源 AMI”一起使用的 EBS 快照中获取的 EBS 卷。我现在需要对已安装的 EBS 卷执行一些操作。

我的问题

我的第一步是对安装到的块设备进行完整备份/mnt/ebs

根据这部分的精彩演示https://youtu.be/8h_Y-L1Q8xI?t=13m47s,演讲者建议首先卸载设备然后使用tar

他重复这个操作顺序稍后在演示中。我的具体问题是:如果设备一开始就没有安装,如何创建设备内容的 tar 备份?另外,首先卸载它的目的是为了保证它处于一致的状态,在备份期间不会发生进一步的写入,还是其他什么?

umount -l顺便说一句,尽管使用 或 检查繁忙的进程fuser,但我似乎无法在没有该选项的情况下卸载设备,lsof但我将把这些详细信息留给另一个问题。

请注意,我使用的是 Amazon Linux,它与 CentOS 类似,但不使用 systemd。

答案1

不,无法使用 tar 备份未挂载的文件系统。

Tar 正在等待备份文件,但正如您所怀疑的那样,在卸载文件系统后,这些文件将无法 tar 。

请注意,演示者声明:

...首先我们卸载所有东西Packer 刚刚为我们安装...

他没有说明 Packer 安装了什么,但仔细看看脚本的屏幕截图:它排除了各种安装点,例如 /proc 和 /dev。这意味着某物事实上已安装;我假设它是一个假根,带有绑定安装的伪文件系统。

创建基于 tar 的备份的理想方法是将文件系统挂载为只读。目的是在备份过程中保持文件系统的完整性;您不希望在备份过程中进行更改。

您似乎可以拍摄相关 EBS 卷的快照,将其以只读方式挂载到其他位置,然后从那里创建 tar 存档。

相关内容