Simple-Backup

Simple-Backup icon

Simple-Backup

Incremental backups for Linux Mint (Cinnamon), in a small Bash project. Keep your files (photos, documents, programs...) always synced to your external drive (or internal), without ever having to guess what's left to update.

GPLv3 license Bash Linux Mint

Language: the project is available in English and Spanish. On a fresh configuration, the script uses Spanish when the system locale is Spanish; otherwise it defaults to English. Press l or L in the main menu to switch between English and Spanish. The selected language is saved for future runs.

Leer en español / Read in Spanish


Simple-Backup is an interactive script that copies your personal folders (Documents, Music, Pictures, Videos, Downloads…) to another drive —usually an external one, although a second internal drive works too— using rsync. It does not create a disk image: it copies real, browsable files that you can open directly from the file manager on any PC. It also lets you create full-system snapshots with Timeshift and schedule everything with cron, without having to touch the terminal every time.

menu-simple-backup-en config-simple-backup-en simple-backup-automatic-backup-en simple-backup-config-check-en simple-backup-mirror-delete-en simple-backup-quick-help-en

Why this script instead of something else?

Backups on Linux usually mean either a disk image (dd, Clonezilla…) or system snapshots (Timeshift, Déjà Dup…). Neither handles the most common case well —having your photos, documents and music also on the external drive, as-is, in case your computer dies tomorrow— because you can’t open an image to grab a single file without restoring the whole thing. Simple-Backup uses rsync to copy only what’s new or modified on each run, leaving the same folder structure on the external drive as you have at home: plug the drive into any PC and your files are right there, with no software needed to recover them.

On top of a plain rsync -a, the script adds:

Table of contents

Features

Personal file backup

Full system snapshots (Timeshift)

The menu gives direct access to Timeshift for full-system snapshots (the operating system, not your personal files): create one now, list existing snapshots, open its graphical interface, or choose the disk/partition where they’re stored. If it’s not installed, the script offers to install it.

Automation

Other useful details

Installation

Requirements:

Package Used for Required?
bash ≥ 4.3 Running the script Yes
rsync Performing backups Yes
xdg-user-dirs Detecting personal folders Yes
zenity Graphical folder picker No (paths can be entered manually)
libnotify-bin Desktop notifications No
timeshift System snapshots No, only if you use that feature
cron Scheduled backups No, only if you use that feature

When a required dependency is missing, the script detects it at startup and offers to install it with apt.

Steps:

git clone https://github.com/filonux/Simple-Backup.git
cd Simple-Backup
chmod +x script/simple-backup.sh
./script/simple-backup.sh

This launches the first-run wizard.

Prefer not to rely on the terminal? Scriptya, another tool by the same author, lets you launch, install, uninstall and change the icon of Simple-Backup just like any other application, with its own menu and no commands to type. Just point it at this repository’s script/ folder.

Usage

Interactive menu (normal use):

./script/simple-backup.sh

The main menu has seven options: configure source and destination paths, run the backup now, create a system snapshot, schedule automatic backups, view the log history, enable or disable mirror mode, and verify the configuration without copying anything.

From zero to automatic backups: the first run launches the first-run wizard, which detects your folders and takes you straight to choosing the destination drive from a list of mounted drives. With that configured, option 2 runs the first backup, and option 4 only asks for frequency (daily or weekly), hour and, if applicable, day, to schedule it in the crontab for you. From then on you go straight to the main menu, and scheduled backups run on their own, notifying you by desktop notification of each result — all without writing a line of rsync or touching the crontab by hand.

Other commands:

./script/simple-backup.sh --auto     # Run the configured backup without menus (for cron)
./script/simple-backup.sh --version  # Show the installed version
./script/simple-backup.sh --help     # Show the help

You do not need to call --auto yourself: when you schedule a backup from the menu (option 4), the script creates the corresponding cron entry for you.

Compatibility

Developed and tested on Linux Mint 22.3 (Cinnamon). Since it’s built on bash, rsync and standard GNU/Linux tools, it should work unchanged on any Debian/Ubuntu-based distribution (other Mint editions, Ubuntu, Pop!_OS…) and with other desktop environments, too — what’s Cinnamon-specific is mostly just the notification icons. The one catch is that automatic dependency installation uses apt: on distributions that don’t use it (Fedora, Arch…) you’ll need to install rsync, xdg-user-dirs and, if you want them, zenity and timeshift yourself; the rest of the script works the same.

Where it stores its files

Simple-Backup does not touch anything outside your home folder except the destination drive you explicitly choose:

What Where
Configuration (folders, destination, exclusions…) ~/.config/simple-backup/config.conf
Backup logs ~/.local/share/simple-backup/logs/
Execution lock ~/.config/simple-backup/backup.lock

The configuration file is generated and overwritten automatically from the menu; there is no need (and it is not recommended) to edit it by hand.

Language

Language selection is independent from the system locale: on a fresh configuration, Simple-Backup checks LC_ALL, LC_MESSAGES and LANG, in that order, and starts in Spanish only if it detects a Spanish locale (es, es_ES, es-ES…); any other case starts in English. The l/L shortcut in the main menu switches between the two and saves the choice in UI_LANGUAGE (inside ~/.config/simple-backup/config.conf), which then overrides automatic detection; existing configurations without that field behave as auto.

Code comments are in English; the interface and documentation are translated.

Tests

Includes a regression suite focused on behavior contracts: language catalogs, locale precedence, real rsync behavior, exclusions, mirror deletion, locking, cron integration, Timeshift helpers and exit-code classification, among others — with temporary fixtures and deterministic mocks so each failure points to a specific contract. Run it with bash tests/test.sh; bash tests/mutation.sh checks that intentional regressions (language switching, menu wording, exclusions, mirror deletion…) are actually caught.

Roadmap

License

Published under the GNU GPLv3 license. See LICENSE.txt for the full text.

Contributing

Contributions are welcome. Before opening an issue or pull request, take a look at CONTRIBUTING.md and the code of conduct. To report a bug or request a new feature, use the appropriate templates in .github/ISSUE_TEMPLATE/. If you find a security issue, follow the process described in SECURITY.md instead of opening a public issue.


Made by Filonux.