Difference between revisions of "Rsync"

From ArchWiki
Jump to: navigation, search
m (cleaned up the "as a cp alternative" sentence to make it easier to read)
(added a "time machine like" snapshot-based backup script)
Line 78: Line 78:
  
 
; {{Codeline|--inplace}} : implies {{Codeline|--partial}} update destination files in-place
 
; {{Codeline|--inplace}} : implies {{Codeline|--partial}} update destination files in-place
 +
 +
====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.
 +
 +
This script implements a simple version of it:
 +
 +
{{File|name=/usr/local/bin/rsnapshot.sh|content=
 +
#!/bin/bash
 +
 +
## my own rsync-based snapshot-style backup procedure
 +
## (cc) marcio rps AT gmail.com
 +
 +
# config vars
 +
 +
SRC="/home/username/files/" #dont forget trailing slash!
 +
SNAP="/snapshots/username"
 +
OPTS="-rltgoi --delay-updates --delete --chmod=a-w"
 +
MINCHANGES=20
 +
 +
# run this process with real low priority
 +
 +
ionice -c 3 -p $$
 +
renice +12  -p $$
 +
 +
# sync
 +
 +
rsync $OPTS $SRC $SNAP/latest >> $SNAP/rsync.log
 +
 +
# check if enough has changed and if so
 +
# make a hardlinked copy named as the date
 +
 +
COUNT=$( wc -l $SNAP/rsync.log|cut -d" " -f1 )
 +
if [ $COUNT -gt $MINCHANGES ] ; then
 +
  DATETAG=$(date +%Y-%m-%d)
 +
  if [ ! -e $SNAP/$DATETAG ] ; then
 +
      cp -al $SNAP/latest $SNAP/$DATETAG
 +
      mv $SNAP/rsync.log $SNAP/$DATETAG
 +
  fi
 +
fi
 +
}}
 +
 +
To make things really, really simple this script can be run out of /etc/rc.local (this is how i run it myself).

Revision as of 16:47, 31 July 2010

rsync is an open source utility that provides fast incremental file transfer.

Installation

Install the Template:Package Official package using pacman:

# pacman -S rsync

Usage

For more examples, search the Community Contributions and General Programming forums.

As a cp alternative

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

$ rsync -P src dest

The Template:Codeline option is the same as Template:Codeline, which keeps partially transferred files and shows a progress bar during transfer.

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, see Full System Backup with rsync.

Automated backup

For the sake of this example, the script is created in the Template:Filename 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.

First, create a script containing the appropriate command options: Template:File

Template:Codeline 
indicates that files should be archived, meaning that all of their attributes are preserved
Template:Codeline 
means files deleted on the source are to be deleted on the backup aswell

Here, Template:Filename should to be changed to what needs to be backed-up (Template:Filename, for example) and Template:Filename is where the backup should be saved (Template:Filename, for instance).

Finally, the script must be executable:

# chmod +x /etc/cron.daily/rsync.backup

Automated backup with SSH

If backing-up to a remote host using SSH, use this script instead: Template:File

Template:Codeline 
tells rsync to use SSH
Template:Codeline 
is the user on the host Template:Codeline
Template:Codeline 
group all this options Template:Codeline recursive, links, perms, times, group, owner, devices


Automated backup with NetworkManager

This action automated backup when you plugin your wire.

First, create a script containing the appropriate command options: Template:File

Template:Codeline 
group all this options Template:Codeline recursive, links, perms, times, group, owner, devices
Template:Codeline 
read the relative path of /folder/to/backup from this file
Template:Codeline 
limit I/O bandwidth; KBytes per second

Differential backup on a week

This is a useful option of rsync, created a full backup and a differential backup for each day of a week.

First, create a script containing the appropriate command options: Template:File

Template:Codeline 
implies Template:Codeline update destination files in-place

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.

This script implements a simple version of it:

Template:File

To make things really, really simple this script can be run out of /etc/rc.local (this is how i run it myself).