If you are using Mender's hosting option, delta updates are already a feature, see this blog post: https://hub.mender.io/t/robust-delta-update-rootfs/1144
Not sure what the options are if you aren't using their hosted solution, but maybe their docs provide further information. On Tue, Jul 30, 2024, 1:24 PM patryk seregiet via lists.yoctoproject.org <patryk.seregiet=gmail....@lists.yoctoproject.org> wrote: > Hello, > I'd like to create a diff/delta file between two rootfs images. I > thought it would be as easy as using diff / rsync with some options, > but it doesn't seem to be possible with just that, at least I couldn't > manage it. So I wrote my own tool and it works, but it requires root > to manipulate the files owned by other UIDs and GIDs (especially > root). > > I know there's fakeroot, but my images have files owned by root and > another ordinary users, so I cannot just make everything be owned by > root. Here's the breakdown of my program and what I tried. I'd like > any suggestion on how to achieve this easier and without sudo / root > account. > > Oh and btw I am using ext4 images because I am using Mender (the over > the air update software - https://mender.io/) and their final "mender > artifact" is just the ext4 rootfs image with some extra metadata. I'd > like to make a system that can produce a delta between these images. > But if that's not possible I can just use the tarball created by Yocto > (I'd just need to keep both or maybe Mender can be configured to use > tarballs... not sure). > > Mount ext4 images at dir1 and dir2 (can be done without root > using fuse2fs, but in that case no files can be listed when using > sudo... strange) > > For all files in dir1 check if it exists in dir2, if not, write its name > to ".deleted" file > > For all files in dir2 check if file exists in dir1. If not, copy it to > output-dir > > If both files exist compare them (size, uid, guid, st_mode, finally > calculate and compare a hash) > > if any of the above is different, copy it (using cp -a, which preserves > all attributes). Also make all the directories for that file (mkdir -p). > > For all directories in output-dir check if it exists in dir2, if yes > then copy all its attributes (stat -> chmod + chown). > This is needed for all the directories we created using mkdir -p > > This leaves us with all the files that were different in output-dir > and a list of files to be removed. > > Here's what I thought of doing: > Do this in a docker image as a root (without the docker itself having > any privileges). Can't make it work with ext4 being mounted, docker > container can't access it (mountpoint is owned by root). > > > >
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#63618): https://lists.yoctoproject.org/g/yocto/message/63618 Mute This Topic: https://lists.yoctoproject.org/mt/107633647/21656 Mute #toolchain:https://lists.yoctoproject.org/g/yocto/mutehashtag/toolchain Mute #yocto:https://lists.yoctoproject.org/g/yocto/mutehashtag/yocto Group Owner: yocto+ow...@lists.yoctoproject.org Unsubscribe: https://lists.yoctoproject.org/g/yocto/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-