-
Notifications
You must be signed in to change notification settings - Fork 114
Open
Description
Using casync version v2-268-ge6817a7:
# Download our 2 versions:
▸ wget -c -O v1.tar.gz http://ota.koreader.rocks/koreader-kindlepw2-v2024.11-210-ga641207f7_2025-02-21.targz
[…]
▸ wget -c -O v2.tar.gz http://ota.koreader.rocks/koreader-kindlepw2-v2024.11-212-g3cf45b9dc_2025-02-22.targz
[…]
# Notice the first version is slightly smaller:
▸ du -b v1.tar.gz v2.tar.gz
44236764 v1.tar.gz
44249752 v2.tar.gz
# Create server data:
▸ rm -rf server
▸ mkdir server
▸ for f in {v1,v2}.tar.gz; do casync make --store=server/default.castr --compression=zstd --without=all "server/$f.caibx" "$f"; done
383c545328f8d65ee6605d5684a5aa03f2951163576c05b04174029cc4edd05d
2967d8497c486bcbe24203b0d5448fa6d94ad0d0c0b3eeccdc6c1544783b7fad
# Simulate downloading the first version:
▸ rm -f test.tar.gz
▸ casync extract --reflink=no server/v1.tar.gz.caibx test.tar.gz
# All good:
▸ sha1sum test.tar.gz v1.tar.gz v2.tar.gz
739930b7bc47e323c3732649229b53620e83cc64 test.tar.gz
739930b7bc47e323c3732649229b53620e83cc64 v1.tar.gz
88d94d0df23838b4d2bcf3386a77b7addba51db7 v2.tar.gz
# Simulate updating to the second version:
▸ casync extract --reflink=no server/v2.tar.gz.caibx test.tar.gz
# All good:
▸ sha1sum test.tar.gz v1.tar.gz v2.tar.gz
88d94d0df23838b4d2bcf3386a77b7addba51db7 test.tar.gz
739930b7bc47e323c3732649229b53620e83cc64 v1.tar.gz
88d94d0df23838b4d2bcf3386a77b7addba51db7 v2.tar.gz
# Simulate downgrading back to the first version:
▸ casync extract --reflink=no server/v1.tar.gz.caibx test.tar.gz
# Contents do not match:
▸ sha1sum test.tar.gz v1.tar.gz v2.tar.gz
5d12d3285825465931013bd3c30897b713d87ae1 test.tar.gz
739930b7bc47e323c3732649229b53620e83cc64 v1.tar.gz
88d94d0df23838b4d2bcf3386a77b7addba51db7 v2.tar.gz
# Resulting file has the same size as version 2:
▸ ds -b test.tar.gz v1.tar.gz v2.tar.gz
44236764 v1.tar.gz
44249752 test.tar.gz
44249752 v2.tar.gz
132736268 total
# Except for that extraneous data, contents match:
▸ v1size="$(stat -c %s v1.tar.gz)"
▸ sha1sum <(dd if=test.tar.gz bs="$v1size" count=1 status=none) v1.tar.gz
739930b7bc47e323c3732649229b53620e83cc64 /dev/fd/63
739930b7bc47e323c3732649229b53620e83cc64 v1.tar.gz
# The extra data matches the end of the second version:
▸ sha1sum <(dd if=test.tar.gz bs="$v1size" skip=1 status=none) <(dd if=v2.tar.gz bs="$v1size" skip=1 status=none)
9131c52cef85129117bd2a0cfd07b5107a55422c /dev/fd/63
9131c52cef85129117bd2a0cfd07b5107a55422c /dev/fd/62Metadata
Metadata
Assignees
Labels
No labels