Commit Graph

212 Commits

Author SHA1 Message Date
Thomas Lamprecht
ff119724ee vdzump: whitespace/extra-lines clean up
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2021-06-18 14:35:25 +02:00
Thomas Lamprecht
b4546c7ec2 vzdump: log the count of backups we pruned#
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2021-06-18 13:31:27 +02:00
Thomas Lamprecht
4922b7a91c vzdump: make log for stop-mode guest-type agnostic
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2021-06-18 13:24:47 +02:00
Thomas Lamprecht
ca155141b0 vdzump: log with what retention settings we prune
may not be obvious from the task log alone if we're relying on the
retention setting configured on a storage or the ones from local
node's vzdump.conf

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2021-06-17 17:55:54 +02:00
Fabian Ebner
2cacb88049 Revert "VZDump: add TARFILE to environment for hookscripts"
This reverts commit 5d0d14f179.

Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
2021-06-09 10:08:58 +02:00
Fabian Ebner
173f8c49ef vzdump: remove deprecated size parameter
Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
2021-06-08 15:22:52 +02:00
Fabian Grünbichler
58f763e1aa fix #3430: handle hook script paths better
if passing the hook script command as string, it might get interpreted
as shell command with side-effects. this is pretty harmless, since only
root is allowed to set the script parameter anyway, but making it more
robust and future-proof does not hurt.

tested with a reproducer of "/bin/echo $(touch $(whoami))" as script
parameter, with a file with that name existing, being executable and
having the following contents:

----8<----
echo "hello from hook script"
---->8----

without this change, the hookscript itself is not executed, but
'/bin/sh -c "/bin/echo $(touch $(whoami)) job"' and similar calls are,
which cause the file 'root' to be touched in the current working
directory of the vzdump process (or task worker).

with this change, the file is executed as is without any side-effects of
shell commands in the file name, and the 'hello from hook script' lines
are printed whenever the hook script is called by vzdump.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2021-05-17 09:49:34 +02:00
Fabian Ebner
875c2e5aae vzdump: getlock: return lock file handle and let the caller close it
so it doesn't get out of scope too early.

Regression introduced by 5620e5761e as pointed
out by Fabian Grünbichler.

Reported in the community forum:
https://forum.proxmox.com/threads/limit-simultaneous-backup-jobs.87489

Suggested-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
2021-04-12 14:36:08 +02:00
Fabian Ebner
164651dab6 vzdump: storage info: move out activate storage call
Otherwise storage_info() cannot be used for (at least) PBS storages from an API
call without 'protected => 1', because the password cannot be read from
'/etc/pve/priv'. Note that the function itself does not need the storage to be
active, because it only uses storage_config() and get_backup_dir().

AFAICT new() is the only existing user of this function and can be responsible
for activating the storage itself.

Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
2021-03-31 15:40:13 +02:00
Fabian Ebner
914e86ccbd partially fix #2745: vzdump: use default for remove parameter
The initial default from the $confdesc is 1 anyways, and like
this changing the default in /etc/vzdump.conf to 0 actually works.

Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2021-03-05 21:31:32 +01:00
Thomas Lamprecht
1353489ed2 vzdump: indentation and whitespace fixes
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2021-02-25 19:21:18 +01:00
Thomas Lamprecht
94009776df vzdump: avoid single argument bless
reported by perlcritic.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2021-02-25 19:19:15 +01:00
Thomas Lamprecht
5620e5761e vzdump: avoid bareword file handles and two argument open
reported by perlcritic. The bareword file handles will be depreacated
in the future in perl, so start replacing now..

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2021-02-25 19:17:42 +01:00
Thomas Lamprecht
e8d9e1ed17 vzdump: PBS: make task log upload error non-fatal
We want to continue in that case, this is not really essential so
only warn about it.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2021-02-25 13:59:45 +01:00
Fabian Ebner
f8ed6af80d vzdump: refactor parsing mailto so it can be mocked
Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
Reviewed-By: Dominik Csapak <d.csapak@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2021-02-19 16:33:33 +01:00
Fabian Ebner
ecc08c34ea vzdump: avoid parsing already parsed option
When a job is updated, verify_vzdump_parameters() is called twice. This led to
parse_property_string being called with the already parsed option.

