Added README.md
This commit is contained in:
68
README.md
Normal file
68
README.md
Normal file
@@ -0,0 +1,68 @@
|
||||
# Tar FUSE
|
||||
|
||||
This program mounts a tar file system to a directory through FUSE.
|
||||
|
||||
Have you ever wanted to have a nice, convenient view into a tar file without
|
||||
having to unpack it, and without having to learn a ton of obscure tar commands?
|
||||
Have you ever wanted to be able to do `find -type f -name "*.ml"`, or any other
|
||||
search command, only inside a tar file?
|
||||
|
||||
If you've experienced any of the above, this is your lucky day! Just mount the
|
||||
tar file to a directory:
|
||||
|
||||
```sh
|
||||
$ fusetar my-archive.tar mnt/
|
||||
```
|
||||
|
||||
And just like that, everything inside the tarball is available to you as a
|
||||
read-only file system, to search, read or do whatever else.
|
||||
|
||||
An example with the debian rootfs:
|
||||
|
||||
```sh
|
||||
$ wget https://github.com/kbaraniak/debian-rootfs/releases/download/bookworm-270224/debian-amd64-bookworm-rootfs-270224.tar.xz
|
||||
...
|
||||
$ xz -d debian-amd64-bookworm-rootfs-270224.tar.xz
|
||||
$ mkdir -p mnt
|
||||
$ fusetar debian-amd64-bookworm-rootfs-270224.tar mnt/
|
||||
$ ls debian-amd64-bookworm-rootfs-270224.tar.xz
|
||||
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
|
||||
```
|
||||
|
||||
As you can see, the root file system inside the tar archive is transparently presented to you now under your mounted directory!
|
||||
|
||||
Note that it is read-only. Tar is a streaming format, and it is quite awkward to try to make changes/additions to it.
|
||||
|
||||
With that being said, if you absolutely need to write files to the directory (but not to the archive), it is quite easy to make this directory writable - you can simply use overlayfs to overlay an empty directory over this mount. This way, your changes would be preserved inside a separate directory, while unchanged content from the archive remains available:
|
||||
|
||||
```sh
|
||||
$ mkdir -p mnt/ upper/ workdir/ merged/
|
||||
$ ./main.exe debian-amd64-bookworm-rootfs-270224.tar -f mnt &
|
||||
[1] 46526
|
||||
$ sudo mount -t overlay overlay -olowerdir=./mnt,upperdir=./upper,workdir=./workdir ./merged
|
||||
$ echo "hi" > merged/hello-world.txt
|
||||
$ ls -la merged
|
||||
total 5
|
||||
drwxr-xr-x 1 haxala1r users 30 Nov 27 17:37 .
|
||||
drwxr-xr-x 1 haxala1r users 362 Nov 27 17:36 ..
|
||||
lrwxrwxrwx 1 root root 0 Jul 2 2023 bin -> usr/bin
|
||||
drwxr-xr-x 1 root root 0 Jul 2 2023 boot
|
||||
drwxr-xr-x 1 root root 0 Feb 27 2024 dev
|
||||
drwxr-xr-x 1 root root 0 Feb 27 2024 etc
|
||||
-rw-r--r-- 1 haxala1r users 3 Nov 27 17:37 hello-world.txt
|
||||
drwxr-xr-x 1 root root 0 Jul 2 2023 home
|
||||
lrwxrwxrwx 1 root root 0 Jul 2 2023 lib -> usr/lib
|
||||
lrwxrwxrwx 1 root root 0 Jul 2 2023 lib64 -> usr/lib64
|
||||
drwxr-xr-x 1 root root 0 Jul 2 2023 media
|
||||
drwxr-xr-x 1 root root 0 Jul 2 2023 mnt
|
||||
drwxr-xr-x 1 root root 0 Jul 2 2023 opt
|
||||
drwxr-xr-x 1 root root 0 Jul 2 2023 proc
|
||||
drwxr-xr-x 1 root root 0 Feb 27 2024 root
|
||||
drwxr-xr-x 1 root root 0 Jul 2 2023 run
|
||||
lrwxrwxrwx 1 root root 0 Jul 2 2023 sbin -> usr/sbin
|
||||
drwxr-xr-x 1 root root 0 Jul 2 2023 srv
|
||||
dr-xr-xr-x 1 root root 0 Feb 27 2024 sys
|
||||
drwxr-xr-x 1 root root 0 Jul 2 2023 tmp
|
||||
drwxr-xr-x 1 root root 0 Jul 2 2023 usr
|
||||
drwxr-xr-x 1 root root 0 Feb 27 2024 var
|
||||
```
|
||||
Reference in New Issue
Block a user