Backup with rdiff-backup and rsnapshot



Similar documents
Automated Offsite Backup with rdiff-backup

Step One: Installing Rsnapshot and Configuring SSH Keys

Linux Backups. Russell Adams Linux Backups p. 1

Incremental Backup Script. Jason Healy, Director of Networks and Systems

Fast and efficient backups with rdiff-backup. Presented to the Fraser Valley Linux Users Group March 11, 2004 By Alan Bailward

CloudVPS Backup Operation Manual

Linux System Administration on Red Hat

4PSA Total Backup User's Guide. for Plesk and newer versions

CloudVPS Backup Manual. CloudVPS Backup Manual

NAS 259 Protecting Your Data with Remote Sync (Rsync)

Obackup v1.84 RC2 Documentation

System Administration. Backups

Attix5 Pro Server Edition

Other trademarks and Registered trademarks include: LONE-TAR. AIR-BAG. RESCUE-RANGER TAPE-TELL. CRONY. BUTTSAVER. SHELL-LOCK

CTERA Agent for Linux

A Quick Start Guide to Backup Technologies

How To Backup A Database On A Microsoft Powerpoint 3.5 (Mysqldump) On A Pcode (Mysql) On Your Pcode On A Macbook Or Macbook (Powerpoint) On

Open Source, Incremental Backup for Windows, Step By Step. Tom Scott BarCampLondon2, 17/2/07

Linux Disaster Recovery best practices with rear

XCloner Official User Manual

Chapter 1. Backup service

Log files management. Katarzyna KAPUSTA

Unless otherwise noted, all references to STRM refer to STRM, STRM Log Manager, and STRM Network Anomaly Detection.

MySQL Backups: From strategy to Implementation

Backing Up Your System With rsnapshot

Linux Boot Camp. Our Lady of the Lake University Computer Information Systems & Security Department Kevin Barton Artair Burnett

MySQL Backup and Security. Best practices on how to run MySQL on Linux in a secure way Lenz Grimmer <lenz@mysql.com>

ULTEO OPEN VIRTUAL DESKTOP V4.0

Lenz Grimmer

Amanda in 15 Minutes

How to backup a remote MySQL server with ZRM over the Internet

Fermilab Central Web Service Site Owner User Manual. DocDB: CS-doc-5372

File Protection using rsync. Setup guide

CS615 - Aspects of System Administration

How To Install Storegrid Server On Linux On A Microsoft Ubuntu 7.5 (Amd64) Or Ubuntu (Amd86) (Amd77) (Orchestra) (For Ubuntu) (Permanent) (Powerpoint

JBackpack Manual. Version Abstract

Relax and Recover (rear) Workshop

Rsync Internet Backup Whitepaper

Lightweight Virtualization: LXC Best Practices

BACKUP YOUR SENSITIVE DATA WITH BACKUP- MANAGER

Rsync Internet Backup Whitepaper

Data management on HPC platforms

MySQL backup and restore best practices. Roman Vynar September 21, 2015

This appendix describes the following procedures: Cisco ANA Registry Backup and Restore Oracle Database Backup and Restore

When Bad Things Happen to Good Amanda Backup Servers

Linux Disaster Recovery best practices with rear

How to Push CDR Files from Asterisk to SDReporter. September 27, 2013

Data Integrity: Backups and RAID

Online Backup Client User Manual

Linux command line. An introduction to the Linux command line for genomics. Susan Fairley

Online Backup Client User Manual

Secure File Transfer Installation. Sender Recipient Attached FIles Pages Date. Development Internal/External None 11 6/23/08

Acronis Backup & Recovery 10 Server for Linux. Update 5. Installation Guide

Xpresstransfer Online Backup Manager General Technical FAQ

Gladinet Cloud Backup V3.0 User Guide

Acronis Backup & Recovery 10 Server for Linux. Installation Guide

EVault for Data Protection Manager. Course 361 Protecting Linux and UNIX with EVault

1. Product Information

Online Backup Client User Manual Linux

The Linux System. o Updating without touching the user's files and configurations.

Easy Setup Guide 1&1 CLOUD SERVER. Creating Backups. for Linux

Backing Up TestTrack Native Project Databases

Reflection DBR USER GUIDE. Reflection DBR User Guide. 995 Old Eagle School Road Suite 315 Wayne, PA USA

Rsnapshot: A remote filesystem snapshot utility

1 Basic commands. 2 Terminology. CS61B, Fall 2009 Simple UNIX Commands P. N. Hilfinger

Unix Sampler. PEOPLE whoami id who

Back Up Linux And Windows Systems With BackupPC

The Network Backup Solution

RecoveryVault Express Client User Manual

Bacula The Network Backup Solution

How To Limit Volume In Bacula

Yocto Project Eclipse plug-in and Developer Tools Hands-on Lab

How To Backup On Ubuntu (Amd64) With Back In Time (Amd) On Windows Xp) On A Windows Xp (Amd32) On Ubunus On A Ubuntu