Reported on the pve-user mailing list:
https://lists.proxmox.com/pipermail/pve-user/2021-January/172258.html

Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
2021-01-26 18:47:48 +01:00
Fabian Ebner
5a9b791b47 vzdump: fix error format for errors coming from storage_info
Errors from storage_info() are newline-terminated, because perl would append
the line number otherwise. Chomp those errors, because sendmail() relies
on the presence of a newline to decide if it's multiple problems or only one.

Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
2020-12-21 15:29:02 +01:00
Fabian Ebner
213e0eb263 vzdump: sendmail: fix html by closing the tags
Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
2020-12-21 15:29:02 +01:00
Fabian Ebner
dd5d80f56a vzdump: defaults: convert to prune-backups early enough
Fixes the case where reading from /etc/vzdump.conf fails.

Also convert the options read from /etc/vzdump.conf before the loop. That
avoids showing a wrong warning when 'prune-backups' is configured in
/etc/vzdump.conf, and maxfiles isn't. Previously, because 'maxfiles' from the
schema defaults was automatically set, the call to parse_prune_backups_maxfiles
after the loop threw the warning that both options are defined.

Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
2020-12-21 15:29:02 +01:00
Fabian Ebner
fb6871fc7f vzdump: use debugmsg instead of warn
Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
2020-12-07 09:31:12 +01:00
Fabian Ebner
f1dd762969 vzdump: warn when both storage and dumpdir are defined in vzdump.conf
and prefer storage, because the storage configuration might contain more
settings. Warning is preferable over dying, because all backups would be
affected (even if they don't use the vzdump.conf parameters) and the settings
could've been compatible (i.e. dumpdir being the storage's dump dir). Previously
one of the two options would randomly be chosen in the loop in new(), because of
perl hash iteration.

Reported here: https://forum.proxmox.com/threads/vzdump-times-out-very-often-on-zfs-storage-pool.80035/post-354277

Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
2020-12-07 09:31:12 +01:00
Fabian Ebner
acc963c3e5 vzdump: defaults: correctly parse prune-backups and convert maxfiles
Also simplify handling in new(), now that we never have maxfiles there anymore.

Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
2020-12-02 13:15:52 +01:00
Fabian Ebner
1c56bcf39d vzdump: convert maxfiles CLI parameter to prune-backups
in preparation to clean up handling in new().

Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
2020-12-02 13:15:52 +01:00
Fabian Ebner
e2aac8cc8c vzdump: storage_info: adapt to new maxfiles backend behavior
It's automatically converted to prune-backups when using storage_config() now.

Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
2020-12-02 13:15:52 +01:00
Fabian Ebner
b63baa391c cleanup keep-all handling
If keep-all is set to 0, adding it doesn't make a difference,
if the key is not in the hash, it won't show up in the 'values'.

Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
2020-11-23 16:03:08 +01:00
Fabian Ebner
1db8529eb2 vzdump: adapt to new keep-all prune option
Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
2020-11-23 16:03:08 +01:00
Dominic Jäger
2cc64d0e42 vzdump mail: Refactor text part
Less lines exeeding the character limit, less nesting, less duplicate code,
more readable sprintf arguments.

Co-authored-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Signed-off-by: Dominic Jäger <d.jaeger@proxmox.com>
2020-11-17 14:13:11 +01:00
Fabian Ebner
b15bdd864e fix maxfiles behavior
Commit b64dd8c8a5 hard-coded 0 as the default
for maxfiles in the --storage case, but the actual default should be the
value from read_vzdump_defaults(), which obtains the value from
/etc/vzdump.conf or the VZDump schema if the value has not been modified in
that file. The initial default from the schema is 1, not 0.
Tested on PVE 6.1 to verify that behavior.

Move the sanity check for zero-ness to where we have the final value for
maxfiles. Like this, we also have an implicit definedness check and more
importantly, it is more future-proof in case we ever allow maxfiles 0 in the
VZDump schema itself.

