Rewrite shell tasks to get triggerd by Elixir application

I try to get some opinions about the following use case for Elixir.
I currently have shell scripts for the task of a nightly file backup.

Local commands

  • mount encrypted securefs storage (“long” running interactive shell command - type password)
  • rsync files to securefs mount
  • stop securefs mount process
  • rsync encrypted securefs storage files to remote storage

Remote commands

  • rotate backups (mv & cp -al)

Now, I’m thinking about triggering all of this commands from within an Elixir application.
Is this a good idea? By heavily using System.cmd/3 and maybe Port.
Where in this use case is using Port the better choice?

The case why I would love to do all of the above in Elixir, is I want to use my existing Logger backends for e.g. log to Matrix on success, log to SMS on failure.
And I wouln’t need to configure a cronjob for running the nightly backup task.

So what are your thoughts about this?

Personally I favour pull based backups, and I have an elixir application connecting to some of our servers and doing db backups and moving them to S3. I only wouldn’t want to let the application I want to backup data of handle it’s own backuping. Chances are a bug, which requires you to rollback to a backup could also have broken the backup system, so keeping those separate from each other is probably a good idea.

Good idea to use pull data instead of push.
But of course the system (local commands) are already separated from the data layer.