Rsync based backups. Rsync is essentially a directory syncing program.

Advanced SUSE Linux Enterprise Server Administration (Course 3038) Chapter 5 Manage Backup and Recovery

Recommended File System Ownership and Privileges

GestióIP IPAM v3.0 IP address management software Installation Guide v0.1

Avira Update Manager User Manual

Online Backup Linux Client User Manual

Partek Flow Installation Guide

Online Backup Client User Manual Mac OS

Online Backup Client User Manual Mac OS

Online Backup Client User Manual

FEEG Applied Programming 3 - Version Control and Git II

Rsync: The Best Backup System Ever


Decision Support System to MODEM communications

Adept Backup Solution - Configure Database MySQL Backup Schedule How to configure a MySQL Database Backup. Overview.

Bacula The Network Backup Solution

Setting-Up an Open-Source Backup Software Amanda Community in About 15 Minutes

Information Systems Application Administration Manual Request Tracker

The 2013 Experimental Warning Program (EWP) Virtual Weather Event Simulator (WES) Windows & Linux Installation Documentation

Acronis Backup & Recovery 10 Server for Linux. Installation Guide

Distributing File Data with Snap Enterprise Data Replicator (Snap EDR)

Maintain an effective data backup strategy. Weight 3

Managed Backup Service - Agent for Linux Release Notes

Workflow Templates Library

Connectivity using ssh, rsync & vsftpd

A SHORT INTRODUCTION TO DUPLICITY WITH CLOUD OBJECT STORAGE. Version

CA arcserve Unified Data Protection Agent for Linux

Transcription:

Backup with rdiff-backup and rsnapshot Christoph Mitasch & Thomas Niedermeier, Thomas-Krenn.AG @Cmitasch, @tktniedermeier Open Source Backup Conference 2015 September 29th-30th 2015, Cologne, Germany

Status quo Do you know rsnapshot? Yes No 2

Status quo Do you know rdiff-backup? Yes No 3

Status quo What do you use for backup now? Bareos / Bacula rsync other OSS commercial 4

Agenda intro (5') rsnapshot (15') rdiff-backup (15') so what (should I use) a comparison (5') 5

rsnapshot 6

rsnapshot? = rsync + hard links 7

Basics A filesystem snapshot utility GNU General Public Licence Based on rsync Using hard links for increments Written in perl / no module dependencies Local and remote via rsync over ssh Triggered by cron or anacron 8

Benefits Minimal disk space required Hourly, daily, weekly and monthly snapshots Direct access to every snapshot Easy to use Tested working on a lot of distributions 9

How to get? source-releases https://rsnapshot.org/downloads/ git $ git clone git://github.com/rsnapshot/rsnapshot.git Packages Debian, Ubuntu Fedora yum install rsnapshot ArchLinux apt-get install rsnapshot pacman -S rsnapshot Gentoo, FreeBSD, NetBSD, OpenBSD... 10

Structure A single configuration file /etc/rsnapshot.conf Key parameters snapshotroot retain daily weekly monthly verbose logfile <file> include <DIR> exclude <DIR> backup backupscript 11

