Open main menu

OpenVZ Virtuozzo Containers Wiki β

Changes

Ploop/Backup

3,175 bytes added, 16:46, 6 September 2015
no edit summary
[[File:Ploop-backup.png|300px|right|thumb|How backup via snapshot is done]]
This article explains how to do consistent file-based backups for [[ploop]] containers, using ploop snapshot feature. == Backup types ==There are two ways of doing backups, both have their pros and cons. * When doing an '''image backup''', one copies ploop image files directly. There can be only one big file, or maybe a few relatively big files. Copying a few big files (rather than a lot of small files) is faster because there's not too much metadata (file info) to be copied). Also, filesystem properties are fully preserving (since images containing the filesystem are copied). * When doing a '''file backup''', one copies individual container' files. This is more suitable if you want selective backups (such as only some directories/files). The following table summarizes pros and cons of both approaches. {| class="wikitable"! Characteristic! Image! File|-|| Incremental backups| {{Yes}} || {{Yes-No}}{{H:title|Requires tools such as rsnapshot|<sup>*</sup>}}|-|| Selective backups| {{No}} || {{Yes}}|-|| Faster full backup and restore| {{Yes}} || {{No}}|-| Preserve filesystem properties| {{Yes}} || {{No}}|-|| Compatible with pre-ploop backups| {{Yes-No}}{{H:title|It's always possible to create a new, same-size ploop device and then restore the files into the mounted ploop partition|<sup>*</sup>}} || {{Yes}}|-|| Restore individual files| {{Yes}} || {{Yes}}|} == Image-based backup == Assuming you have a running container identified by <code>$CTID</code>. The following needs to be done: <source lang="bash"># Known snapshot IDID=$(uuidgen)VE_PRIVATE=$(vzlist -H -o private $CTID) # Take a snapshot without suspending a CT and saving its configvzctl snapshot $CTID --id $ID --skip-suspend --skip-config # Perform a backup using your favorite backup tool# (cp is just an example)cp $VE_PRIVATE/root.hdd/* /backup/destination # Delete (merge) the snapshotvzctl snapshot-delete $CTID --id $ID</source> The following script implements the commands above and allows - when stored as <code>vzbackup</code> - to backup your container by executing the script in the following way: <code>./vzbackup 101 /backup/destination/</code> The script removes older backups and keeps only the latest four backups. You can change the number of backups kept by changing the four in <code>head -n-4</code> to the number of backups you would like to keep. <source lang="bash">#!/bin/bashif [ -z $1 -o -z $2 ]then echo "Usage: vzbackup CTID BACKUP-PATH" exit 1fi CTID=$1FOLDER=$2BACKUPPATH=$FOLDER/$CTID-$( date +%F_%H_%M ) #create BACKUP-PATHmkdir -p $BACKUPPATH # Known snapshot IDID=$(uuidgen)VE_PRIVATE=$(vzlist -H -o private $CTID) # Take a snapshot without suspending a CT and saving its configvzctl snapshot $CTID --id $ID --skip-suspend --skip-config # Perform a backup using your favorite backup tool# (cp is just an example)cp $VE_PRIVATE/root.hdd/* $BACKUPPATH/ # Delete (merge) the snapshotvzctl snapshot-delete $CTID --id $ID # remove old backupsrm -rf $( find $FOLDER -type d -name "$CTID*" -exec ls -d1rt "{}" + | head -n-4 ) echo "BACKUP FINISHED."</source> == File-based backup ==
Assuming you have a running container identified by <code>$CTID</code>. The following needs to be done:
# Perform a backup using your favorite backup tool
# (tar is just an example)
tar cf backup.tar $MNTDIR # tar with compression examples, see man page of tar for more options# tar cfJ backup.tar.xz $MNTDIR# tar cfz backup.tar.gz $MNTDIR
# Unmount the snapshot
</source>
For more information, see == See also == * [[Ploop]]* [[Man/vzctl.8#Snapshotting|vzctl(8), section Snapshotting]].
[[Category:ploopStorage]][[Category:HOWTO]]
14
edits