好的,我有一堆 vCard 文件,大小都在 200 到 300 字节之间。
在尝试将它们存档时,我想知道为什么需要这么长时间并发现有一个文件大小错误。ls 和 stat 都显示大约 8.1 TB 的大小。这太棒了,因为我的 SSD 大小只有 250 GB 左右。
还有一些其他文件的大小错误,但这显然是最大的一个。我已经给了它一个 fsck,但是 (ext4) 文件系统中似乎没有错误。我怎样才能摆脱这个错误的尺寸?
谢谢,沃勒
vCard似乎是一种文本文件格式。这是一件好事,因为文本文件不应包含空值 - 如果操作系统错误地认为该文件是包含很长的空值序列的稀疏文件,这将有所帮助。
您可以使用ls -lks bigfile来查看占用空间是否与表观空间不同。
您可以使用它将dd数据块(例如仅前 500 个字节)提取到新文件中。然后您可以用来hexdump查看该块中是否有可恢复的文本。
如果您发现文件中充满了长序列的空值,您可以尝试使用脚本读取该文件,然后仅将非空数据写入新文件。通过这种方式,您可以通过一些努力构建一个通常大小的有效 vCard 文件。
或者用于strings bigfile从大文件中提取文本
对于 ig 文件,其中许多操作将花费很长时间。你可能想练习一些更小的东西......
这是一个 vCard 文件
$ cat gump.vcard
BEGIN:VCARD
VERSION:2.1
N:Gump;Forrest
FN:Forrest Gump
...
EMAIL;PREF;INTERNET:forrestgump@example.com
REV:20080424T195243Z
END:VCARD
$ file gump.vcard
gump.vcard: vCard visiting card
Run Code Online (Sandbox Code Playgroud)
让我们制作一个损坏的稀疏版本
$ dd of=sparse-file bs=1k seek=5120 count=0
0+0 records in
0+0 records out
0 bytes (0 B) copied, 0 s, Infinity B/s
$ cat gump.vcard sparse-file > sparse-gump.vcard
$ cp --sparse=always sparse-gump.vcard really-sparse-gump.vcard
$ ls -lks *sparse*
0 -rw-r--r-- 1 rgb rgb 5120 Jul 11 18:09 sparse-file
5136 -rw-r--r-- 1 rgb rgb 5121 Jul 11 18:10 sparse-gump.vcard
4 -rw-r--r-- 1 rgb rgb 5121 Jul 11 18:18 really-sparse-gump.vcard
Run Code Online (Sandbox Code Playgroud)
请注意,最后一个文件在磁盘上的大小为 4 个块,但包含 5121 个数据块。
让我们看看里面有什么
$ hexdump really-sparse-gump.vcard | head -n 3
0000000 4542 4947 3a4e 4356 5241 0a44 4556 5352
0000010 4f49 3a4e 2e32 0a31 3a4e 7547 706d 463b
0000020 726f 6572 7473 460a 3a4e 6f46 7272 7365
$ hexdump really-sparse-gump.vcard | tail
0000230 4120 656d 6972 6163 450a 414d 4c49 503b
0000240 4552 3b46 4e49 4554 4e52 5445 663a 726f
0000250 6572 7473 7567 706d 6540 6178 706d 656c
0000260 632e 6d6f 520a 5645 323a 3030 3038 3234
0000270 5434 3931 3235 3334 0a5a 4e45 3a44 4356
0000280 5241 0a44 0000 0000 0000 0000 0000 0000
0000290 0000 0000 0000 0000 0000 0000 0000 0000
*
0500280 0000 0000
0500284
Run Code Online (Sandbox Code Playgroud)
请注意*偏移量 290 和 0500280 之间的线 - 这是所有虚构空值所在的位置。
$ strings really-sparse-gump.vcard > new-gump.vcard
$ ls -lks new-gump.vcard
4 -rw-r--r-- 1 rgb rgb 1 Jul 11 18:30 new-gump.vcard
$ cat new-gump.vcard
BEGIN:VCARD
VERSION:2.1
N:Gump;Forrest
FN:Forrest Gump
...
EMAIL;PREF;INTERNET:forrestgump@example.com
REV:20080424T195243Z
END:VCARD
Run Code Online (Sandbox Code Playgroud)
我们已经从巨大的文件中恢复了正常大小的 vCard。你的旅费可能会改变。
| 归档时间: |
|
| 查看次数: |
4887 次 |
| 最近记录: |