How does restic handle Intelligent tiering archives type? (S3 AWS)

Hello Restic community!

Firstly, thanks everyone involved in this beautiful piece of software!

I would like to kindly ask, how does restic handle INTELLIGENT_TIERING objects if they are moved after 90 or 180 days to Archive or Deep Archives access tiers.

This is from AWS:

Once you have activated one or both of the archive access tiers, S3 Intelligent-Tiering will move objects that haven’t been accessed for 90 consecutive days to the Archive Access tier and then after 180 consecutive days of no access to the Deep Archive Access tier. If the objects are accessed later, S3 Intelligent-Tiering moves the objects back to the Frequent Access tier. If the object you are retrieving is stored in the Archive or Deep Archive tiers, before you can retrieve the object you must first restore a copy using RestoreObject. For information about restoring archived objects, see Restoring Archived Objects.

I would like to make it clear for everyone if there is something we need to do before using INTELLIGENT_TIERING with automatic Archive and Deep Archives tiers.

I know restic needs direct access to data (so Glacier and Glacier Deep are out of question), but it is not clear to me, if through INTELLIGENT_TIERING object setting restic can handle Archive or Deep Archives access objects?

Or did I misunderstand something about AWS S3 Intelligent Tiering?

I suspect Restic does not handle that at all, and restores will fail. If you wanted to restore you’d need to transition all objects to standard / IA class then run Restic against the repo.

I don’t think there’s a charge for the restore operation itself (just the archived and non-archived storage; briefly concurrently). Perhaps Restic could make a restore request for every object needed (if it wasn’t archived, no problem) before use, that could be interesting.

I also assume it’s not handled at all as it is though.

I’m not sure how well it would work anyway really though - at block level there’s less reason to think a ‘file’ (an S3 object of blocks) is going to be unused for a while, or if it is that that’s any indication it won’t be going forward, since it doesn’t particularly correspond to your actual deleted files.

Pricing for retrieval from Glacier Deep Archive is here. It varies between $0.0025/GB and $0.03/GB depending on how fast you want it.

I doubt core Restic is going to put in code to deal with specific storage platforms, there are too many of them, though S3 is quite popular. It makes restore more difficult - put in a request, wait for some amount of time between 1 minute and 12 hours, then do the restore.

If someone has a large volume of data in Restic / S3 it’s probably easier to restore the whole archive for a retrieval. That’s not very efficient as you may only need a small fraction of the data. That’s why glacier isn’t great with Restic. I generally use IA class, infrequent access, which give millisecond response times. In the rare archive where I use glacier classes I accept that the cost to restore will be high, and its my last line backup rather than my primary backup.

To wrap this thread up and mark it as resolved, the answer is that there’s no specific support for that type of feature in restic. See Issues · restic/restic · GitHub for more info.

1 Like