Hi all,
I’m trying to put a command together to download a bz2 archive containing an img file and decompress it immediately, basically without saving it to the filesystem. Can this be done?
This is what I’ve come up with so far, but it’s incomplete: wget -qO- “https://opnsense.com/.../img.bz2” | bzip2 -dv
Background: Trying to install OPNsense on Linode. Their hacky official guide says the best way to install FreeBSD is via the rescue mode. But FreeBSD posts their images as .img, so the filesystem size limitation of 1GB for the rescue image isn’t an issue. But with OPNsense I need to decompress it.
I have a few different options on how to install this but I see it as a good reason to learn more about stdin/out, piping commands, etc.
Thanks in advance.
When I use just the wget aspect of the command, it dumps a bunch of jargon to my terminal, so I think that means I have the “stdout” aspect of that command right.
I think you just need to redirect¹ stdout from bzip2 to a file.
wget -qO- "https://opnsense.com/.../img.bz2" | bzip2 -dv > img
1: https://pubs.opengroup.org/onlinepubs/9799919799/utilities/V3_chap02.html#tag_19_07
deleted by creator
To button this up, I didn’t figure out the one-line solution. I used a script that opnsense publishes to install opnsense on top of freebsd. This is the same script used in the opnsense installer img. Wasn’t hard, but I was laser-focused on figuring out the one-line solution. :(
I feel you need to save the whole file before bzip2 can open it (for decompression). Compression/decompression is done in patterns, so it can’t decompress if it doesn’t get the data to inflate.