Key parameter 1/3 snapshotroot By default: /var/cache/rsnapshot/ Retain policy retain hourly X retain daily X retain weekly X retain monthly X 12

Key parameter 2/3 Verbosity Parameter: verbose {1,5} Levels 1 5 From errors only to debug mode Logging Parameter: loglevel Parameter: logfile 13

Key parameter 3/3 Include folders/files Parameter: include Exclude folders/files Parameter: exclude Exclude folders of remote backups Add +rsynclongargs=+exclude=/some/folder/ 14

Local backup example /etc/rsnapshot.conf snapshotroot /var/cache/rsnapshot/ retain hourly 4 retain daily 7 retain weekly 4 retain monthly 3 verbose 3 loglevel 3 logfile backup /<DIR>/ /var/log/rsnapshot.log localhost/ 15

Remote backup example /etc/rsnapshot.conf rsynclongargs wrapper.sh -ev rsync-path=/home/rsnap/rsync- sshargs backup rsnap@<ip>:/<dir>/ -i /home/rsnap/.ssh/idrsa lesv2/<dir>/ 16

Pull backup best practice Own backup user e.g. rsnap Not root! Public key logins without password MySQL Backups backupscript /usr/bin/ssh -i /home/rsnap/.ssh/idrsa rsnap@<ipaddress> 'mysqldump --all-databases gzip --rsyncable > ~/alldb.sql.gz' unused1/ Placed above the backup entries of this server backupscript will be executed and the zipped file will be backuped with the backup /home/ command 17

Automation always on desktop and not always on cronjobs anacron for more details see: tkwiki.cc/rsnapshot 18

Hard link example 1/2 ls -li hourly.0/localhost/etc/hosts 28147 -rw-r--r-- 2 root root / 186 Jul 10 2014 / hourly.0/localhost/etc/hosts ls -li hourly.1/localhost/etc/hosts hourly.1/localhost/etc/hosts 19

Hard link example 2/2 # ls hourly.0 hourly.1 # ls -li hourly.*/localhost/etc/hosts 28147 -rw-r--r-- 2 root root 186 Jul 10 2015 hourly.0/localhost/etc/hosts 28147 -rw-r--r-- 2 root root 186 Jul 10 2015 hourly.1/localhost/etc/hosts # du -sh hourly.* 47M hourly.0 908K hourly.1 20

Tools 1/3 rsnapshot du 21

Tools 2/3 rsnapshot diff 22

Tools 3/3 Check the configuration! root@rsnapshot-test:~# rsnapshot configtest Syntax OK 23

how rsnapshot runs 24

How rsnapshots run cat /var/log/rsnapshot.log 25

remove oldest hourly increment remaining hourlys by 1 create lockfile cp -al of hourly.0 to hourly.1 start rsnapshot /usr/bin/rsnapshot hourly: started run rsync on hourly.0 add info to logfile delete lockfile set new timestamp on hourly.0 26

remove oldest hourly increment remaining hourlys by 1 create lockfile cp -al of hourly.0 to hourly.1 start rsnapshot echo 5583 > /var/run/rsnapshot.pid run rsync on hourly.0 add info to logfile delete lockfile set new timestamp on hourly.0 27

remove oldest hourly increment remaining hourlys by 1 create lockfile cp -al of hourly.0 to hourly.1 start rsnapshot /bin/rm -rf /var/cache/rsnapshot/hourly.5/ run rsync on hourly.0 add info to logfile delete lockfile set new timestamp on hourly.0 28

remove oldest hourly increment remaining hourlys by 1 create lockfile cp -al of hourly.0 to hourly.1 start rsnapshot mv /var/cache/rsnapshot/hourly.4/ /var/cache/rsnapshot/hourly.5/ mv /var/cache/rsnapshot/hourly.3/ /var/cache/rsnapshot/hourly.4/ mv /var/cache/rsnapshot/hourly.2/ /var/cache/rsnapshot/hourly.3/ mv /var/cache/rsnapshot/hourly.1/ /var/cache/rsnapshot/hourly.2/ run rsync on hourly.0 add info to logfile delete lockfile set new timestamp on hourly.0 29

