[http://samba.anu.edu.au/rsync/ rsync] is an open source utility that provides fast incremental file transfer.

[http://samba.anu.edu.au/rsync/ rsync] is an open source utility that provides fast incremental file transfer.

Line 89:

Line 86:

}}

}}

−

Instead of running time interval backups with time based schedules, such as those implemented in [[cron]], it is possible to run a backup every time one of the files you're backing up changes. {{ic|systemd.path}} units use {{ic|inotify}} to monitor the filesystem, and can be used in conjunction with {{ic|systemd.service}} files to start any process (in this case your [[rsync]] backup) based on a filesystem event.

+

Instead of running time interval backups with time based schedules, such as those implemented in [[cron]], it is possible to run a backup every time one of the files you are backing up changes. {{ic|systemd.path}} units use {{ic|inotify}} to monitor the filesystem, and can be used in conjunction with {{ic|systemd.service}} files to start any process (in this case your [[rsync]] backup) based on a filesystem event.

−

First, create the {{ic|systemd.path}} file that will monitor the files you're backing up:

+

First, create the {{ic|systemd.path}} file that will monitor the files you are backing up:

Installation

Usage

As a cp alternative

rsync can be used as an advanced alternative for the cp command, especially for copying larger files:

$ rsync -P source destination

The -P option is the same as --partial --progress, which keeps partially transferred files and shows a progress bar during transfer.

You may want to use the -r --recursive option to recurse into directories, or the -R option for using relative path names (recreating entire folder hierarchy on the destination folder).

As a backup utility

The rsync protocol can easily be used for backups, only transferring files that have changed since the last backup. This section describes a very simple scheduled backup script using rsync, typically used for copying to removable media. For a more thorough example and additional options required to preserve some system files, see Full System Backup with rsync.

Automated backup

For the sake of this example, the script is created in the /etc/cron.daily directory, and will be run on a daily basis if a cron daemon is installed and properly configured. Configuring and using cron is outside the scope of this article.

Automated backup with systemd and inotify

Note:

Due to the limitations of inotify and systemd (see this question and answer), recursive filesystem monitoring is not possible. Although you can watch a directory and its contents, it will not recurse into subdirectories and watch the contents of them; you must explicitly specify every directory to watch, even if that directory is a child of an already watched directory.

Instead of running time interval backups with time based schedules, such as those implemented in cron, it is possible to run a backup every time one of the files you are backing up changes. systemd.path units use inotify to monitor the filesystem, and can be used in conjunction with systemd.service files to start any process (in this case your rsync backup) based on a filesystem event.

First, create the systemd.path file that will monitor the files you are backing up:

~/.config/systemd/user/backup.path

[Unit]
Description=Checks if paths that are currently being backed up have changed
[Path]
PathChanged=%h/documents
PathChanged=%h/music
[Install]
WantedBy=default.target

Then create a systemd.service file that will be activated when it detects a change. By default a service file of the same name as the path unit (in this case backup.path) will be activated, except with the .service extension instead of .path (in this case backup.service).

Note: If you need to run multiple rsync commands, use Type=oneshot. This allows you to specify multiple ExecStart= parameters, one for each rsync command, that will be executed. Alternatively, you can simply write a script to perform all of your backups, just like cron scripts.

Snapshot backup

The same idea can be used to maintain a tree of snapshots of your files. In other words, a directory with date-ordered copies of the files. The copies are made using hardlinks, which means that only files that did change will occupy space. Generally speaking, this is the idea behind Apple's TimeMachine.