Does "restic snapshots" always list chronologically?

phyrrhic might be interesting for you as you use python.

Indeed sorting is just idiomatic python code using snapshot properties. Example code:

from operator import attrgetter
from pathlib import Path
from pprint import pp

from pyrrhic.repo.repository import Repository, get_masterkey

repopath = Path("restic_test_repositories/restic_test_repository")
masterkey = get_masterkey(repopath, "password")
repository = Repository(repopath, masterkey)

pp(sorted(repository.get_snapshot(), key=attrgetter("time")))

Results in:

[Snapshot(time=resticdatetime(2022, 7, 19, 21, 52, 28, 692251, tzinfo=datetime.timezone(datetime.timedelta(seconds=7200))), tree='a5dbcc77f63f5dd4f4c67c988aba4a19817aaa9d6c34a6021236a5d40ce653e1', paths=['/home/juergen/shared/python/pyrrhic/test'], hostname='shaun', username='juergen', id='dd62b535d10bd8f24440cc300a868d6bf2f472859f1218883b0a6faca364c10c', uid=1000, gid=1000, excludes=None, tags=None),
 Snapshot(time=resticdatetime(2022, 9, 25, 13, 17, 3, 310345, tzinfo=datetime.timezone(datetime.timedelta(seconds=7200))), tree='1eebeb922aa237d149209e6e9786655898dfcabaeeae1f79b8bfda686d3788fb', paths=['/usr/share/cracklib'], hostname='lemmy', username='juergen', id='fb56c7b68e95806244b0080bf8bb05d0132df9228390e4b9dc36e2ba6d3bf1a8', uid=1001, gid=1001, excludes=None, tags=None),
 Snapshot(time=resticdatetime(2022, 10, 17, 19, 24, 47, 151121, tzinfo=datetime.timezone(datetime.timedelta(seconds=7200))), tree='15b4341aa4e0dbc3414268fa2d15677f16dcdd6db7e03b8221aa57cfaaf9b2fe', paths=['/usr/share/cracklib'], hostname='shaun', username='juergen', id='7f9faf70a9889f54124f52e42f0d11d3e5eab185fe423cd2c4bb859ef0f71a8b', uid=1000, gid=1000, excludes=None, tags=None),
 Snapshot(time=resticdatetime(2022, 10, 21, 7, 29, 10, 262317, tzinfo=datetime.timezone(datetime.timedelta(seconds=7200))), tree='d29104863ce809c7f05dc3092176c5d3727b6941551812a2400a849fceea5866', paths=['/usr/share/cracklib'], hostname='shaun', username='juergen', id='d2bbc914bf89a24f16bcb70a4ec1d433856e0a8fef5b73c7dd4fa64a95f3977c', uid=1000, gid=1000, excludes=None, tags=['symlink'])]

However, on a short look it seems that with pyrrhic you are restricted to a local backend

Yes, I plan to add remote repositories in future versions (rclone).

I think it’s not speed- or memory-usage- optimized

Amazingly, some operations are even faster. The low-level libraries pyrrhic uses are all implemented in C. Listing snapshots:

time pyrrhic  snapshots
... 
real	0m0,925s
user	0m0,883s
sys	0m0,040s

vs

time restic  snapshots
...
86 snapshots

real	0m1,133s
user	0m0,788s
sys	0m0,040s

1 Like