remove oldest hourly increment remaining hourlys by 1 create lockfile start rsnapshot /bin/cp -al /var/cache/rsnapshot/hourly.0 /var/cache/rsnapshot/hourly.1 hourly.0 copied to hourly.1 with archiving and hard link option cp -al of hourly.0 to hourly.1 run rsync on hourly.0 add info to logfile delete lockfile set new timestamp on hourly.0 30

remove oldest hourly increment remaining hourlys by 1 create lockfile /usr/bin/rsync -av --delete --numeric-ids --relative --deleteexcluded /home /var/cache/rsnapshot/hourly.0/localhost/ start rsnapshot /usr/bin/rsync -av --delete --numeric-ids --relative --deleteexcluded /etc /var/cache/rsnapshot/hourly.0/localhost/ cp -al of hourly.0 to hourly.1 /usr/bin/rsync -av --delete --numeric-ids --relative --deleteexcluded /usr/local /var/cache/rsnapshot/hourly.0/localhost/ run rsync on hourly.0 add info to logfile delete lockfile set new timestamp on hourly.0 31

remove oldest hourly increment remaining hourlys by 1 create lockfile cp -al of hourly.0 to hourly.1 start rsnapshot touch /var/cache/rsnapshot/hourly.0/ run rsync on hourly.0 add info to logfile delete lockfile set new timestamp on hourly.0 32

remove oldest hourly increment remaining hourlys by 1 create lockfile cp -al of hourly.0 to hourly.1 start rsnapshot rm -f /var/run/rsnapshot.pid run rsync on hourly.0 add info to logfile delete lockfile set new timestamp on hourly.0 33

remove oldest hourly increment remaining hourlys by 1 create lockfile cp -al of hourly.0 to hourly.1 start rsnapshot /usr/bin/logger -i -p user.info -t rsnapshot /usr/bin/rsnapshot hourly: completed successfully run rsync on hourly.0 add info to logfile delete lockfile set new timestamp on hourly.0 34

Limitations and hints rsnapshot.conf: elements separated by tabs Trailing slash on the end of directory entries Rsnapshot directory: chmod 700 & owned by root (if rsnapshot is run by root) By default only pull backups http://linux.die.net/man/1/rsnapshot A lot more hints in the notes section 35

Push backups really not possible? rsnapshot server Attach a rsync daemon (with a configuration) to the public SSH Key in authorizedkeys Configuration of the rsync daemon sets the backup directory Via post-xfer exec a script containing rsnapshot will be executed If more server should be managed, use a configuration independent of the /etc/rsnapshot.conf for the backup scheme How it's executed by the client The backup client synchronizes via rsync and SSH the data to the backup server Via authorizedkeys the rsync daemon and the post-exec script will be triggered a snapshot will be created Disadvantage Neccesity intermediate step through rsync Data is stored double, not very space efficient 36

Restore? scp Copy via scp the favored folders or single files from the server rsync -avr Sync the folder back to your machine sshfs Mount the folder from the rsnapshot server via ssh 37

Monitoring? Plugins available Icinga/Nagios checkrsnapshot on github Compatible with TKmon through NRPE 38

Thomas Christoph 39

rdiff-backup A remote incremental backup of all your files could be as easy as "rdiff-backup / host.net::/target-dir" source: http://www.nongnu.org/rdiff-backup/ 40

