Ploop/Backup

From OpenVZ Linux Containers Wiki
< Ploop(Redirected from Ploop/backup)
Jump to: navigation, search
How backup via snapshot is done

This article explains how to do consistent backups for ploop containers, using ploop snapshot feature.

Contents

[edit] 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.

Characteristic Image File
Incremental backups Yes Yes/No*
Selective backups No Yes
Faster full backup and restore Yes No
Preserve filesystem properties Yes No
Compatible with pre-ploop backups No Yes
Restore individual files Yes Yes

[edit] Image-based backup

Assuming you have a running container identified by $CTID. The following needs to be done:

# Known snapshot ID
ID=$(uuidgen)
VE_PRIVATE=$(vzlist -H -o private $CTID)
 
# Take a snapshot without suspending a CT and saving its config
vzctl 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 snapshot
vzctl snapshot-delete $CTID --id $ID

The following script implements the commands above and allows - when stored as vzbackup - to backup your container by executing the script in the following way:

./vzbackup 101 /backup/destination/

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 head -n-4 to the number of backups you would like to keep.

#!/bin/bash
if [ -z $1 -o -z $2 ]
then
	echo "Usage: vzbackup CTID BACKUP-PATH"
	exit 1
fi
 
CTID=$1
FOLDER=$2
BACKUPPATH=$FOLDER/$CTID-$( date +%F_%H_%M )
 
#create BACKUP-PATH
mkdir -p $BACKUPPATH
 
# Known snapshot ID
ID=$(uuidgen)
VE_PRIVATE=$(vzlist -H -o private $CTID)
 
# Take a snapshot without suspending a CT and saving its config
vzctl 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 snapshot
vzctl snapshot-delete $CTID --id $ID
 
# remove old backups
rm -rf $( find $FOLDER -type d -name "$CTID*" -exec ls -d1rt "{}" + | head -n-4  )
 
echo "BACKUP FINISHED."

[edit] File-based backup

Assuming you have a running container identified by $CTID. The following needs to be done:

# Known snapshot ID
ID=$(uuidgen)
 
# Directory used to mount a snapshot
MNTDIR=./mnt
mkdir $MNTDIR
 
# Take a snapshot without suspending a CT and saving its config
vzctl snapshot $CTID --id $ID --skip-suspend --skip-config
 
# Mount the snapshot taken
vzctl snapshot-mount $CTID --id $ID --target $MNTDIR
 
# Perform a backup using your favorite backup tool
# (tar is just an example)
tar cf backup.tar.xz $MNTDIR
 
# Unmount the snapshot
vzctl snapshot-umount $CTID --id $ID
 
# Delete (merge) the snapshot
vzctl snapshot-delete $CTID --id $ID

[edit] See also

Personal tools
Namespaces

Variants
Actions
Navigation
Other sites
Donate
Tools