Also, force conversion to int to be extra safe.

Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
2020-11-16 18:18:32 +01:00
Dominic Jäger
d0610a6b4f vzdump mail: fix #3136: Add name to plain/text part
The html/text part already has VMID NAME STATUS TIME..., but the text part only
had VMID STATUS TIME... so far. Therefore, add the missing "name" column.

Limit the length of names so that the content of the following columns remains
aligned to the headings. Note that (like before, too) this only works with
monospaced fonts.

Signed-off-by: Dominic Jäger <d.jaeger@proxmox.com>
2020-11-16 18:06:12 +01:00
Stefan Reiter
b64dd8c8a5 restore default value of 0 for remove/maxfiles
If neither the 'remove' option of vzdump nor the 'maxfiles' option in
the storage config are set, assume a value of 0, i.e. do not delete
anything and allow unlimited backups.

Restores previous behaviour that was broken in e6946086e3.

Also fixes a warning about using '== 0' on a non-number type.

Signed-off-by: Stefan Reiter <s.reiter@proxmox.com>
2020-11-05 16:29:00 +01:00
Thomas Lamprecht
33b8ed2ed0 vzdump: fix regression with keep forever logic
fixes commit f354fe47fc, which changed
the logic to the newer storage prune helpers, but those are designed
in the spirits of PBS, with a keep-option not set meaning to keep
none.

This does not respects the storage special handling of maxfiles.
While in the API/CLI that option must be > 0m in can be zero when set
in a storage configuration entry, and then it means keep all. So, set
the internal remove option to false if that special condition is met.

This would have been a clearer, and less prone to changes,
implementation to begin with.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2020-11-01 20:11:03 +01:00
Thomas Lamprecht
77aea6ebcc vzdump: avoid passing zero to prune in legacy handling of maxfiles
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2020-10-23 10:05:28 +02:00
Fabian Ebner
f647d0fc01 sort the skip list numerically
The skip list was not always sorted if there were external IDs for multiple
external nodes.

Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
2020-10-22 16:29:26 +02:00
Fabian Ebner
4d73f0e254 order guest IDs numerically in exec_backup
The assumption that they already are sorted is no longer valid,
because of the IDs for non-existent guests.

Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
2020-10-22 16:29:26 +02:00
Fabian Ebner
7f87414894 backup: include IDs for non-existent guests
Like this, there will be a backup task (within the big worker task)
for such IDs, which will then visibly (i.e. also visible in the
notification mail) fail with, e.g.:
unable to find VM '123'

In get_included_guests, the key '' was chosen for the orphaned IDs,
because it cannot possibly denote a nodename.

Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
2020-10-22 16:29:26 +02:00
Fabian Ebner
d51f5a1e8d only use plugin after truthiness check
Commit 1a87db9e56 introduced
a usage of plugin before the truthiness check for plugin.

At the moment it might not be possible to trigger this anymore,
because of the guest inclusion rework that happened later on.
But to make tasks for inexistent guest IDs visibly fail again,
this check will be necessary. Also, to get the error message in
the mail, it needs to fail inside the eval block.

Thus, keep the check in the eval block and move the block of code
using the plugin to below the check.

Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
2020-10-22 16:29:26 +02:00
Fabian Ebner
b03093fedb remove unused variable
Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
2020-10-22 16:29:26 +02:00
Dominik Csapak
dfb1611534 partially fix #3056: namespace vzdump tmpdir with vmid
this fixes an issue where a rogue running backup would upload the vm
config of a later backup in a backup job

instead now that directory gets deleted and the config is not
available anymore

we cannot really keep those directories around until the end of the
backup job, since we temporarily save ct contents there, which could get
large very fast

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2020-10-22 16:29:26 +02:00
Fabian Ebner
f354fe47fc Always use prune-backups instead of maxfiles internally
For the use case with '--dumpdir', it's not possible to call prune_backups
directly, so a little bit of special handling is required there.

Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
2020-09-30 10:56:30 +02:00
Fabian Ebner
e6946086e3 Allow prune-backups as an alternative to maxfiles
and make the two options mutally exclusive as long
as they are specified on the same level (e.g. both
from the storage configuration). Otherwise prefer
option > storage config > default (only maxfiles has a default currently).

