Pause service while oneshot service is started

I have a oneshot service to restore backups but while this happens I would like to automatically stop all services that read those files.
the Conflict unit config open makes sense for that, but how do I restart the service after the backup is done?
Ideally I would also like to run another oneshot before and after this oneshot, while the service is still running.

So visualized something like this:

step 1 step 2 step 3
preBackup.service Backup.service postBackup.service
program.service: active program.service: inactive program.service: active

While running nix-gc we also need to stop some other services. This is how we do it in our nix-community infrastructure: https://github.com/nix-community/infra/blob/5ce498b6199132aa58f78c33806eb011bac9b4d2/roles/nix-community-cache.nix#L21

An alternate solution would be to use a fs capable of snapshots (btrfs, zfs for example) and to backup a snapshot of the directory. This way you don’t have to pause the services at all.