我正在尝试解压 bz2 文件,但收到错误消息“没有剩余空间”

我正在尝试解压 bz2 文件,但收到错误消息“没有剩余空间”
bzip2 -dk a.osm.bz2

bzip2: I/O or other error, bailing out.  Possible reason follows.
bzip2: No space left on device
    Input file = a.osm.bz2, output file = a.osm
bzip2: Deleting output file a.osm, if it exists.

我做了一个df -h

Filesystem                         Size  Used Avail Use% Mounted on
/dev/mapper/ubuntu--vg-ubuntu--lv  439G  115G  302G  28% /
/dev/sda2                          976M  104M  806M  12% /boot
....

该文件大约有 100GB。而且,我肯定应该有大约 350GB 的可用存储空间。我不明白为什么它会导致错误。

$du -sh a.osm.bz2
100G    a.osm.bz2

$ df -h .
Filesystem                         Size  Used Avail Use% Mounted on
/dev/mapper/ubuntu--vg-ubuntu--lv  439G  121G  295G  30% /

答案1

世界这么大;-) 错误是合理的。

https://wiki.openstreetmap.org/wiki/Planet.osm

2021 年 2 月 1 日起,纯 OSM XML 版本接管1370.5 GB从 99.3 GB bzip2 压缩的下载数据文件解压后)

你可以 ...

  • 获得更多磁盘空间
  • 仅下载 osm 文件区域你真的需要
  • 对于小区域,使用 API
  • 使用osmosis从中提取所需的数据planet.osm 自己归档。但.bz2您不应该使用文件,而应该使用pbf版本,这样速度会快得多。

答案2

花一些时间,您就可以从档案文件本身了解档案中文件的大小。

-rw------- 1 criggie criggie 95M Jul 22  2015 home-email.tar.bz2

$ bzcat home-email.tar.bz2 | wc -c 
149606400

因此,95 MB 的存档扩展为149,606,400 字节在一个 tar 文件中,该文件中的信息足以满足您的目的。


在 unix 世界中,压缩可以是与归档不同的过程,这就是为什么我们有gzipbzip2,并且分别有tar用于将事物粘合在一起。

你可以使用 test 和 verbose 标志深入挖掘扩展的 tar 文件

$ bzcat home-email.tar.bz2 | tar -tv
...big list of output....

归档器/压缩器类似zip结合了这两种功能,因此如果您的归档器是源自 PC 世界的ziparc或等等,您就必须检查 LIST 选项的标志 - 例如:lhz

$ unzip -lv /home/criggie/config.zip
Archive:  /home/criggie/config.zip
 Length   Method    Size  Cmpr    Date    Time   CRC-32   Name
--------  ------  ------- ---- ---------- ----- --------  ----
       0  Stored        0   0% 2020-07-28 17:04 00000000  dir/
    1708  Defl:N     1093  36% 2017-02-15 14:15 7c7aee5a  dir/file1.txt
    5354  Defl:N     2860  47% 2020-03-10 15:57 31be4459  dir/file2.txt
--------          -------  ---                            -------
  319022            10362  26%                            20 files

相关内容