]> git.proxmox.com Git - pve-manager.git/blob - bin/vzdump
9a5afe7e3fafc986d28829c46794b3ed5d583073
[pve-manager.git] / bin / vzdump
1 #!/usr/bin/perl -w -T
2
3 use strict;
4 use PVE::SafeSyslog;
5 use PVE::INotify;
6 use PVE::RPCEnvironment;
7 use PVE::CLIHandler;
8 use PVE::API2::VZDump;
9
10 use Data::Dumper; # fixme: remove
11
12 use base qw(PVE::CLIHandler);
13
14 $ENV{'PATH'} = '/sbin:/bin:/usr/sbin:/usr/bin';
15
16 initlog('vzdump');
17
18 die "please run as root\n" if $> != 0;
19
20 PVE::INotify::inotify_init();
21
22 my $rpcenv = PVE::RPCEnvironment->init('cli');
23
24 $rpcenv->init_request();
25 $rpcenv->set_language($ENV{LANG});
26 $rpcenv->set_user('root@pam');
27
28
29 my $cmddef = [ 'PVE::API2::VZDump', 'vzdump', 'vmid', undef,
30 sub {
31 my $upid = shift;
32 my $status = PVE::Tools::upid_read_status($upid);
33 exit($status eq 'OK' ? 0 : -1);
34 }];
35
36 push @ARGV, 'help' if !scalar(@ARGV);
37
38 PVE::CLIHandler::handle_simple_cmd($cmddef, \@ARGV, undef, $0);
39
40 exit 0;
41
42 __END__
43
44 =head1 NAME
45
46 vzdump - backup utility for virtual machine
47
48 =head1 SYNOPSIS
49
50 =include synopsis
51
52 =head1 DESCRIPTION
53
54 vzdump is an utility to make consistent snapshots of running virtual
55 machines (VMs). It basically creates a tar archive of the VM private area,
56 which also includes the VM configuration files. vzdump currently
57 supports OpenVZ and QemuServer VMs.
58
59 There are several ways to provide consistency (option C<mode>):
60
61 =over 2
62
63 =item C<stop> mode
64
65 Stop the VM during backup. This results in a very long downtime.
66
67 =item C<suspend> mode
68
69 For OpenVZ, this mode uses rsync to copy the VM to a temporary
70 location (see option --tmpdir). Then the VM is suspended and a second
71 rsync copies changed files. After that, the VM is started (resume)
72 again. This results in a minimal downtime, but needs additional space
73 to hold the VM copy.
74
75 For QemuServer, this mode work like C<stop> mode, but uses
76 suspend/resume instead of stop/start.
77
78 =item C<snapshot> mode
79
80 This mode uses LVM2 snapshots. There is no downtime, but snapshot mode
81 needs LVM2 and some free space on the corresponding volume group to
82 create the LVM snapshot.
83
84 =back
85
86 =head1 BACKUP FILE NAMES
87
88 Newer version of vzdump encodes the virtual machine type and the
89 backup time into the filename, for example
90
91 vzdump-openvz-105-2009_10_09-11_04_43.tar
92
93 That way it is possible to store several backup into the same
94 directory. The parameter C<maxfiles> can be used to specify the maximal
95 number of backups to keep.
96
97 =head1 RESTORE
98
99 The resulting tar files can be restored with the following programs.
100
101 =over 1
102
103 =item vzrestore: OpenVZ restore utility
104
105 =item qmrestore: QemuServer restore utility
106
107 =back
108
109 For details see the corresponding manual pages.
110
111 =head1 CONFIGURATION
112
113 Global configuration is stored in /etc/vzdump.conf.
114
115 tmpdir: DIR
116 dumpdir: DIR
117 storage: STORAGE_ID
118 mode: snapshot|suspend|stop
119 bwlimit: KBPS
120 ionize: PRI
121 lockwait: MINUTES
122 stopwait: MINUTES
123 size: MB
124 maxfiles: N
125 script: FILENAME
126
127 =head1 HOOK SCRIPT
128
129 You can specify a hook script with option C<--script>. This script is called at various phases of the backup process, with parameters accordingly set. You can find an example in the documentation directory (C<vzdump-hook-script.pl>).
130
131 =head1 EXCLUSIONS (OpenVZ only)
132
133 vzdump skips the following files wit option --stdexcludes
134
135 /var/log/.+
136 /tmp/.+
137 /var/tmp/.+
138 /var/run/.+pid
139
140 You can manually specify exclude paths, for example:
141
142 # vzdump 777 --exclude-path C</tmp/.+> --exclude-path C</var/tmp/.+>
143
144 (only excludes tmp directories)
145
146 Configuration files are also stored inside the backup archive (/etc/vzdump), and will be correctly restored.
147
148 =head1 LIMITATIONS
149
150 VZDump does not save ACLs.
151
152 =head1 EXAMPLES
153
154 Simply dump VM 777 - no snapshot, just archive the VM private area and configuration files to the default dump directory (usually /vz/dump/).
155
156 # vzdump 777
157
158 Use rsync and suspend/resume to create an snapshot (minimal downtime).
159
160 # vzdump 777 --mode suspend
161
162 Backup all VMs and send notification mails to root and admin.
163
164 # vzdump --all --mode suspend --mailto root --mailto admin
165
166 Use LVM2 to create snapshots (no downtime).
167
168 # vzdump 777 --dumpdir /mnt/backup --mode snapshot
169
170 Backup more than one VM (selectively)
171
172 # vzdump 101 102 103 --mailto root
173
174 Backup all VMs excluding VM 101 and 102
175
176 # vzdump --mode suspend --exclude 101,102
177
178 Restore an OpenVZ machine to VM 600
179
180 # vzrestore /mnt/backup/vzdump-openvz-777.tar 600
181
182 Restore an Qemu/KVM machine to VM 601
183
184 # qmrestore /mnt/backup/vzdump-qemu-888.tar 601
185
186 Clone an existing container 101 to container 300 using pipes
187
188 # vzdump 101 --stdout|vzrestore - 300
189
190 =head1 SEE ALSO
191
192 vzrestore(1) qmrestore(1)
193
194 =include pve_copyright