like rsync but with increments based on reverse diffs client dir1/ dir1/file1-1 dir1/file1-2 dir9/ dir9/file9-1 backup server dir1/ dir1/file1-1 dir1/file1-2 dir9/ dir9/file9-1 rdiff-backup-data/ rdiff-backup-data/increments/ dir1 dir1/file1.txt.2015-09-14t15:27:37+02:00.diff.gz dir1/file1.txt.2015-09-14t15:28:59+02:00.snapshot.gz dir1/file2.txt.2015-09-14t15:27:37+02:00.missing dir1.2015-09-14t15:27:37+02:00.dir dir1.2015-09-14t15:28:59+02:00.dir file1.txt.2015-09-14t15:27:37+02:00.snapshot.gz file2.txt.2015-09-14t15:27:37+02:00.missing file3.txt.2015-09-14t15:31:12+02:00.missing 41

rdiff-backup Basics written in Python, a little C based on librsync version 0.1 released 07/2001 latest version 1.2.8 released 03/2009 well tested on UNIX for MacOS: extended attributes and ACLs Debian/Ubuntu: apt-get install rdiff-backup CentOS/RHEL: 1.2.8 in EPEL 6 & 7 SUSE: SLES 11 SP3/4, SLES12, opensuse 42

backup examples local local rdiff-backup /dir1 /backupdir local remote (via SSH) rdiff-backup /local-dir hostname.net::/remote-dir remote local rdiff-backup hostname.net::/remote-dir /local-dir remote remote rdiff-backup sourcehost.net::/source-dir desthost.net::/dest-dir 43

restore examples copy from last backup run's mirror restore 10 days ago: rdiff-backup -r 10D host.net::/remote-dir/file /local/file restore from increment file: rdiff-backup host.net::/remote-dir/rdiff-backupdata/increments/file.2015-09-30t08:21:41-07:00.diff.gz /local/file example MySQL dump uncompressed Thomas-Krenn-Wiki dump: 207 MB daily diff ~300 600 KB wiki/rdiff-backup-data/increments/backup-mysql# ls -lh tail -rwx------ 1 root root 368K Sep 12 03:25 wiki.sql.2015-09-12t03:28:52+02:00.diff.gz -rwx------ 1 root root 353K Sep 13 03:25 wiki.sql.2015-09-13t03:09:17+02:00.diff.gz -rwx------ 1 root root 621K Sep 14 03:25 wiki.sql.2015-09-14t03:16:53+02:00.diff.gz -rwx------ 1 root root 483K Sep 15 03:25 wiki.sql.2015-09-15t03:22:26+02:00.diff.gz -rwx------ 1 root root 557K Sep 16 03:25 wiki.sql.2015-09-16t03:17:51+02:00.diff.gz -rwx------ 1 root root 480K Sep 17 03:25 wiki.sql.2015-09-17t03:20:00+02:00.diff.gz 44

maintenance examples 1/2 list increments wiki# rdiff-backup -l. Found 35 increments:... increments.2015-09-17t03:20:00+02:00.dir increments.2015-09-18t03:19:38+02:00.dir increments.2015-09-19t03:38:32+02:00.dir increments.2015-09-20t03:08:53+02:00.dir increments.2015-09-21t03:16:06+02:00.dir Current mirror: Tue Sep 22 03:18:57 2015 Thu Fri Sat Sun Mon Sep Sep Sep Sep Sep 17 18 19 20 21 03:20:00 03:19:38 03:38:32 03:08:53 03:16:06 2015 2015 2015 2015 2015 remove increments older than 2 months rdiff-backup --remove-older-than 2M host.net::/remote-dir keep only last 30 backup sessions rdiff-backup --remove-older-than 30B host.net::/remote-dir exclude / include rdiff-backup --exclude /tmp --exclude /proc --exclude /sys / host.net::/remote-dir 45

maintenance examples 2/2 list changed files wiki# rdiff-backup --list-changed-since 5D. changed backupmysql/wiki.sql... changed new new new www/de/wikide/images/thumb/1/15/fotowernerfischer.jpg www/de/wikide/images/thumb/1/15/fotowernerfischer.jpg/100px-fotowernerfischer.jpg www/de/wikide/images/thumb/1/15/fotowernerfischer.jpg/150px-fotowernerfischer.jpg www/de/wikide/images/thumb/1/15/fotowernerfischer.jpg/200px-fotowernerfischer.jpg... when rdiff-backup gets interrupted (killed, network, ) normally next run automatically fixes that Previous backup seems to have failed, regressing destination now. Regressing to Tue Sep 22 12:26:17 2015 if that does not work restore from backup's backup ;-) try http://www.timedicer.co.uk/programs/help/rdiff-backup-regress.sh.php 46

