Skip to content

Using Openrsync

OpenRsync is OpenBSD's rewrite of rsync. [openrsync is designed to be lightweight and simple. It may, however, be a little buggy. OpenRsync is OpenBSD's rewrite of rsync. [openrsync is designed to be lightweight and simple. It may, however, be a little buggy.

WARNING: If your filesystem is being actively written to, data corruption may occur.

OpenRsync Primer

To back up the file /path/to/file on example.com with username to the current directory:

$ openrsync -a username@example.com:/path/to/file ./

This table explains the most common options:

|| border=1 width=100%25 class="sortable simpletable"

||# Option ||# Purpose ||

|| a || (a)rchive mode, shorthand for Dgloprt ||

|| D || Transfers (D)evice and special files ||

|| g || Sets (g)roup to match the source ||

|| l || Transfers symbolic (l)inks ||

|| o || Sets (o)wner to match the source (needs root) ||

|| p || Synchronizes (p)ermissions ||

|| r || (r)ecursive ||

|| t || Synchronize (t)imestamps ||

|| v || Increase (v)erbosity ||

If you have multiple files, you can use the shorthand of :/path/to/second/file:

$ openrsync -a username@example.com:/path/to/file :/path/to/second/file ./

This copies both /path/to/file and /path/to/second/file from example.com to your current local directory.

openrsync can also copy folders recursively. To see each file copied, turn on verbosity with -v. In the next example, we copy from /path/to/folder on the local system to /path/to/destination in example.com:

$ openrsync -av /path/to/folder username@example.com:/path/to/destination/

Quick Check

Before you backup your files, make sure you have enough disk space. To see how much space it will take, and how much you have available, run:

$ df -h
Filesystem     Size    Used   Avail Capacity  Mounted on
/dev/sd0a     1005M    111M    844M    12%25    /
/dev/sd0k      192G   28.7G    153G    16%25    /home
/dev/sd0d      3.9G   22.1M    3.7G     1%25    /tmp
/dev/sd0f     12.3G    7.3G    4.4G    63%25    /usr
/dev/sd0e     14.7G   41.2M   14.0G     0%25    /var

Backing up /home will require at least 28.7G of space.

$ openrsync -av username@example.com:/home/username /dest/path/

This will copy everything in /home/username on example.com into /dest/path/.

(:if false:)

Complete Functions

Put the following functions at the end of ~/.profile:

rsync-all () {
        echo "Backing up in $PWD: type ctrl+c to abort, enter to continue"
        read $cancel
        ssh $1 "doas dump -0 -a -u -h 0 -f - /" > root.dmp
        ssh $1 "doas dump -0 -a -u -h 0 -f - /home" > home.dmp
        ssh $1 "doas dump -0 -a -u -h 0 -f - /home/vmm" > vmm.dmp
        ssh $1 "doas dump -0 -a -u -h 0 -f - /mnt" > mnt.dmp
        ssh $1 "doas dump -0 -a -u -h 0 -f - /var" > var.dmp
        ssh $1 "doas dump -0 -a -u -h 0 -f - /var/www/htdocs" > htdocs.dmp
        ssh $1 "doas dump -0 -a -u -h 0 -f - /usr" > usr.dmp
        date > date
        md5 root.dmp home.dmp vmm.dmp mnt.dmp var.dmp htdocs.dmp usr.dmp date > md5sum
}
`rsync-all` will make a complete backup of the remote system you specify.
Source it, then call it on the server:
$ . .profile
$ rsync-all example.com

(:ifend:)