# Using Openrsync [OpenRsync](https://www.openrsync.org/) is OpenBSD's rewrite of rsync. [[openrsync](/https://man.openbsd.org/openrsync) is designed to be lightweight and simple. It may, however, be a little buggy. [OpenRsync](https://www.openrsync.org/) is OpenBSD's rewrite of rsync. [[openrsync](/https://man.openbsd.org/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:)