使用rsync从tar还原文件

戴夫

我正在为一件嵌入式设备编写软件升级功能。当前,通过获取新的rootfs.tar.gz文件并将其解压缩到根文件系统(覆盖现有文件并添加新文件)来升级根文件系统。但这不会删除不在新软件包中的文件。

因此,现在我将必须rm -rf所有现有文件,然后解压缩新的rootfs tar文件。这似乎是一项艰巨的工作,并且需要花费大量时间,并且也许唯一改变的是一个配置文件。

相反,我希望能够将.tar.gz文件的内容同步到目录。在不经过某种中介的情况下就可以做到这一点吗(意味着,无需将tar解压到临时目录中,然后再执行rsync)?

奥斯汀·海默加恩(Austin Hemmelgarn)

直接地,没有任何方法可以做您想要的。如注释中所述,archivemount可能是一个选项,尽管它有其自身的局限性(其中之一是在构建内核时依赖于启用的特定配置选项)。

但是,想到了两个替代选项:

  1. 使用SquashFS图像而不是压缩的tar文件。这些可以直接由内核安装,并且在许多情况下,它们实际上比等效的压缩tar文件小。然后,您可以仅从挂载的SquashFS映像使用rsync。如果您使用Buildroot实际为此构建根文件系统,则可以选择直接生成此类映像。

  2. 而不是只有一个根分区,而要使用两个。进行初始安装时,请将所有数据写入两个分区,并将引导加载程序设置为仅从其中一个引导。升级系统时,核对另一个分区,在该分区中解压缩您的根归档文件,更新引导加载程序以从中引导,然后重新引导。尽管运行更新所需的时间比您建议的要长一些,但它具有两个相当大的优点:

    • 它使您可以回滚几乎立即破坏某些功能的升级。无需重新安装旧固件,只需更新引导程序以从另一个根分区引导并重新引导。
    • 这使构建系统变得非常困难。由于仅在更新完成后才更新引导加载程序,因此可以保证不会由于更新过程中的功耗而引导至部分根文件系统。
    • 这样就可以在不需要RAID的情况下从存储硬件中的静态数据损坏中恢复(尽管如果这需要成为可靠的设备,则无论如何都应认真考虑RAID)。如果您知道当前版本为“不良”版本,则只需暂时回滚到以前的版本,然后重新安装新版本。
    • 它减少了停机时间。对于您的策略,您必须在脱机状态下使用设备进行几乎所有操作(否则,您将面临在更新过程中发生神秘故障的风险)。使用此方法,可以将更新所需的停机时间减少到重新启动设备所花费的时间。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在本地存储中保存和还原文件对象

来自分类Dev

通过SQL Server 2012备份和还原文件FileTable

来自分类Dev

使用SVN时是否可以还原文件中的特定行?

来自分类Dev

在启用了版本的Amazon S3存储桶上还原文件

来自分类Dev

LibGit2Sharp CheckoutPaths()可以在不指定分支的情况下还原文件

来自分类Dev

从base64编码还原文件名和扩展名

来自分类Dev

我删除了/ etc / php5。如何还原文件夹?

来自分类Dev

使用IntelliJ IDEA从git存储库还原文件

来自分类Dev

Git还原文件在本地分支中删除

来自分类Dev

在Spyder中的主编辑器上方还原文件选项卡

来自分类Dev

git:部分还原文件的先前版本

来自分类Dev

e2image还原文件系统元数据

来自分类Dev

我删除了/ etc / php5。如何还原文件夹?

来自分类Dev

备份和还原文件权限

来自分类Dev

错误备份/还原后,Linux ext4还原文件和目录访问权限

来自分类Dev

从备份还原文件属性但不还原完整文件

来自分类Dev

无法使用extundelete还原文件

来自分类Dev

使用压缩执行rsync后还原文件

来自分类Dev

更改PDF然后删除更改时,还原文件和原始文件的哈希值不同

来自分类Dev

如何防止Windows 7创建系统还原文件和卷影副本?

来自分类Dev

Windows复制后还原文件权限

来自分类Dev

从根目录rm -r还原文件路径中的文件的最佳工具是什么?

来自分类Dev

如何撤消垃圾桶中的还原文件或获取还原文件的列表?

来自分类Dev

Windows 10-“将跳过的还原文件:[file]还原到原始位置”

来自分类Dev

rdiff-backup-备份文件夹小于原始/还原文件时的错误

来自分类Dev

如何还原文件复制/传输状态窗口?

来自分类Dev

使用deja-dup还原文件失败,并显示“无法还原/ home / user /%N”

来自分类Dev

Windows 上的 Git LFS:无法还原文件

来自分类Dev

Git 保持相同提交但还原文件

Related 相关文章

  1. 1

    如何在本地存储中保存和还原文件对象

  2. 2

    通过SQL Server 2012备份和还原文件FileTable

  3. 3

    使用SVN时是否可以还原文件中的特定行?

  4. 4

    在启用了版本的Amazon S3存储桶上还原文件

  5. 5

    LibGit2Sharp CheckoutPaths()可以在不指定分支的情况下还原文件

  6. 6

    从base64编码还原文件名和扩展名

  7. 7

    我删除了/ etc / php5。如何还原文件夹?

  8. 8

    使用IntelliJ IDEA从git存储库还原文件

  9. 9

    Git还原文件在本地分支中删除

  10. 10

    在Spyder中的主编辑器上方还原文件选项卡

  11. 11

    git:部分还原文件的先前版本

  12. 12

    e2image还原文件系统元数据

  13. 13

    我删除了/ etc / php5。如何还原文件夹?

  14. 14

    备份和还原文件权限

  15. 15

    错误备份/还原后,Linux ext4还原文件和目录访问权限

  16. 16

    从备份还原文件属性但不还原完整文件

  17. 17

    无法使用extundelete还原文件

  18. 18

    使用压缩执行rsync后还原文件

  19. 19

    更改PDF然后删除更改时,还原文件和原始文件的哈希值不同

  20. 20

    如何防止Windows 7创建系统还原文件和卷影副本?

  21. 21

    Windows复制后还原文件权限

  22. 22

    从根目录rm -r还原文件路径中的文件的最佳工具是什么?

  23. 23

    如何撤消垃圾桶中的还原文件或获取还原文件的列表?

  24. 24

    Windows 10-“将跳过的还原文件:[file]还原到原始位置”

  25. 25

    rdiff-backup-备份文件夹小于原始/还原文件时的错误

  26. 26

    如何还原文件复制/传输状态窗口?

  27. 27

    使用deja-dup还原文件失败,并显示“无法还原/ home / user /%N”

  28. 28

    Windows 上的 Git LFS:无法还原文件

  29. 29

    Git 保持相同提交但还原文件

热门标签

归档