Editing Ploop/Backup

Jump to: navigation, search

Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision Your text
Line 1: Line 1:
[[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.
This article explains how to do consistent 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 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
 
</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/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."
 
</source>
 
 
 
== File-based backup ==
 
  
 
Assuming you have a running container identified by <code>$CTID</code>. The following needs to be done:
 
Assuming you have a running container identified by <code>$CTID</code>. The following needs to be done:
Line 116: Line 19:
 
# Perform a backup using your favorite backup tool
 
# Perform a backup using your favorite backup tool
 
# (tar is just an example)
 
# (tar is just an example)
tar cf backup.tar $MNTDIR
+
tar cf backup.tar.xz $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
 
# Unmount the snapshot
Line 129: Line 28:
 
</source>
 
</source>
  
== See also ==
+
For more information, see [[Man/vzctl.8#Snapshotting|vzctl(8), section Snapshotting]].
 
 
* [[Ploop]]
 
* [[Man/vzctl.8#Snapshotting|vzctl(8), section Snapshotting]].
 
  
[[Category: Storage]]
+
[[Category:ploop]]
[[Category: HOWTO]]
+
[[Category:HOWTO]]

Please note that all contributions to OpenVZ Virtuozzo Containers Wiki may be edited, altered, or removed by other contributors. If you don't want your writing to be edited mercilessly, then don't submit it here.
If you are going to add external links to an article, read the External links policy first!

To edit this page, please answer the question that appears below (more info):

Cancel Editing help (opens in new window)