Metadata and Logfiles folder1/ folder1/file1-1 folder1/file1-2 folder9/ folder9/file9-1 rdiff-backup-data/ rdiff-backup-data/ accesscontrollists.time.snapshot backup.log charstoquote currentmirror.time.data (PID) errorlog.time.data extendedattributes.time.snapshot filestatistics.time.data.gz increments/ increments.time.dir mirrormetadata.time.snapshot.gz restore.log sessionstatistics.time.data 47

Metadata and Logfiles rdiff-backup-data/ currentmirror.time.data (PID) filestatistics.time.data.gz increments mirrormetadata.time.snapshot.gz restore.log sessionstatistics.time.data mirrormetadata.time.snapshot.gz File. Type dir ModTime 1425809355 Uid 0 Uname root Gid 0 Gname root Permissions 493 File bin Type dir ModTime 1418727096 Uid 0 [...] echo 'obase=8;493' bc 755 48

Metadata and Logfiles rdiff-backup-data/ currentmirror.time.data (PID) filestatistics.time.data.gz increments mirrormetadata.time.snapshot.gz restore.log sessionstatistics.time.data sessionstatistics.time.data StartTime 1441144877.00 (Wed Sep 2 00:01:17 2015) EndTime 1441147057.65 (Wed Sep 2 00:37:37 2015) ElapsedTime 2180.65 (36 minutes 20.65 seconds) SourceFiles 225971 SourceFileSize 21649997461 (20.2 GB) [...] NewFiles 1625 NewFileSize 266819836 (254 MB) [...] ChangedFiles 3335 [...] TotalDestinationSizeChange 336682009 (321 MB) Errors 0 for more details see: tkwiki.cc/rdiffmeta 49

Do's and Dont's separate backup repos for different time frames (e.g. daily, weekly, yearly...) backup compressed or encrypted files (no useful rdiff) exclude files that change often and/or are not essential very short backup intervals (leads to long restore times).deb,.rpm, /var/lib/php5/, use uncompressed files (e.g. MySQL-Dump) for efficient diff or use "gzip --rsyncable" fixing metadata by hand without having a backup ;-) no regular backup of rdiff-backup archives use timestamps for logfiles e.g. dateext for logrotate monitor data growth rate 50

Add Ons FUSE Mount http://code.google.com/p/rdiff-backup-fs/ GUI (not official) http://rdiffbackupweb.sourceforge.net/ http://www.patrikdufresne.com/en/rdiffweb/ http://www.nongnu.org/jbackpack/index.html Icinga Plugin with perfdata patch tkwiki.cc/rdiffmonitoring 51

so what? 52

so what should I use? a comparison! 53

Comparison rdiff-backup rsnapshot Data transfer rsync via librsync directly via rsync Data storing older versions stored as increments/deltas unchanged files saved as hard-links across snapshots Data access only newest version directly accessible all data directly accessible Removal of backups --remove-older-than retain rule Efficiency highly efficient through compressed deltas more space needed when files change often Speed slower (CPU intensive) fast through hard links Push backups yes not by defaultrdiff-backup 54

Questions? 55

Questions? no more??? 56

Thank you and have fun with backups and restores ;) 57

Images https://www.flickr.com/photos/shardayyy/4793995249/ https://www.flickr.com/photos/jakerust/16846257921 https://www.flickr.com/photos/polsifter/4047982682 https://www.flickr.com/photos/kevandotorg/6229660191 https://www.flickr.com/photos/borispumps/5192678983 https://www.flickr.com/photos/intelfreepress/6722295999 http://www.hdwallpapers.in/beachhorizon-wallpapers.html photo of Weissensee on slide 39 taken by Christoph Mitasch 58