Hallo zusammen,
angenommen, ich hab' ein Image von einer Festplatte per gzip komprimiert und will nun damit arbeiten. Das muesste ich dazu entpacken, was im Terrabyte-Bereich ein gewisses Platzproblem darstellt. Falls die Platte weitgehend leer, also genullt war, koennte man sparse files nehmen und wuerde immerhin fuer Serien von Nullbytes keinen Speicherplatz verbrauchen. Man muss aber trotzdem im Vorfeld alle Nutzdaten dekomprimieren und auf die Platte schreiben.
Mein Sachverstand sagt mir: Das sollte intelligenter gehen. Gibt's da was? Ich stell' mir das wie losetup vor, vielleicht auch als FUSE-Zeugs [1] mit genau einer Datei im gemounteten Dateisystem. Das (De-)Komprimieren wird vermutlich nicht im Kernel selbst stattfinden, daher ist FUSE naheliegend.
Gruss Cae
[1] https://code.google.com/p/fusecompress/ macht uebrigens nicht das Gewuenschte, es ist 'n komplettes Dateisystem
"losetup+gzip": transparentes Werkeln am komprimierten Image
"losetup+gzip": transparentes Werkeln am komprimierten Image
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.
—Bruce Schneier
- habakug
- Moderator
- Beiträge: 4314
- Registriert: 23.10.2004 13:08:41
- Lizenz eigener Beiträge: MIT Lizenz
Re: "losetup+gzip": transparentes Werkeln am komprimierten I
Hallo!
Du kannst es mit avfs versuchen, wenn man es erstmal geschnallt hat [1], geht das ganz gut.
Gruss, habakug
[1] http://sam.nipl.net/code/avfs/README
Du kannst es mit avfs versuchen, wenn man es erstmal geschnallt hat [1], geht das ganz gut.
Gruss, habakug
[1] http://sam.nipl.net/code/avfs/README
Zuletzt geändert von habakug am 21.10.2013 00:50:00, insgesamt 1-mal geändert.
Re: "losetup+gzip": transparentes Werkeln am komprimierten I
Tada, tut:Wenn das Dekomprimieren nicht on the fly gehen wuerde, wuerde der hd-Output nicht aus Nullen bestehen. Das ${d#/*} schnippelt den Slash / am Anfang ab, um den Pfad relativ zu $t zu machen, in welches das /-Dateisystem ueber FUSE abgebildet ist.
Vielen Dank.
Gruss Cae
Code: Alles auswählen
$ t=$(mktemp -d)
$ avfsd $t
$ cd $t
$ d=$(mktemp)
$ dd bs=1M count=1 if=/dev/zero | gzip -9 >"$d"
1+0 records in
1+0 records out
1048576 bytes (1.0 MB) copied, 0.024701 s, 42.5 MB/s
$ hd ${d#/*}#ugz
00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00100000
$ rm $d
$ d=
$ cd
$ fusermount -u $t
$ t=
Vielen Dank.
Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.
—Bruce Schneier