• 1 Post
  • 15 Comments
Joined 2 years ago
cake
Cake day: June 14th, 2023

help-circle




  • Where I live (not the US) I’m seeing closer to $240 per TB for M-disc. My whole archive is just a bit over 2TB, though I’m also including exported jpgs in case I can’t get a working copy of darktable that can render my edits. It’s set to save xmp sidecars on edit so I don’t bother with backing up the database.

    I mostly wanted a tool to divide up the images into disk-sized chunks, and to automatically track changes to existing files, such as sidecar edits or new photos. I’m now seeing I can do both of those and still get files directly on the disk, so that’s what I’ll be doing.

    I’d be careful with using SSDs for long term, offline storage. I hear they lose data if not powered for a long time. IMO metadata is small enough to just save a new copy when it changes


  • I’ve been thinking through how I’d write this. With so many files it’s probably worth using sqlite, and then I can match them up by joining on the hash. Deletions and new files can be found with different join conditions. I found a tool called ‘hashdeep’ that can checksum everything, though for incremental runs I’ll probably skip hashing if the size, times, and filename haven’t changed. I’m thinking nushell for the plumbing? It runs everywhere, though they have breaking changes frequently. Maybe rust?

    ZFS checksums are done at the block level, and after compression and encryption. I don’t think they’re meant for this purpose.





  • Ohhh boy, after so many people are suggesting I do simple files directly on the disks I went back and rethought some things. I think I’m landing on a solution that does everything and doesn’t require me to manually manage all these files:

    • fd (and any number of other programs) can produce lists of files that have been modified since a given date.
    • fpart can produce lists of files that add up to a given size.
    • xorrisofs can accept lists of files to add to an iso

    So if I fd a list of new files (or don’t for the first backup), pipe them into fpart to chunk them up, and then pass these lists into xorrisofs to create ISOs, I’ve solved almost every problem.

    • The disks have plain files and folders on them, no special software is needed to read them. My wife could connect a drive, pop the disk in, and the photos would be right there organized by folder.
    • Incremental updates can be accomplished by keeping track of whenever the last backup was.
    • The fpart lists are also a greppable index; I can use them to find particular files easily.
    • Corruption only affects that particular file, not the whole archive.
    • A full restore can be accomplished with rsync or other basic tools.

    Downsides:

    • Change detection is naive. Just mtime. Good enough?
    • Renames will still produce new copies. Solution: don’t rename files. They’re organized well enough, stop messing with it.
    • Deletions will be disregarded. I could solve this with some sort of indexing scheme, but I don’t think I care enough to bother.
    • There isn’t much rhyme or reason to how fpart splits up files. The first backup will be a bit chaotic. I don’t think I really care.
    • If I rsync -a some files into the dataset, which have mtimes older than the last backup, they won’t get slurped up in the next one. Can be solved by checking that all files are already in the existing fpart indices, or by just not doing that.

    Honestly those downsides look quite tolerable given the benefits. Is there some software that will produce and track a checksum database?

    Off to do some testing to make sure these things work like I think they do!





  • I’m using standard BD-DLs. M-Disks are almost triple the price, and this project is already too costly. I’m not looking for centuries of longevity, I’m using optical media because it’s read-only once written. I read that properly stored Blu-Rays should be good for 10 or 20 years, which is good enough for me. I’ll make another copy when the read errors start getting bad.

    Copying files directly would work, but my library is real big and that sounds tedious. I have photos going back to the 80s and curating, tagging, and editing them is an ongoing job. (This data is saved in XMP sidecars alongside the original photos). I also won’t be encrypting or compressing them for the same reasons you mentioned.

    For me, the benefit of the archive tool is to automatically split it up into disk-sized chunks. That and to automatically detect changes and save a new version; your first key doesn’t hold true for this dataset. You’re right though, I’m sacrificing accessibility for the rest of the family. I’m hoping to address this with thorough documentation and static binaries on every disk.


  • Woah, that’s cool! I didn’t know you just zfs send anywhere. I suppose I’d have to split it up manually with split or something to get 50gb chunks?

    Dar has dar_manager which you can use to create a database of snapshots and slices that you can use to locate individual files, but honestly if I’m using this backup it’ll almost certainly be a full restore after some cataclysm. If I just want a few files I’ll use one of my other, always-online backups.

    Edit: Clicked save before I was finished

    I’m more concerned with robustness than efficiency. Dar will warn you about corruption, which should only affect that particular file and not the whole archive. Tar will allow you to read past errors so the whole archive won’t be ruined, but I’m not sure how bad the affects would be. I’m really not a fan of a solution that needs every part of every disk to be read perfectly.

    I could chunk them up manually, but we’re talking about 2TB of lumpy data, spread across hundreds of thousands of files. I’ll definitely need some sort of tooling to track changes, I’m not doing that manually and I bounce around the photo library changing metadata all the time.