I have a flash drive which is FAT32 formatted. I want to put a linux filesystem on the drive inside a file. I know I can do this by creating a file and formatting is with ext3 (or any other file system) and then mounting it with the -o loop option. What I would like is that the above filesystem be compressed. Essentially something like a read-write squashfs.

Is there something that exits that I can use? Additional bonus if the file can be stored as sparse, i.e. the file re-sizes as data is written or deleted.

  • I don't know enough to put this as an answer but looks like squashfs could be what you are looking for. – phunehehe Dec 1 '11 at 2:37

Write a .7z, .tgz, .zip or other compressed archive file.

Bonus: you can read it anywhere.

Downside: it can be slow if you have a lot of files.

Use avfs to access files inside the archive transparently.

mount /dev/my_flash_drive /media/flash0
rsync -au mydata/foo/ ~/.avfs/media/flash0/archive.tgz\#/foo/
umount /media/flash0
  • ooh, that's very nice. i'm going to be using that. – ixtmixilix Dec 1 '11 at 11:08

BTRFS has a compression mode built-in, but with the correct mount option. And the file must be at the final size. As BTRFS can resize the partition on-the-fly it could be possible to hack something for increasing the file, but I never tried and I won't try it.

But the best way would be to buy a bigger flash drive than hacking around with compression.

  • Thanks a lot. Part of the problem is that I am limited by the 2GB file size of FAT32. Maybe its time to put NTFS on the flash drive. – Doc Dec 1 '11 at 3:46
  • The file must be the final size but can be sparse. – Clément Jun 1 at 22:43

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.