Defines the backup limit for prune-backups as the sum of all
keep-values.

There is no perfect way to determine whether a
new backup would trigger a removal with prune later:
1. we would need a way to include the not yet existing backup
   in a 'prune --dry-run' check.
2. even if we had that check, if it's executed right before
   a full hour, and the actual backup happens after the full
   hour, the information from the check is not correct.

So in some cases, we allow backup jobs with remove=0, that
will lead to a removal when the next prune is executed.
Still, the job with remove=0 does not execute a prune, so:
1. There is a well-defined limit.
2. A job with remove=0 never removes an old backup.

Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
2020-09-30 10:56:30 +02:00
Dominic Jäger
dc6e0a523a vzdump: Fix typo in UPID error message
Signed-off-by: Dominic Jäger <d.jaeger@proxmox.com>
2020-09-29 11:09:38 +02:00
Fabian Ebner
de2d177ec6 make use of archive_info and archive_remove
to avoid some code duplication.

Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
2020-08-20 17:41:04 +02:00
Aaron Lauterer
eb0021502a backup: fix #2913 order jobs numerically by VMID
At this point, the VMIDs are already numerically sorted by the
PVE::VZDump::check_vmids method. Calling another sort on the array,
especially without `{$a <=> $b}`, resulted in reordering the array
alphabetically.

Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
2020-08-11 13:48:19 +02:00
Fabian Grünbichler
01fc36722d vzdump: use configured tmpdir for PBS
instead of always using the default hard-coded one.

otherwise, suspend mode container backups might run out of space even though the admin configured a big enough tmpdir.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2020-08-06 16:03:05 +02:00
Stoiko Ivanov
5d0d14f179 VZDump: add TARFILE to environment for hookscripts
The renaming of tarfile to target in 6cba1855d8
can break existing vzdump hook scripts of users.
by setting the TARFILE variable in addition to TARGET the scripts will continue
to work.

Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
2020-07-14 10:27:18 +02:00
Thomas Lamprecht
ef7d3fdd04 vzdump: use more general 'guest' instead of 'vm'
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2020-07-14 10:26:50 +02:00
Thomas Lamprecht
310cde8bab vzdump: render a duration of 0s as <1s
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2020-07-14 10:26:14 +02:00
Aaron Lauterer
da7cb515c0 vzdump: included_guest: return empty hash if no guests selected
This will fix the behaviour when calling `vzdump --stop` to cause all
local guests to be backed up.

When refactoring this logic in commit df5875b4, the assumption was that
every call will have one of the following parameters set: pool, list of
VMIDs or all (intentional or when exclude is used).

There is an addtional possibility, that vzdump is called with only
--stop. Thus there are no other parameters that would indicate which
VMIDs to include.

In this case we want to return the empty hash.

Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
2020-07-09 13:30:47 +02:00
Thomas Lamprecht
e21a31a71f vzdump: drop usless pbs upload finished log message
this is implied, if not there should be an error.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2020-07-06 22:03:42 +02:00
Thomas Lamprecht
b3c3304ffc vzdump: set target key for PBS based backups
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2020-07-03 16:49:19 +02:00
Thomas Lamprecht
6cba1855d8 vzdump: rename tasks 'tarfile' key to 'target'
Even now we can have plain vma files which, while an archive, are not
a TARfile.
Use the generic (backup) target as key instead. Makes it less
confusing to be reused for PBS in a later patch.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2020-07-03 16:45:22 +02:00
Fabian Ebner
5b6b72e6ee Simplify how maxfiles is determined
No functional change is intended.
The preference order is: option, then storage config, then vzdump defaults.

Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
2020-06-30 13:55:11 +02:00
Fabian Ebner
3a805f8d68 storage_info: avoid duplication
Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
2020-06-30 13:54:32 +02:00
Fabian Ebner
a6fcd7d9d4 Die if dumpdir and storage are both defined
dumpdir will be overwritten if a storage is specified

Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
2020-06-30 13:54:16 +02:00
Thomas Lamprecht
50ba40ec59 vzdump: move VMID sorting to check_vmids
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2020-06-17 15:45:56 +02:00
Thomas Lamprecht
05447e0459 vzdump: import split_list and cleanup
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2020-06-17 15:45:21 +02:00
Thomas Lamprecht
f839f3d153 vzdump: style fix, trailing comma and closing brace on new line
also sort the hash definition

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2020-06-17 15:39:46 +02:00
Aaron Lauterer
df5875b41e vzdump: move remaining guest include logic to single method
The `guest include` logic handling `all` and `exclude` parameters was in
the `PVE::VZDump->exec_backup()` method. Moving this logic into the
`get_included_guests` method allows us to simplify and generalize it.

