Linux Tactic

Efficiently Schedule Automated Backups with Systemd Timers

Introduction to Systemd Timers

For any functioning system, it is essential to have a reliable service and system manager. To cater to such a need, Systemd was introduced as a service and system manager for Linux-based operating systems.

It replaces the traditional System V init system and has various advantages over it. One such advantage is the use of timers, which is the focal point of this article.

Timers in Systemd offer a better way to execute tasks as compared to cron, which is a popular tool for scheduling recurring tasks. This article will cover the basics of systemd timers and their advantages over cron.

It will also list the prerequisites required for working with the systemd timers.

Use of Timers and their Advantages over Cron

Cron is a command-line tool used to schedule tasks that run at a predefined time and frequency. It has been in use for decades and exists in various versions of Unix-based systems.

However, it has some limitations that triggered the development of systemd timers.

Systemd timers are an improved and advanced version of cron that comes with several advantages, including:


Reliable execution of tasks: With timers, you can execute a command with precision and accuracy. The command runs in the specified time interval and frequency without any delays or intervals.

2. Easy configuration: Systemd timers are easy to configure as compared to cron jobs.

In cron jobs, it can be challenging to determine the exact time and frequency of the scheduled task. This is because the configuration syntax used in cron jobs is complex and prone to syntax errors.

3. Persistent execution: systemd timers persistently execute tasks even when the system is rebooted or the task gets missed due to the system’s downtime.

In contrast, cron jobs will not execute missed tasks unless manually scheduled or rescheduled. 4.

Granular Control: Timers allow for greater control over the scheduling process with complex configurations like unit dependencies, boot ordering, and more.

Prerequisites for Working with Systemd Timers

Before jumping to create systemd timers, it is essential to understand the prerequisites needed to work with them. Below are the key aspects to consider:


Root privileges: Systemd timers utilize root-level permissions in executing tasks. Therefore, you need to have root or sudo access to configure and access service and timer units.

2. Terminal Access: Working with systemd requires the use of the command line interface.

As a result, a terminal is a prerequisite for creating and managing service units and timers.


Configuration Files: Creating a systemd timer requires the creation of two configuration files, namely the service unit and timer unit. Both configuration files have different names and extensions, and it is crucial to identify them to create them accurately.

A service unit is responsible for describing the properties of a service or program to Systemd. In contrast, a timer unit describes the properties of a timer, such as when, how often, and what to execute.


In conclusion, Systemd timers are a better and improved alternative to the traditional cron jobs. Among the benefits, they provide are reliable execution, easy configuration, persistent execution, and granular control.

That being said, for one to work with Systemd timers, it is essential to have root privileges and terminal access. One needs to ensure the accurate creation of configuration files for service and timer units.

By keeping these prerequisites in mind, you can create timers that perform all necessary tasks for a reliable and efficient system.

Scheduling an Automated Server Backup with Systemd Timers

The automation of recurring tasks, such as backups, is crucial for any server. One way to achieve this is by using Systemd timers.

In this section, we will discuss how to schedule an automated server backup with Systemd timers.

Use of Bash Script to Create Service File

The first step is to create a Bash script to define your backup task. A Bash script is a file containing a series of commands that are executed in sequence when the script is run.

Creating a Bash script is a simple process that involves the use of any text editor, such as nano or vim, to create a file with a .sh extension. Below is an example on how to create a Bash script to perform a server backup:



tar -czvf /backup/$(date +%Y-%m-%d).tar.gz /var/www/html/


In the code above, we are creating a tarball archive of the /var/www/html/ directory and saving it as a compressed .tar.gz file in the /backup directory.

The archive’s name is determined by the current date in YYYY-MM-DD format obtained using the `$(date +%Y-%m-%d)` command.

Next, we need to create a service file (with .service extension) that will handle the execution of the backup task.

We can create the service file with a Bash script using the `cat` command as below:


cat <<

EOF | sudo tee /etc/systemd/system/backup.service


Description=Server Backup



ExecStart=/bin/bash /path/to/




The code above creates a service file named ‘backup.service’ in the /etc/systemd/system directory with the provided description. It executes the Bash script containing the tar command and saves the backup in the specified location.

It then specifies that the service should start automatically on boot.

Creating Timer File with Necessary Options

Once the service file is created, the next step is to create a timer file (with .timer extension). This file defines when the backup service should run based on specific time intervals.

The options we will use in this example are the OnCalendar and RandomizedDelaySec options. The OnCalendar option specifies when the backup service should run.

It uses a calendar-based syntax, allowing us to specify intervals such as “every Monday at 2:00 am.” The RandomizedDelaySec option is used to add random delays between backups to prevent server overload.


sudo nano /etc/systemd/system/backup.timer




Description=Backup Timer







In the code above, we created a timer file named ‘backup.timer’ in the /etc/systemd/system directory.

The timer will be enabled to run weekly based on the OnCalendar option. The RandomizedDelaySec option specifies a delay before the backup task is executed, which is randomized to not overload the server.

The `Persistent=true` option ensures any missed backup tasks are executed when the server is next available.

Enabling and Starting the Timer

After creating the service and timer files, we need to enable and start the timer for it to take effect. This is done using the following command:


sudo systemctl enable backup.timer

sudo systemctl start backup.timer


This command enables and starts the ‘backup.timer’ service that triggers the ‘backup.service’ at the specified intervals.

Troubleshooting Systemd Timers

Systemd timers provide reliable scheduling of recurring tasks. However, like any technology, errors can occur.

Therefore, it is important to know how to troubleshoot issues that may arise with your timers.

Verifying Timer Units with systemd-analyze-verify Command

The systemd-analyze-verify command is used to verify timer units and services’ syntax, options, and dependencies. This command allows you to check the timer file’s syntax and confirms that it can function correctly.

To use the command, enter the following:


sudo systemd-analyze verify /etc/systemd/system/backup.timer


The command above verifies the ‘backup.timer’ file’s syntax and alerts you to any syntax errors or missing dependencies.

Diagnosing Issues with systemctl status Command

If your timer or service fails, the systemctl status command provides diagnostic information about the services and timers. This command shows the status of the service, including active or inactive status, errors, and other details.

To use the command, enter the following:


sudo systemctl status backup.service


The command above shows the status of the ‘backup.service’ file, including whether it is active or inactive, any error messages, and other details.


Systemd timers are a reliable tool for automating recurring tasks, such as server backups. By using Bash scripts and systemd timer files, you can easily configure backup services and schedule them at desired intervals.

Troubleshooting these tasks requires a deep understanding of the systemd-analyze-verify and systemctl status commands, which helps to identify any errors during the scheduling process. In conclusion, Systemd timers offer a reliable and efficient way to automate recurring tasks on Linux-based systems, including server backups.

Creating Service and Timer files using Bash scripts provides an easy way to configure and schedule backup services. Troubleshooting potential errors using the systemd-analyze-verify and systemctl status commands is critical to ensure successful execution of the task.

Overall, utilizing Systemd timers provides significant advantages over traditional scheduling tools, and it is crucial to consider its use in any automation project for optimal system management.

Popular Posts