替换单个文件后损坏TAR存档:跳到下一个标题

时间:2017-09-08 12:47:14

标签: file tar

我已经使用Android系统分区的TWRP进行了备份。它包含一个我想用自己替换的启动视频。

主要思想是从存档中删除start.mp4,解压缩文件夹,复制该文件夹中的新start.mp4,然后更新存档的目录。但在那之后,存档似乎已经腐败了。

以下是我所做的更详细的描述:

列出原始文件的内容

+----------------------------+                    +------------------------------+
|             TOYS           |                    |           TOY_SERIES         |
+-----+----------------------+                    +---------+--------------------+
| PK  |  ID_TOY              |         +----------+ PK, FK1 |  ID_S              +--------+
|     |                      |         |          +------------------------------+        |
| FK1 |  ID_S                +---------+          |         |  ...               |        |
+----------------------------+                    |         |                    |        |
|     |  ...                 |                    |         |                    |        |
|     |                      |                    |         |                    |        |
+-----+----------------------+                    +---------+--------------------+        |
                                                                                          |
                                                                                          |
                                                                                          |
                                                                                          |
                                                  +------------------------------+        |
                                                  |         BR_SER_MEAS          |        |
                                                  +---------+--------------------+        |
                                                  | PK, FK1 |  ID_S              +--------+
                                                  |         |                    |
                                                  | PK, FK2 |  ID_M              +--------+
                                                  |         |                    |        |
                                                  | PK      |  ID_SEQ            |        |
                                                  |         |                    |        |
                                                  +---------+--------------------+        |
                                                                                          |
                                                                                          |
                                                  +------------------------------+        |
                                                  |        MEASURE_STEPS         |        |
                                                  +------------------------------+        |
                                                  | PK          ID_M             +--------+
                                                  +------------------------------+
                                                  |             PARAM_01         |
                                                  |             ...              |
                                                  |             PARAM_10         |
                                                  |                              |
                                                  |                              |
                                                  +------------------------------+

您可以看到原始的start.mp4,其大小约为950 KBy。

删除档案中的旧start.mp4

$ tar -tvf system.ext4.tar
> ...
> -rw-r--r-- root/root      1822 2014-08-22 11:22 /system/media/silence.wav
> -rw-r--r-- root/root    970069 2016-11-29 12:19 /system/media/start.mp4
> drwxr-xr-x root/root         0 2016-11-29 13:58 /system/preload/
> ...

确保文件已删除

$ tar --delete --file=system.ext4.tar /system/media/start.mp4

提取/系统/媒体目录

$ tar -tvf system.ext4.tar
> ...
> -rw-r--r-- root/root    619252 2008-08-01 14:00 /system/media/poweroff_land.mp4
> -rw-r--r-- root/root      1822 2014-08-22 11:22 /system/media/silence.wav
> drwxr-xr-x root/root         0 2016-11-29 13:58 /system/preload/
> ...

将新的start.mp4复制到/ system / media

$ tar -xvf system.ext4.tar /system/media
> tar: Removing leading `/' from member names
> /system/media/
> /system/media/audio/
> ...

更新/ system / media目录

$ cp start.mp4 system/media/

列出更新档案的文件

$ tar --update --verbose --file=system.ext4.tar system/media
> tar: Removing leading `/' from member names
> system/media/start.mp4

正如您所看到的,有一个start.mp4但是与原始存档中的大小相同(新的存档大小约为50 KB),显然发生了错误。

您知道如何更换start.mp4吗?

1 个答案:

答案 0 :(得分:0)

我有一个类似的问题并通过指定一个块大小(例如-b 64)来解决它,如https://web.archive.org/web/20171016165801/http://www.digitesters.com/add-file-to-existing-tar-archive/所述

就我而言,我在Mac OSX中创建一个tar文件,然后在Centos Linux上的tar中添加新文件。第一个文件添加正常,但第二个文件出现Skipping to next header错误。在OSX中创建tar创建-b 64似乎解决了这个问题。