This helps to make the overall logic easier to test and develop other
features around vzdump backup jobs.

The method now returns a hash with node names as keys mapped to arrays
of VMIDs on these nodes that are included in the vzdump job.

The VZDump API call to create a new backup is adapted to use the new
method to create the list of local VMIDs and the skiplist.

Permission checks are kept where they are to be able to handle missing
permissions according to the current context. The old behavior to die
on a backup job when the user is missing the permission to a guest and
the job is not an 'all' or 'exclude' job is kept.

Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
2020-06-17 15:16:06 +02:00
Aaron Lauterer
5c4da4c3e8 vzdump: make guest include logic testable
As a first step to make the whole guest include logic more testable the
part from the API endpoint has been moved to its own method with as
little changes as possible.

Everything concerning `all` and `exclude` logic is still in the
PVE::VZDump->exec_backup() method.

Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
2020-06-08 15:54:42 +02:00
Thomas Lamprecht
9c3a51ee22 vzdump: format size: future proof against huge VM disks
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2020-06-08 15:54:35 +02:00
Dietmar Maurer
071e573a13 PVE/VZDump.pm: use new --quiet option for proxmox-backup-client prune 2020-06-03 11:08:50 +02:00
Fabian Grünbichler
7ddcb3afda vzdump: set 'pbs' option when backing up to PBS target
this unifies the logic into a single place instead of all over this
module and the plugins.

it also fixes tons of 'uninitialized value' warnings when backing up
with --dumpdir but no --storage set, since the existing conditions for
PBS targets are missing a definedness check.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2020-05-06 16:21:41 +02:00
Fabian Grünbichler
7420d7ff95 zstd: add --rsyncable flag
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2020-05-04 12:19:31 +02:00
Alwin Antreich
3e2c5105f8 Fix #2124: Add support for zstd
This patch adds the zstd to the compression selection for backup on the
GUI and add .zst to the backup file filter. Including zstd as package
install dependency.

Signed-off-by: Alwin Antreich <a.antreich@proxmox.com>
2020-05-04 10:41:59 +02:00
Thomas Lamprecht
3d45fe518b followup: whitespace and indentation cleanup
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2020-03-12 17:44:26 +01:00
Moayad Almalat
5979889332 fix #2634: print specific error if hook-script is not executable
Signed-off-by: Moayad Almalat <m.almalat@proxmox.com>
Tested-by: Oguz Bektas <o.bektas@proxmox.com>
2020-03-12 16:32:32 +01:00
Dietmar Maurer
1a87db9e56 vzdump: add support for proxmox backup server 2020-02-19 14:02:05 +01:00
Thomas Lamprecht
df2d3636f4 VZDump: sort module usage
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2020-02-10 11:16:32 +01:00
Stefan Reiter
819e4ff59c fix #2509: add --rsyncable to pigz again
fixes commit e953f92adf

Signed-off-by: Stefan Reiter <s.reiter@proxmox.com>
2019-12-16 11:39:59 +01:00
Dominic Jäger
ce84a9506d Fix #352: Limit the length of backup logs for mails
When creating a backup the log part can make the mail too big to be
transferred. To ensure delivery, two measures are taken:
1. Always omit the status lines
2. Omit the whole log part if a mail becomes (too) big

