*Edit: I have figured out how to use BTRFS and enable what it calls “transparent file compression”, and I’m going to use that on most of my old storage devices. The only problem I’m having is that I want to use F2FS on my oldest storage device, as BTRFS takes up too much space on the device and I was told by multiple users that F2FS also supports transparent file compression, but I can’t get files to compress and I’m not getting any error messages to try and fix it. Based on what the documentation says, I’m supposed to do something like this:

sudo mkfs.f2fs -f -O extra_attr,inode_checksum,sb_checksum,compression /dev/mmcblk0p1
sudo mount -o compress_algorithm=zstd,compress_extension=* /dev/mmcblk0p1 '/home/j/mountpoint/128mb'
chattr -R +c '/home/j/mountpoint/128mb'

The device will mount like this but files aren’t compressing when added, nor are they compressed if using the last command after they’ve been moved.*

I’m rewriting the old portion for clarification:

In Windows, there’s a file/folder option called “Compress contents to save disk space”. What it does is it compresses the files, as the name suggests, but leaves them accessible as though they aren’t. This doesn’t really have much of a benefit on newer storage devices but on older storage devices, in addition to saving space, it allows files to potentially read faster.

As I have some old storage devices that I want to run games from, I think this will be a great option to have if I could find something similar for Linux. I tried looking online myself but search engines are terrible and I couldn’t find anything though them. So, I decided to post about this here, to see if anyone knows of anything I could try.

  • MonkderVierte@lemmy.zip
    link
    fedilink
    arrow-up
    2
    ·
    5 hours ago

    What do you mean, btrfs “takes too much space”? That’s not a sentence that belongs to file system stuff in any way.
    The disk is the space. You make it usable with a fs, for which you can partition portions of it.

    And also, i’ve had bad experiences with f2fs long-term stability.

  • chilltrek97@kbin.earth
    link
    fedilink
    arrow-up
    1
    ·
    5 hours ago

    “*Edit: I have figured out how to use BTRFS and enable what it calls “transparent file compression”, and I’m going to use that on most of my old storage devices.”

    If the old data is meant to be archived then maybe do not mess with it that way and if you want it compressed use 7zip and other similar programs that are known and well tested. Also they should be stored on HDDs instead of SSDs, longer shelf life. If you have issues on your personal PC that is and lacking context, this question could be more advanced for NAS or servers which generally people do not know much about.

  • tiptoes@sh.itjust.works
    link
    fedilink
    arrow-up
    46
    ·
    19 hours ago

    The equivalent would be either zfs or btrfs compression. Transparent to applications, you don’t have to do anything special other than enable it.

    • vortexal@lemmy.mlOP
      link
      fedilink
      arrow-up
      9
      ·
      19 hours ago

      As I mention in another comment, I’m having a bit of a problem. I tried the smallest device first but it’s too small for btrfs and I can’t figure out how to format devices in zfs. Unless xfs is the same as zfs, the option isn’t available in gparted and mkfs gives an error saying that the zfs file doesn’t exist. If it’s possible to install zfs through apt, “apt search zfs” gives a lot of results for zfs.

        • vortexal@lemmy.mlOP
          link
          fedilink
          arrow-up
          2
          ·
          15 hours ago

          I apparently already have it installed but mkfs still thinks that zfs isn’t available. Am I supposed to use something else?

          • ivn@tarte.nuage-libre.fr
            link
            fedilink
            Français
            arrow-up
            7
            ·
            edit-2
            15 hours ago

            You’ll need to read the documentation to understand its concepts first. You don’t use mkfs but zpool to create a pool then use zfs to create the fs on it. ZFS is usually used with some sort of raid configuration so most doc will show this but you can create a pool with no replication using a single drive.

      • tiptoes@sh.itjust.works
        link
        fedilink
        arrow-up
        8
        ·
        edit-2
        19 hours ago

        How small are these devices? I think the other problem is that neither BTRFS nor zfs really are suitable for removable devices, and definitely not for ones smaller than probably 8Gb at the very least.

        Unlike NTFS which is just a file system, both BTRFS and ZFS do volume management too, so it’s not just a single partition thing; they prefer to take over an entire volume and manage everything.

        So while they’re the closest filesystem with NTFS-like transparent compression……they don’t match exactly.

        I also hazard to guess if the devices you’re using are too small to accept a BTRFS formatted volume, no amount of compression is going to be enough to fit what you need.

        If you just want to play with a bunch of small old devices……maybe play with LVM and small RAID arrays and configurations instead. You can the build a bigger volume out of a bunch of those disks together and then put a BTRFS or zfs volume on them. Can be fun to experiment and learn with anyway.

      • BananaTrifleViolin@piefed.world
        link
        fedilink
        English
        arrow-up
        7
        ·
        edit-2
        19 hours ago

        How small is your smallest device? BTRFS doesn’t have a minimum size, but practically probably 50-100mb is just about doable before even just setting things up get complex. Having said that though, it’s copy-on-write and has overhead as a result, so may not function well below 1gb.

        ZFS meanwhile really won’t work well below probably 8gb. It’s also copy-on-write but with a lot more overhead due to how it works. It really works best on big drives and filesystems.

        If your old storage is in the mb range, then really neither will help you achieve what you want.

        BTRFS and ZFS do offer the same benefits as NTFS with regard to compression and speeding up some slower devices (due to lowering the actual read/writes needed to achieve the same result as the data is compressed into a smaller space and decompressed rapidly by the PC in memory), but NTFS can go be used on much smaller disk sizes due to how it works. BTRFS and ZFS are designed and optimised with other benefits in mind. And NTFS compression isn’t well supported in Linux.

  • doodoo_wizard@lemmy.ml
    link
    fedilink
    arrow-up
    1
    ·
    11 hours ago

    My “I don’t need to save space, I want it for a different purpose” tee shirt is raising a lot of questions answered by my “I don’t need to save space, I want it for a different purpose” tee shirt.

  • Shimitar@downonthestreet.eu
    link
    fedilink
    English
    arrow-up
    10
    ·
    20 hours ago

    This is at file system level… Checkout btrfs and zfs, I am quite positive both can compress like you want.

    Never used this feature myself, so cannot be more specific.

    Also, there are some read-only compressed filesystems for Linux that you can also use, they offer best compression but data is read only.

    • vortexal@lemmy.mlOP
      link
      fedilink
      arrow-up
      3
      ·
      19 hours ago

      Okay, I’m having a bit of a problem. I tried the smallest device first but it’s too small for btrfs and I can’t figure out how to format devices in zfs. Unless xfs is the same as zfs, the option isn’t available in gparted and mkfs gives an error saying that the zfs file doesn’t exist. If it’s possible to install zfs through apt, “apt search zfs” gives a lot of results for zfs.

      • Shimitar@downonthestreet.eu
        link
        fedilink
        English
        arrow-up
        8
        ·
        19 hours ago

        How small is that device??? Didn’t even knew btrfs has a minimum size.

        After for zfs, you probably have to install some software or kernel patches

        • vortexal@lemmy.mlOP
          link
          fedilink
          arrow-up
          4
          ·
          19 hours ago

          It’s 128 MB, brtfs needs at least 256 MB. Also yes, I’m aware that I’d need to install something to use zfs but I don’t know where to look to find out what I’d need to install.

          • edinbruh@feddit.it
            link
            fedilink
            English
            arrow-up
            5
            ·
            18 hours ago

            If it’s a flash memory (sd card, usb stick, ssd, etc), you could try f2fs, it’s very light, and it supports compression and is meant specifically for that kind of devices (well, more for ssds).

            But judging your experience from your comments, I suggest you don’t delve into niche filesystems until you have more experience with Linux, especially for something like 128MB. I especially suggest you avoid zfs for now.

            • vortexal@lemmy.mlOP
              link
              fedilink
              arrow-up
              2
              ·
              18 hours ago

              It is an sd card and I did just format it to f2fs but how do I enable the compression? It does seem much faster that ext4 but it seems to also take up more space on the sd card, as I’ve lost about 25% of the free space after formatting it, so I’d like to enable the compression.

              As for zfs, I have been using Linux for over a few years at this point but I’ve mostly been avoiding some of the more complicated stuff. So if it is more complicated than what I originally thought, then I’ll avoid that for now as well.

              • edinbruh@feddit.it
                link
                fedilink
                English
                arrow-up
                3
                ·
                edit-2
                17 hours ago

                So, first of all, there is no gui for this, that I’m aware of, so you will have to do it from terminal. Second, on f2fs, compression works that you don’t enable compression for a folder, instead you mount the drive with compression enabled, and new files will be compressed automatically.

                So what you need is to set up your disk to be mounted with compression. There are many paths you can follow here. If you want your drive to be (almost) permanently connected, the easiest way is to use “/etc/fstab”. If you want to use it as a regular SD card, mounting and ejecting it from your file explorer etcetera, then you should go here and learn how to have udisks2 mount your device with compression, which should be what your desktop environment uses to mount drives. I suggest you set that up for your specific device, and not for all f2fs devices. Good luck.

                You can look up other useful f2fs options on the arch wiki. I suggest you add all those options that reduces writes to your disk and improve durability (like lazytime).

                You should use zstd as compression algorithm, and because this is a slow and small drive, you can crank up the level of compression.

                If you manage to pull this off, the next time you install a (bigger and faster) drive on your pc, you can try to look into zfs.

                • vortexal@lemmy.mlOP
                  link
                  fedilink
                  arrow-up
                  1
                  ·
                  16 hours ago

                  I read the page you linked to but I have no idea what I’m supposed to do with it. If it’s talking about using the “mount” command, I’ve already used that and even though I specifically enabled zstd as the compression method, files aren’t being compressed. I know this because I’m using a file that’s slightly larger than the free space but it’s still giving errors about not having enough space.

          • hendrik@palaver.p3x.de
            link
            fedilink
            English
            arrow-up
            5
            ·
            19 hours ago

            Huh. My computer allows me to format a 128MB image file with brtfs. It won’t do it at 64MB though.

              • hendrik@palaver.p3x.de
                link
                fedilink
                English
                arrow-up
                1
                ·
                18 hours ago

                Good call. Seems minimum for ZFS is three quarters of a Gigabyte, anyway. And definitely not made for what OP does 😆

            • vortexal@lemmy.mlOP
              link
              fedilink
              arrow-up
              1
              ·
              19 hours ago

              How are you trying to format the device? I got that error message when using gparted.

              • hendrik@palaver.p3x.de
                link
                fedilink
                English
                arrow-up
                3
                ·
                edit-2
                18 hours ago
                truncate -s 128M fs.img  
                parted fs.img  
                  mklabel gpt  
                  mkpart primary btrfs 1MiB 100%  
                  quit  
                sudo losetup --find --partscan --show fs.img  
                sudo mkfs.btrfs /dev/loop0p1  
                

                You should be able to skip the loop device stuff and work on an actual device instead. Seems to me the limit is somewhere between 64M and 128M.

                Edit: But as edinbruh said, maybe try f2fs if it’s a flash device, that’s probably a bit more lightweight?! And since I don’t know what you’re doing… If it’s embedded stuff and you’re alright with read-only, you might want to use squashfs.

                • vortexal@lemmy.mlOP
                  link
                  fedilink
                  arrow-up
                  3
                  ·
                  18 hours ago

                  I got brtfs working on a different storage device but I can’t tell if I set it up properly or not. I’m using the documentation that another user posted but it’s a bit confusing to me and I need to test it more.

                  For my 128 MB sd card, I am trying f2fs because that’s working. It does seem to write much faster than it did with ext4 but it seems to take up more space and it now has about 25% less free space, and it doesn’t seem to compress files. I’ll have to do more testing before I determine whether this what I go with or not.

                  As for squashfs, I probably don’t want that.

  • monovergent@lemmy.ml
    link
    fedilink
    arrow-up
    4
    ·
    17 hours ago

    F2FS seems to do what you want, it’ll reserve the original size of your file but compress what’s actually written. Performance numbers might be massively inflated if your writes don’t saturate the cache in RAM.

    I’ve used BTRFS on SD cards before and it’s mostly fine, but it will struggle massively if over 90% full, or if you have a < 1 GB volume and are, say, frequently updating a handful of files that together take up more than half its capacity. Mostly due to the CoW mechanism, it needs some headroom to make a copy of whatever files are being modified.

    • vortexal@lemmy.mlOP
      link
      fedilink
      arrow-up
      2
      ·
      17 hours ago

      I figured out what I did wrong but now I’m getting a different error message. It’s saying “Error: Wrong features compress_algorithm=zstd” even though the page I was given says it should be possible. Any ideas on what I should do to fix that?

    • vortexal@lemmy.mlOP
      link
      fedilink
      arrow-up
      2
      ·
      17 hours ago

      I’ve done some testing with f2fs and it does seem like what I want to go with but I can’t get compression working. Someone else linked me to this page but for some reason the command on that page gives an error message saying “Error: Failed to get the device stat!”. I already asked another user but assuming I can get it working, how would I change the command they provide to enable zstd compression. From what I’ve read, zstd is the compression method I want to be using.

    • vortexal@lemmy.mlOP
      link
      fedilink
      arrow-up
      3
      ·
      17 hours ago

      I tried that before but it didn’t work properly for me as the compressed files would end up getting corrupted.

  • wltr@discuss.tchncs.de
    link
    fedilink
    arrow-up
    5
    ·
    edit-2
    19 hours ago

    Not sure that’s relevant, but I’m playing around with Linux on some obsolete Windows tablets with cheap eMMC disks (one of which is broken, so I replaced it with a no name microSD card, plus USB drive), and I format my disks to f2fs, which theoretically should help with both keeping the disks for longer, and accessing the data faster.

    • vortexal@lemmy.mlOP
      link
      fedilink
      arrow-up
      4
      ·
      18 hours ago

      I’ll have to test that out more later but I did format the sd card to f2fs and it did seem to write files very fast when I did a simple test. The only issue I’m seeing is that it has about 25% less space than it did when I had it formatted for ext4, is that normal for f2fs?

      • Natanael@slrpnk.net
        link
        fedilink
        arrow-up
        5
        ·
        edit-2
        18 hours ago

        Make sure you’re actually filling the volume, and also keep in mind reporting may be different (with or without filesystem index metadata, etc)

        Also, you can simply use regular file systems and compressed files, and then use a RAM drive (assuming you have enough RAM free) and access the files that way instead

        • vortexal@lemmy.mlOP
          link
          fedilink
          arrow-up
          1
          ·
          18 hours ago

          I’m just going by what Linux Mint’s file manager says and it’s saying that the used space is about 40 MB with f2fs while it was about less than half of that when it was formatted to ext4.

          What’s a RAM drive? I have 8 GB of RAM and I have ZRAM enabled, so I should have enough RAM for most of the files I’d consider using it for.

  • HubertManne@piefed.social
    link
    fedilink
    English
    arrow-up
    2
    ·
    16 hours ago

    Never really had the need. My linux install already takes up way less space than my old windows one so I have much more space.

    • vortexal@lemmy.mlOP
      link
      fedilink
      arrow-up
      1
      ·
      16 hours ago

      I don’t need it for my OS, I have a full 512 GB hard drive for my Linux Mint installation. I need this for specifically running games on old storage devices that hold less than 32 GB and have terrible read and write speeds.

      • utopiah@lemmy.ml
        link
        fedilink
        arrow-up
        1
        ·
        35 minutes ago

        running games on old storage devices that hold less than 32 GB and have terrible read and write speeds.

        I’m confused. How about copying that to newer storage devices?

        Also typically game assets are VERY well compressed so I would suggest doing a comparison with/without compression before a full on migration. Compression tools help but aren’t magical. If your assets are e.g. .jpg or .mp4 or .mp3 or a combination of that (as typically game assets are, including 3D models with their textures) then you can test yourself to .zip them (or bzip2 or whatever you prefer) and you will seem some gains but they’ll be nearly negligible, e.g. < 10% reduction.

      • greedytacothief@lemmy.dbzer0.com
        link
        fedilink
        English
        arrow-up
        5
        ·
        15 hours ago

        Probably been mentioned already, but ZFS and BTRFS have options for full disk compression. Though there is cpu overhead with higher compression settings.

        • vortexal@lemmy.mlOP
          link
          fedilink
          arrow-up
          1
          ·
          15 hours ago

          I’ve gotten BTRFS to work and I’m going to use that for most of my devices. I’m not sure if I’m going to use ZFS though, the documentation that I was given for how to use it seems to be written from the perspective of someone who already knows how the it works and not from the perspective of someone who doesn’t, so I’m very confused by it.

          I’d like to get F2FS working on one of my devices though, but the commands needed to enable compression don’t seem to be working for me and I’m not getting any error messages so I have no idea how to fix it.

    • vortexal@lemmy.mlOP
      link
      fedilink
      arrow-up
      3
      ·
      18 hours ago

      If you are talking about what I think you’re talking about, that doesn’t do what I need it to. That just compresses the file(s) like a normal compression tool. I need something that will allow me to continue accessing the files as if they’re not compressed while keeping them compressed.

  • ThyTTY@lemmy.world
    link
    fedilink
    arrow-up
    5
    ·
    20 hours ago

    There’s an interesting project called DwarFS. I have it on my todolist to check it out but as I understand it you basically create a compressed read-only archive that is mountable and readable just like any other disk - https://github.com/mhx/dwarfs . Maybe this is something for your use case?

    • vortexal@lemmy.mlOP
      link
      fedilink
      arrow-up
      1
      ·
      19 hours ago

      Maybe for some things but because I’m using it for games, the “read-only” might limit what games I can use this with. I might still try it out though.

      • Björn@swg-empire.de
        link
        fedilink
        arrow-up
        3
        ·
        18 hours ago

        Funnily enough it’s often used in the pirate scene to distribute games. But only as archives.

      • ThyTTY@lemmy.world
        link
        fedilink
        arrow-up
        2
        ·
        19 hours ago

        Unfortunately I haven’t tested it so I cannot fully advise on that but I have seen some “repacks” on the high seas where a whole wine prefix with a game already installed was compressed to a single dwar which you can mount and play with configs and saves in your ~.

  • tychosmoose@piefed.social
    link
    fedilink
    English
    arrow-up
    4
    ·
    19 hours ago

    What are you saving on that drive? Many data file formats already have compression of their own and don’t benefit much from file system compression. So if this is for media files, for example, it’s likely to add CPU overhead without a big benefit in transfer speed.

    ZFS is not installed by default with most Linux distributions due to its license. It’s something you install after the os. Btrfs should work, but I see some discussion online of 128 or 256MB minimum volume size.

    • vortexal@lemmy.mlOP
      link
      fedilink
      arrow-up
      3
      ·
      18 hours ago

      I’m using it for games, I know it’s not really recommended to do that but I’m doing it anyways. I’m trying btrfs on one of my devices but I may need zfs for one of the others, however, I don’t know how to install it.

    • vortexal@lemmy.mlOP
      link
      fedilink
      arrow-up
      1
      ·
      14 hours ago

      I’m not sure what the differences are between them but what I’m looking for, BTRFS calls “transparent file compression”. I want the files to be compressed when added to the device but still fully accessible as if they aren’t. As I stated in my post, BTRFS supports this and I was able to set it up. I was told by multiple users that F2FS also supports this but if it does, it’s not working for me.

      • non_burglar@lemmy.world
        link
        fedilink
        arrow-up
        1
        ·
        12 hours ago

        BTRFS and ZFS both use block compression, ZFS by default. It’s meant to increase both storage efficiency and access speed and has nearly zero impact on performance. The files aren’t compressed from the filesystem point of view, which would satisfy your requirement not to need any other tools.

        I’m confused about your statement that you don’t want to save space with compression, but you indicated that you want to “make the most of your storage”. Are you looking for long-term archiving?

        • vortexal@lemmy.mlOP
          link
          fedilink
          arrow-up
          1
          ·
          edit-2
          12 hours ago

          I don’t remember exactly what I said but I did rewrite my post a little bit ago, it probably wont change your question though. Basically, what I meant was that I wanted to be able to run the most games from each device. Not as in hold the most games at a time, but more so hold a bigger game than it previously could while also being able to potentially load all games faster just in general. It just so happens that compression is capable of both in the right context, and in a way, it would also prolong the longevity of the devices as well, even if that’s not my main intention.

          I know that BTRFS can do this as it’s specified here and that works for me. But I was also told that F2FS could do this as well and I was linked to here. BTRFS is fine for most of my devices but there’s one device in particular that doesn’t have much space left when it’s formatted for BTRFS and therefor I’d like to get the compression in F2FS working if possible. Although, if I did get the compression in F2FS working correctly (assuming I wasn’t lied to), that’s probably what I’m going to end up using for most of my devices since most of them are flash storage devices.