Additionally, add a check for missing log files.

Co-developed-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Signed-off-by: Dominic Jäger <d.jaeger@proxmox.com>
2019-11-19 15:02:50 +01:00
Fabian Grünbichler
3ac3653e63 use PVE::DataCenterConfig
to make sure that the corresponding cfs_read_file works() works.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2019-11-18 12:25:35 +01:00
Christian Ebner
2424074ee7 vzdump: move code needed for cfs register of vzdump.cron to guest-common
This moves the cfs register code for vzdump.cron to the
pve-guest-common package. Therefore, it relies on the corresponding
patches in pve-guest-common and pve-docs as build dependencies.

Signed-off-by: Christian Ebner <c.ebner@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2019-10-18 08:23:40 +02:00
Stefan Reiter
e953f92adf fix #2314: remove GZIP env var
...and replace instead with command line argument.
Avoids a deprecation warning.

Signed-off-by: Stefan Reiter <s.reiter@proxmox.com>
2019-08-08 13:18:45 +02:00
Tim Marx
f337626155 fix #1278 api: add pool backup option
Signed-off-by: Tim Marx <t.marx@proxmox.com>
2019-06-28 18:05:19 +02:00
Tim Marx
60e049c231 whitespace cleanup
Signed-off-by: Tim Marx <t.marx@proxmox.com>
2019-06-28 18:01:04 +02:00
Thomas Lamprecht
7618913027 perl: fix some common typos found with codespell
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2019-06-15 10:40:20 +02:00
Oguz Bektas
6c09101a02 change error message related to maxbackups
make the message a bit more informative (with help from thomas), namely
mentioning the ability to change/increase the limit.

Signed-off-by: Oguz Bektas <o.bektas@proxmox.com>
2019-06-11 18:25:10 +02:00
Thomas Lamprecht
1e4583d5de vzdump: new: code cleanup
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2019-06-11 17:38:18 +02:00
Thomas Lamprecht
4e0947c88b vzdump: allow plugins to set guest resume time
This refactors things a bit to avoid having the same two lines in 3
places and allows the plugin to set the "guest was resumed" time
stamp at the point it really was resumed, not only once the backup
completed (see #503). Further, if a plugin prints it's own
"resumed/running after X seconds" message, it can unset the vmstop
time and thus avoid printing the message twice.

related to a fix for #503

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2019-05-15 14:30:45 +02:00
Dominic Jäger
29f26f6ddb Fix #482: Add timestamps to backup create task log
Adding timestamps to the log messages facilitates troubleshooting.

We only log this in the task log, as the syslog and the backup log
(stored together with the backup on the target storage) already have
date/time prefixed, so only the task log missed this info in case of
multiple backups tasks for a single job.

Signed-off-by: Dominic Jäger <d.jaeger@proxmox.com>
2019-04-24 09:17:06 +00:00
Thomas Lamprecht
9ff893ae52 vzdump: code cleanup empty newlines
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2019-04-16 14:16:21 +00:00
Thomas Lamprecht
e2b5eb29b5 vzdump: use strftime for backup basename assembly
we already use POSIX strftime a lot in the stack, so nothing new,
also just use the perl built in localtime

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2019-04-16 14:09:03 +00:00
Alwin Antreich
59abc310f0 Add cephfs to allowed storages for vzdump backup
Signed-off-by: Alwin Antreich <a.antreich@proxmox.com>
2018-07-04 16:57:32 +02:00
Wolfgang Link
6d09915c51 Add CIFS in strorage info to allow backup. 2018-04-05 13:48:52 +02:00
Fabian Grünbichler
998e4eebe7 VZDump: handle timelocal year correctly
while this is unlikely to cause any problems, it is unnecessary to
substract 1900 here - timelocal handles 4-digit years perfectly well.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2018-03-07 11:36:31 +01:00
Thomas Lamprecht
f2e9079f0d remove obsolete Posix use clause
besides the cleanup purpose this fixes an actual problem, perls POSIX
module has the following caveat:

`Everything is exported by default (with a handful of exceptions).
This is an unfortunate backwards compatibility feature and its use is
strongly discouraged. You should either prevent the exporting (by
saying "use POSIX ();", as usual) and then use fully qualified names
(e.g.  "POSIX::SEEK_END"), or give an explicit import list. If you do
neither and opt for the default (as in "use POSIX;"), you will import
hundreds and hundreds of symbols into your namespace.'

see `perldoc POSIX`

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2017-09-25 15:18:25 +02:00
Thomas Lamprecht
a5c9479705 use log method from base VZDump::Plugin
we copied our log method over there to resolve a cyclic dependency,
now use it here to reduce code duplication.
As we are below pve-guest-common in the dpendency hierachy we may use
it, but it does not may (or at least should) use us.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2017-09-22 09:34:09 +02:00
Thomas Lamprecht
8555b100bb vzdump/pigz: use ProcFSTools for core count, not sysconf
A "sysconf(84)" is not really descripitve. There is no POSIX const
entry for _SC_NPROCESSORS_ONLN (number of processors online) as its
not standard but an adoption of glibc.
Better just use our proven ProcFSTool's cpuinfo method for getting
the desired information.

This is kept only for backwards compatibillity as we guaranteed that
we use #cpus/2 if 'pigz' is set to 1, else I would have removed this
alltogether and just directly passed 'pigz' to the command...

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2017-09-20 12:34:22 +02:00
Fabian Grünbichler
c3b58274d4 fix #1389: vzdump: handle storage failure in new()
otherwise the mail notification is not triggered

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2017-06-08 16:20:03 +02:00
Dietmar Maurer
9f07075f0a vzdump: do not generate locale specific time stamps
Avoid perl warning: Wide character in print
2017-04-24 07:17:21 +02:00
Thomas Lamprecht
83ec8f816a VZDump: switch ha managed check from enabled to started
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2016-11-22 16:47:19 +01:00
Stefan Priebe
c76d010656 VZDump: die with error if plugin loading fails
Signed-off-by: Stefan Priebe <s.priebe@profihost.ag>
2016-11-17 07:06:38 +01:00
Wolfgang Bumiller
6acb632a54 vzdump: set task mode early to fix a warning
when a vzdump script is set and the backup fails early (eg.
when exceeding the number of backups) run_hook_script()
showed an uninitialized value error trying to use
$task->{mode} which is set only after prepare() was called.

This sets $task->{mode} early, still updated later to $stop
if !$running, and changes the condition for whether
cleanup() should be called to not use $task->{mode} (which
makes no real sense anyway) to using the $cleanup hash like
the rest of the code.
2016-08-19 13:54:38 +02:00
Fabian Grünbichler
0da2260fc2 vzdump: add newline in mail text
for consistency with html version and better readability
2016-07-07 11:12:24 +02:00
Wolfgang Bumiller
44b21574f0 Fix #1048: vzdump: include job-* hook logs in email 2016-07-07 10:52:58 +02:00
Wolfgang Bumiller
6cd975001f vzdump: safer cp call 2016-07-07 10:52:58 +02:00
Fabian Grünbichler
e42ae622cc fix #1005: don't exclude /var/log/?* with stdexcludes
the old behaviour can be easily restored with --exclude-path
and this seemed to surprise a lot of users.
2016-06-08 12:34:04 +02:00
Wolfgang Bumiller
403761c43e Fix #1015: vzdump: send email on early errors
VZDump->new() dies when a tmpdir or dumpdir is configured
but does not exist. At this point the error is not being
reported via email.

This also moves the instantiation of VZDump into the worker
since new() can now call sendmail() on error.

Additionally rather than only showing a single error if both
tmpdir and dumpdir don't exist, both are included in the
message.
2016-06-06 13:38:35 +02:00
Fabian Grünbichler
d50472438d fix #949: add post-restart hook to vzdump 2016-04-22 10:54:18 +02:00
Fabian Grünbichler
74b47fd8e1 Fix 'mailto: ...' in /etc/vzdump.conf
allow comma-separated list of email addresses, like the API2
parameter.
2016-04-14 17:02:37 +02:00