Last updated on Monday 28th of February 2022 08:52:48 PM

©XSIBackup Classic Change Log

 Please note that this post is relative to old deprecated software ©XSIBackup-Classic. Some facts herein contained may still be applicable to more recent versions though.

For new instalations please use new ©XSIBackup which is far more advanced than ©XSIBackup-Classic.

Copyright ©2013-2015 33HOPS, Sistemas de Información y Redes, S.L.
Developer: Daniel Jesús García Fidalgo

You are allowed to use this software for personal or commercial use. You are allowed to redistribute it without any modification on a one to one base. You can modify it's source code freely just as long as you do not redistribute the modified source code.

It is expressly forbidden to distribute derivative works without the written consent of the author.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY. USE AT YOUR OWN RISK.


• Sendmail module has been modified to allow sending e-mails in ESXi 7.0.0. As the firewall configuration file has been locked down in ©ESXi 7.0.0, the firewall is temporarily disabled while sending the e-mail. Due to the additional lock down of many constituent subsystems in ESXi 7.0 only Vmkfstools can be used as the backup program. Use ©XSIBackup-DC to backup ESXi 7.0.0 with deduplication or to perform fast replicas

11.2.19 (PRO) BUG FIXES:
• Small bug fixed in the script that remotely checks --backup-prog=Xsitools repositories in over IP jobs: src/pro/xsitoolschk. The LZOP binary is sought by means of a which lzop command before giving up.
11.2.18 (PRO) BUG FIXES:
• Bug in SSH tunnel filtering would cause false positive errors when using ©XSIDiff alone or when running --backup-prog=Onediff backups. Our apologies, as this bug has affected Onediff backups in most recent ESXi versions for some weeks now.

You may just update the functions, onediff and version files inside the src folder for a quick manual update from version 11.2.17.
11.2.17 (PRO) BUG FIXES:
• File ./conf/err-imsgs was missing in automatic sync of ©XSIBackup-Pro files when performing a backup via the --host argument.

• Transfer of small files responsability is returned back to Rsync in a local context. This way you may use ©XSITools even if you have not installed a license.key file for ©XSIDiff.
11.2.16 (PRO) BUG FIXES:
• Fixed backward compatibility issue in latest versions with ESXi 5.1.

• OpenSSH client option -o ServerAliveInterval=20 was added to prevent SSH tunnels from shutting down, especially when certifying big disks, which might leave the tunnel idle for some time.
11.2.15 (PRO) BUG FIXES:
• The /jobs dir would not be created unless you used the GUI, now it's created by the install process.

• New licensing encryption algorithm will make it necessary to renew your keys to use ©XSIBackup-Pro 11.2.15 and above.
• As explained in the man page and different posts, if your ©ESXi host is integrated into vCenter and you have enabled DRS, you will need to deal with that circumstance before actually performing a backup. No big deal, just use the --disable-vmotion argument or schedule DRS to be suspended during the backup Windows.

Up until this version, forgetting to do so would generally cause the following: when your backup starts in a given host, CPU load grows a little and bandwith usage throttles, this may cause that, being DRS enabled, some VMs are moved to other hosts when the backup load is detected, but when the VMs have already been detected. This will cause undefined behaviour: some VMs might be actually backed up, some others might not, some might be backed up and then the backup folder might be wiped just to backup the remaining ones.

To improve ©XSIBackup behaviour in this circumstance we have added some little logic that doesn't take for granted that the VMs are there just because they were queried for and found in first instance. Once the time to back it up comes, the local inventory will be requeried and if the VM is not there any more, an error will be raised and the backup job will skip to next VM in the row.
11.2.13 (PRO) BUG FIXES:
• A stupid error on our side has caused that previous version 11.2.12 was not able to detect Rsync on the other side when backing up over IP. Everybody should update to this version. The best part (if any) is that you just need to update the main xsibackup file in the root of the installaton dir.
11.2.12 (PRO) BUG FIXES:
• Some users with versions equipped with newer OpenSSH versions still reported false errors coming form excessive verbosity: rekeyed outbound cipher, rekeyed inbound cipher...
• ©XSIDiff has been ported to 64 bit, now becoming ©XSIDiff Q: so it wasn't a 64 bit binary?, A: it was a 32 bit binary due to some ESXi environment limitations. Now that we have overcomed these inconveniences new compiled binary will offer improved speed.

• Support for ESXi 6.7.0 Update 3 has been completed. As OpenSSH evolves, their current maintainers have started to add all sorts of irrelevant messages in STDOUT and/ or STDERR, like informing when FIPS mode has been initialized or when some cipher renegotiation has taken place. I believe this is more suitable to be included when verbose output is solicited or in logs, but not in regular user messages, anyway... This would be collected by ©XSIBackup and considered as an error, as it does not expect them to be there. We have added a filter to the ERR() function. Filtered messages are kept in the conf/err-imsgs file separated by \n line feed caracters, each one in its own line. You may use this file to ignore messages (not recommended), unless you know exactly what you are doing and you are willing to assume the consequences of your actions.
11.2.10 (PRO) BUG FIXES:
• Combining the --save-job=NNN option with some argument without any value, like --check-xsitoolsrepo may result in a double quote being added at the end of the argument line in the job file inside the jobs dir (jobs/NNN), which will in turn cause a syntax error when trying to execute the job.
11.2.9 (PRO) BUG FIXES:
• When performing a check, the empty block, which is that resulting from calculating the SHA1 hash of a block full of zeros, was sometimes reported as missing, but that block is not necessary to rebuild the VMs and is in fact not even stored. We have fixed this and those wrong errors will not be thrown any more.

• Set alias --certify-backup=yes for --check-repo=yes. When you ask the backup to be certified and it is an ©XSITools backup, a partial repo check on the VMs being backed up will be performed.

• We have changed the way SSH ciphers are handled inside XSIBackup to make its usage be more straight and easy to manage. Since this version you have three options in regards to ciphers: 1/ Let OpenSSH decide, 2/ Enable Less Secure Ciphers and 3/ use a custom set of ciphers through the --ssh-ciphers argument. XSIBackup will not try to choose the fastest, as it's error prone, thus in case you want to optimize this, you just tell XSIBackup what to use. You can read this post: Using Custom Ciphers for details on what to choose and how.

11.2.7 (PRO) BUG FIXES:
• Minor bug fixes.

11.2.6 (PRO) BUG FIXES:
• We enabled cipher algorithm on OpenSSH versions above 6.5, we overlooked the fact that in ESXi 6.7.0 it has been removed from the list of available ciphers.. This issue is fixed in this version, thus will not be used when some ESXi in an SSH pair is 6.7.0

• Bug fixed when testing SMTP servers from the GUI.

• New argument added --ssh-ciphers, allows to set the ciphers that the client will use when trying to connect to a remote host to transfer data. Most of the times using this argument will not be necessary, as XSIBackup-Pro will try to use the best balanced cipher available, offering both maximum security and throughput. Nevertheless some users may find it useful to set their own preference here. Please note that you will need to make sure that the cipher is available on the remote end and that this user-set cipher will only be used for data transfer, thus, you may still see some other cipher (tipically AES based) announced as the negotiated cipher when testing connectivity in the first phase of the XSIBackup-Pro output.

11.2.5 (PRO) BUG FIXES:
• Detection of whether the eventual remote server has been previously linked by means of the --link-srv command is conveniently reported.

• When OpenSSH 6.5 is detected on both ends data is tunnelled by using algorithm This algorithm created by Professor Daniel Bernstein is much faster that AES variants used by default in SSH tunnels. This algorithm has been adopted by Google, as it allows faster SSH tunnelling without dedicated AES instructions present in the hardware while still keeping a high level of security.

From a practical perspective this algorithms boosts transfer speeds in SSH tunnels by at least 20%.

• Some other small bugs have been fixed.
11.2.4 (FREE & PRO) BUG FIXES:
• Full compatibility with ESXi 6.7.0 Update 2. A bug in the Busybox Ash interpreter causes the syntax parser to report a syntax error in the wrong place. Up until this Busybox update, double quotes inside curly braced expansion blocks were tolerated, in this new Ash interpreter, double quotes inside curly brace expansions must be escaped. The syntax parser fails to detect this cases, and treats those double quotes as a string terminator reporting an error some other place ahead. It looks like if they had implemented the change in the compiler but they had forgotten to update the syntax parser.
• Added [l] switch to --backup-prog argument to enable "Less Secure Ciphers": arcfour and blowfish-cbc on data tunneled through SSH. This allows the use of cipher algorithms which have been deprecated in sshd_config file, but are still present at the sshd binary and offer 25-35% better transfer speed and a lower CPU overhead. Use at your own discretion, take on account that they are less secure, but they still encrypt information. Quite suitable for secured LAN transfers. Requires enabling these algorithms in the remote end. It will not work with ESXi 6.7, as it incorporates a newer OpenSSH version that will not allow the use of lighter ciphers.
less_secure_ciph variable is introduced in the conf/xsiopts file to allow tweaking

• Pruning size operations moved to Python include to overcome Busybox 32 bit integer limit, which limits --backup-room argument to 2Tb => 2048 Gb.

• Some size and speed operations were limited to 32 bit integers, which would, per instance, caused some errors backing up to volumes bigger than 4Tb., that limit has now been removed.

• New switch added to the --certify-backup argument, --certify-backup=fast is now supported for ©XSITools repositories. This new type of check will only test the existence of the hashed chunk file and that it's uncompressed size is equal to the repository block size. The last block in each disk is not checked, as it can be of variable size. This is now possible as blocks are transferred to a file buffer and renamed only after each individual transfer, thus any error in the transfer process would trigger an application level error captured by ©XSITools. Still, this is not as thorough as a full checksum comparison.

• New switch added to the --certify-backup argument: --certify-backup=quiet. This new switch will make XSIBackup take no automatic action when detecting a checksum comparison fail. Any read error will triger a fail when comparing chesksums. Disks which are a bit worn out but are still in use, may throw to many read errors in a OneDiff chain and reinitialize it frequently. If you use worn out disks and you deactivate checksum comparison, you are assuming the associated risk. Use enterprise grade HDs or SSDs and change them when they reach a read error rate above the manufacturer's recommended threshhold.

KEX incompatibility message from part of Rsync. Older Diffie Hellman KEX protocols were deprecated by OpenSSH and Rsync raises a warning, although in the end it uses a different one. We have decided to overlook this, as it's in fact redundant unnecessary information that tends to just mislead less experienced users.

• --on-success & --on-error chaining arguments are stripped off the backup job when run through the --run-backup argument.

• ©XSITools would only look for the remote installation folder on the default path /vmfs/volumes/datastore1/xsi-dir when backing up over IP. Now the remote path is determined by seraching for it or by accepting the --remote-xsipath argument. (PRO) BUG FIXES:
• Restore module still had a bug in the "restore from Vmkfstools backup" that would prompt you to overwrite the root dir when parsing a non-existent restore path. We have released this minor release number upgrade with the fix.

You can just overwrite the src/pro/restore file to minimize the effect of a full install.
• Added Regexp expression as a backup type to the GUI.

• Unified criteria in unit management. When using the --backup-room argument to prune an ©XSITools repository Gigabytes will be the interpreted unit.

• Improved Regexp selection allowing more complex syntax to be used.

• Improved logic in argument management.
• Fixed issue that would cause doubling of quotes around --on-error and --on-success events when configured from the GUI.

• Improved restore module logic.
• Pruning of ©XSITools repositories is now possible via the --backup-room argument.

• Fixed bug when using final backslash in combination with --del-badblocks argument.

• Added :f flag to --check-xsitoolsrepo argument. Allows to check ©XSITools repositories by just testing for the hash file existence.
11.1.9 (PRO) BUG FIXES:
• Fixed nasty bug that would cause the GUI to be killed when launching backup jobs in a window.
• Rsyslog support, both to local syslog at /var/log/syslog.log (/scratch/log/syslog.log) and to any remote host equipped with the logger binary, namely the Rsyslogd client. You configure the Rsyslog server in the conf/xsiopts file. Overwrite your old xsiopts file with the one in this version to keep the notes about this new feature.

• We added a new section to the GUI main screen: "Config", which allows to edit the conf/xsiopts file.

• Added variables:
To the top of the src/sendmail module. They allow to fine tune the SMTP client probe prior to sending the e-mail report. The default SMTP_CHECK_INTERVAL was lowered from 3 seconds to current 1 second. You do not need to change these values, they are there for advanced users that receive a negative SMTP server probe (The e-mail server is not reachable at port NNN), even though they are absolutely sure their ESXi box can reach the SMTP server port.

Anybody tweaking this two variables does not need any kind of support, as he/she assumes comprehending the sendmail module and the new variables role.
• Restore module now supports resuming partial restore operations. This is useful when restoring from an Internet server which is more prone to suffer instabilities.

• Since this version, any ongoing XSIBackup job will be terminated by any new execution request. XSIBackup is a mono-threaded process, you are responsible to conveniently chain different jobs so that they do not overlap. Setting backup jobs in such manner that they rely on some previous job to have finished is dareful and not recommended.

• A small bug would cause the request.key file be generated only when xsibackup would be invoked from command line with some argument (any). Some people would just execute without parameters and then wonder where the request.key file could be. We have fixed this so that this file is generated even when just opening the GUI.
11.1.6 (PRO) BUG FIXES:
• Fixed issue (see in bug tracker forum section) that would prevent VMs being restored from a remote XSITools repository over IP.

• Removal of annoying "FIPS mode initialized" message from --link-srv output in ESXi 6.7
11.1.5 (PRO) BUG FIXES:
• Argument --update-cron was not working from the command line, the GUI was O.K., we took the chance to improve the output.

• The text "# Added by XSIBackup" was being appended from the command line to cron entries, but not from the GUI. The GUI would not use it to detect XSIBackup cron entries, so if you would use the command line and the GUI at the same time, that could lead to duplicate cron schedules in /var/spool/cron/crontabs/root. This behaviour has now been made uniform.

• Some other minor bug fixes have been included in this release. The most important is launching a warning when some VMs in a backup job are no longer present in the host when editing the job.
11.1.4 (PRO) BUG FIXES:
• Virtual Machines hosted in non VMFS volumes would not be backed up, we have fixed this bug. Still, it is highly recommendable to host virtual machines in VFMS volumes.

• XSITools backups over IP have been enabled in ESXi 6.7. There were some minor bugs affecting this kind of functionality in VMWare ESXi 6.7
• SSH tunneling in XSITools over IP deprecated in favour of direct individual SSH key authentication. SSH tunnelling sometimes requires deep tweaking of the SSH client and server, whereas direct use of SSH is more convenient. The time saved is not worth the hassle in case of using a tunnel.

• Block copies are retried up to 10 times. Once that maximum amount of retries has been reached © copy;XSITools will return an error and will give up that file. This can help when copying across slightly unstable connections.
11.1.2 (PRO) BUG FIXES:
• Corrected little bugs in the install script that raise informative errors when the jobs and conf folders don't exist (older XSIBackup-Pro versions).

• Improved --save-job argument functioning. It would not handle an inexistent jobs folder, now it's automatically created if it does not exist.
11.1.1 (PRO) BUG FIXES:
• The file src/pro/xsitoolschk was not being copied to the remote server when using the --host argument.

• GUI: some fixes have been applied to prevent jobs saved via the --save-log argument from not being properly read by the GUI. All argument values are normalized to lower case to be read and avoid mismatches and derived errors.
• New argument --save-job allows to save a backup job previously tested in the command line. Just add the --save-job string to the command line job.

• GUI: functionality extended to cover all arguments.

• ©XSITools features deduplication over IP. 10M, 20M and 50M (default) block sizes are supported.

• Improvements in XSITools deduplication engine algorithm offers improved resiliency. Chunks are moved to a temp file which is renamed after a successful transfer, should something go wrong while the transfer is taking place, the chunk is resent on subsequent backup cycles, this prevents data corruption due to power outages or unstable TCP/IP communications.
• GUI: --backup-room argument added to GUI.

• GUI: --del-dir argument added to GUI.

• GUI: bug in --subject argument setting removes double quote wrap, now fixed.

• Fixed bug when detecting backup folder in unstable NFS datastores.

• Fixed bug in GUI: unquoted --on-error and --on-success arguments created with the GUI pointing to scripts would fail.

• GUI: fixed bug that would prompt users to select VMs at the Disk Exclusion screen, when All or Running had previously been chosen. To exclude disks, always set --backup-type=custom.

• Line esxcli storage filesystem rescan has been added to xsibackup main file. It will make sure all connected datastores are refreshed when running the program. It may take some time in systems with a lot of connected storage devices. This line, which is now the first in the script can be safely removed, it will be useful in very rare occasions.

• Added Uninstall option to GUI tools.
11.0.2 (PRO) BUG FIXES:
• Fixed bug in src/pro/custimgs module that would cause custom images not to be set.
11.0.1 (PRO & FREE) Improvements and bug fixes:
• The free version incorporates all changes related to free features and is now compatible with ESXi 6.7.0

• Log rotation added, configurable size in conf/xsiopts, defaults to 50M.

• Additional control logic added to remote job execution. Now a UID (Unique Id) is parsed in the remote command and is returned to the master server once a job completes, to tighten backup chains logic and give more consistency to the process.

• Default quiescing behavior is to not quiesce, you must now explicitly add the --snapshot=doquiesce argument to quiesce your guests when performing backups. Most users run nightly backups on idle VMs that don't need quiescing. Configuring all services in your guests to ensure all services are properly quiesced is something that may require some time and will from your part. Those of you that require quiescing know exactly what they want, those that just want to perform a quick backup and don't care much about those picky details, most probably don't need to quiesce their VMs. So it makes more sense to explicitly say you want to quiesce than trying to always do by default.

• Text comment "# Added by XSIBackup" added at the end of every crond entry. Do not remove, this text allows XSIBackup to identify its own lines in the conf/[username]-crontab and /var/spool/cron/crontabs/[username] files.

• Fixed bug that would break HTML lines in the report causing flawed rendering in some e-mail clients.

• When a ©OneDiff differential backup fails, the .vmx file is renamed to .vmx.bak and the OneDiff cycle is reinitialized on next backup round. Now backups made on VMs which are in this state, look for the .vmx.bak file and use it in place of the .vmx file, which allows to back them up.

• Disk exclusions now available in the GUI. It allows to exclude local and remote disks, when using the --host argument.
• XSIBackup-Pro 11.0.0 is the most ground breaking version since the program exists. It has been fully renovated in most important aspects of its functioning, like, cron, remote execution, backup chaining, etc..., start here.

• XSIBackup's crontabs are now fully integrated into ESXi's cron daemon and controlled via the GUI.

• Remote jobs are base64 encoded before being sent to the remote host and decoded there previous to being executed, this ensures no escaping issues with especial characters.

• Centralized backup job chain management. Now execution of remote jobs is truly controlled from a single installation point. Up until v. 11.0.0, when your parsed a remote job via the --host argument, once the remote job would end at the remote host, the execution chain would be delegated to the remote host, thus, the subsequent backup job would be sought in the remote host's crontab and not the master host where the chain originated. Now all jobs in a chain must just be present in the /jobs folder of the master host.

• Core functionality passed on to binaries in detriment of bash code loops.

When the project was started, we intentionally kept most of the routines in plain bash (dash to be more precise), to avoid use of busybox's command line utilities, like sed, grep or awk, as they demonstrated to not be very reliable. As newer ESXi versions were released, we started to trust those utilities a bit more and we have increasingly passed some functionality to them. This obviously makes the program be faster in regards to inner processing tasks.

• Some minor HTML errors have been fixed in the report layout.

• Fixed bug It would prevent -sesparse.vmdk files from being backed up on piled snapshots.

10.3.4 (PRO) BUG FIXES:
• Compression flags removed from the SCP remote xsi-dir syncronization routine. Some ESXi builds may contain an SCP binary (busybox) that would not accept compression flags.

• Fixed escaping issue when parsing an --img-list to a remote job executed via --host argument. If you were not escaping the | (pipeline) character inside the --img-list argument it would break execution of remote job.

• Fixed bug that would turn --remote-xsipath variable to lower case if it contained upper case letters.

• Fixed bug that would prevent ESXi config backup.

• Added logic to handle delays in Async NFS. Some Async NFS systems take too long to create the backup folder, so that when the backup starts the folder is not available yet. This fix checks the existence of the folder up to 10 times before giving up. This is only a seldom problem in async storage, which is still not recommended, always use sync storage protocols.
• Now the xsibackup-cron file accepts time arguments in the form "10t14:29", where the first two digit number represents the day of the month and the part after the t letter is a time string in hh:mm (hours and minutes separated by a colon).

• Added new xsbackup-cron.sam file in the conf directory with extended functionality to allow execution of any script or command line executable.

• Trapping of KEX messages to avoid errors being raised when OpenSSL tries to use deprecated KEX algorithms
• Some minor bugs have been addressed and individual VM size (real data and disk size) are reported in the header of each VM backup log.

• XSIDiff binary upgraded to version

• Remote dir would not be deleted when using --backup-prog=vmkfstools without the --date-dir option, in this case the new backup must just replace the pre-existing one. This is probably not used by many users, so we had not had complaints so far.

• We have finally fixed issues with disk exclusions, we know there's been previous inaccurate announces about this, so we have to apologize.
10.3.1 (PRO) BUG FIXES:
• Wrong © copy;XSIDiff version was packed with v. 10.3.0, this newer version solves it.
• We have rewritten the PID management logic. It had been simplified in the latest versions, but this could affect users with complex or recursive backup topologies, as ongoing processes could be wiped by newer starting ones in some circumstances. Read this post to have an overview of the matter.

• XSIBackup-Pro and XSIBACKUP-FREE converge into a single package. Pro options are modules which are simply not present in the free version, some other features are activated by means of the © copy;XSIDiff keys. The Free version will keep on offering the same characteristics as the old 9.1.11, plus © copy;OneDiff (only 7 rounds, after which the OneDiff mirror is reinitialized) and © copy;XSITools de-duplication, although the restore feature will only be available in the Pro version.
10.2.10 (PRO) BUG FIXES:
• Fixed small bug that would cause an empty list of dirs to be reported as deleted when using the :F flag at the end of the --backup-point argument..
• Added --del-dirs argument. It accepts values following the format [+-][N][d]

• Main program file xsibackup's code has been wrapped between {} to prevent script caching, so that upgrades can be done without a reboot. This measure is experimental, although it will for sure improve mem caching issues on upgrades, there's no guarantee that it will eliminate all mem caching issues. In these cases a reboot will always be the best solution.
• XSITools --check-repo=yes argument will only check the VMs just backed up, --check-repo=full will check the whole repository.

• Escape sequences filtered in log file when running job from the cronfile (this had been erroneously announced for previous version). Not 100% of escape sequences will be removed, we will continue to filter this remaining characters in future releases.

• Introducing --remote-xsipath argument to allow setting the remote xsi-dir path per backup job.

• Fixed issue in disk exclusions.
• Added variable in conf/xsiopts to disable new version checking.

• :F option on --backup-point deletes the remote VM on --backup-prog=rsync|onediff|xsidiff. It does not make sense when combined with OneDiff, unless you use it only for the first copy.
• Check for new versions in console and e-mail report.
• Fixed bug in output redirection when using --host option.

• Added new version availability check in console output and e-mail report.
10.2.4 (PRO) BUG FIXES:
• Fixed bug when creating target directory on full backups.
10.2.3 (PRO) BUG FIXES:
• Fixed SEGFAULT bug when using an installation path shorter than 52 characters.
• Fixed issue in paths containing spaces.

• Borg module has been updated to support latest releases (Borg 1.1.1), error reporting has been improved.
10.2.1 (PRO) BUG FIXES:
• Fixed bug in © copy;XSIDiff, it would detect files as being dirs in some circumstances. XSIDiff has been upgraded to v
• conf/xsiopts file has been extended with the defremusr variable, which let's you stablish the remote user when connecting to remote systems.

• New argument introduced, --backup-as=user allows to override the defremusr hardcoded value above and set the remote user per backup job.

• Improved logic to backup to Linux systems vía Rsync or XSIDiff. Please, be aware that not any distro or kernel version will be compatible with XSIDiff binary and/ or provided Rsync.

• Trivial check adds the number of used space in megabytes to the first N megabytes check. Now a positive trivial check multiplies the possibilities of having two identical files on both ends, by checking: file size, used bytes in sparse file and first N megabytes checksum. This additional check works only with VMFS FS.

• SSH 1 returns as the default version of SSH to tunnel Rsync data through. SSH 2 has some features, like dynamic compression, that don't work well with Rsync. On addition, resource consumption grows wild when using SSH 2. This considerations are restricted to the environment XSIBackup runs in, namely ESXi Hypervisor.
10.1.5 (PRO) BUG FIXES:
• Fixed bug when running backup from server A in server B to server C. File comparison failed due to function comparing checksums not having access to unique id variable.
10.1.4 (PRO) BUG FIXES:
• Fixed bug preventing © copy;XSIDiff to be used as a standalone backup program on its own, and not just as an Rsync helper.

• Fixed bug that would cause ambiguity in © copy;OneDiff VM detection when some VM name is contained within another, i.e.: VM1, MyVM1, VM1-Win7, etc...
10.1.3 (PRO) BUG FIXES:
• Fixed bug that would cause .ERR-XXXXXXX... file to be deleted by the xsibackup-cron call causing errors not to be informed in the e-mail report.

• Fixed bug affecting win64 quiesced backups. This bug reappeared due to some changes in the code structure, it's now been finally fixed.
• When preparing the VMs to be backed up, XSIBackup takes a snapshot. When it detects that VMWare Tools are installed, it tries to perform a quiesced snapshot to ensure all services finish writing data to disk before the snapshot is created. Since this version, XSIBackup will first try to take a quiesced snapshot; should the operation fail, will then try to perform a non-quiesced snapshot before giving up. Still an error will be raised for you to take action.
• Improved PID management, now all cron pids are killed when a new backup session starts. Backups must be triggered sequentially via the --on-success & --on-error arguments.

• Improved --certify-backup hash computing when backing up over IP. Since this version, hash calculations are made in parallel, shortening times, when two servers are implied in the process.

• OneDiff, to local data store, backup snapshot copy is now handled by © copy;XSIDiff.

• Fixed bug when backing up Windows x64 quiesced VMs by means of OneDiff to local data stores.
• conf/xsiopts file has been extended with new tweakable variables, like trivialcheck=XX where you can set the number of megabytes that will be quick checked for each -flat.vmdk file after backup.

• Quick fix of bug in OneDiff management of absolute paths, which affected backup of VMs that have .vmdk disks spread across different datastores. Special thanks to Boris Pavlovic from Bosnia Herzegovina from pointing out the issue.

• Support for Borg 1.1.1, all Borg users should upgrade their Borg binary to 1.1.1 or later.

• Especific Windows algorithm created for vmkfstools and OneDiff programs. Some Windows versions, even EFI ones, create fragmented snapshot files which are hard to handle by backup programs. We created a separate logic to handle this type of OSs.

• Fixed bug in XSITools module that would prevent Python arithmetic calculations from working in some Python interpreter versions, throwing a backup error.
• Fixed bug that prevented OneDiff to work in VMFS 6 formatted volumes.

• We have added the --run-backup argument, which will allow you to run some backup job stored in the xsibackup-cron, or any other alternative file. All lines will be taken into account, including commented out lines. In case some backupId is duplicated, the --run-backup argument will execute the first that it can find.

• Trivial check, after OneDiff cycle, has been raised to 500 megabytes (before was 50 M). It will only take some seconds, but will improve chances to detect files out of sync when not using the --certify-backup option

• xsidefaultpath is determined dynamically on every backup job, only if more than one, or none, remote installation point is detected, the hardcoded value at conf/xsiopts, will be used.

• conf/xsiopts file is introduced, to host hardcoded configuration values, so that you don't need to touch the program's file.

• Now SSH 2.0 is forced for every SSH connection. Compression is set dynamically by the SSH tunnel and :z modifier on OneDiff and Rsync is deprecated.

• Regular expressions are now accepted to select VMs when using the --backup-type=custom option. The regexp must be enclosed in parenthesys and preceded by the word REGEXP in upper case.
• XSITools module has been reinforced to offer maximum resiliency: redundant checks are applied, each block copy is retried 10 times if an error is detected. In case the 10 retries fail, an additional copy loop is performed for all missing/ faulty blocks. In any case, it is extremely rare that a block cannot be copied, especially since the RAM footprint has been dramatically reduced in this version.

• (*) Improved speed when checking individual VMs backed up with XSITools.

• (*) Bug fixed that would cause block copy retries not to work when using compression with XSITools.

• Bug fixed in progress information when using XSITools individual VM integrity check. Check would exit before 100% and report one block less than total in check info.

• (**) XSITools memory usage optimization. From this version XSITools will use just a 1 mb. buffer, reducing available memory requirements to the minimum. Up until this version, ESXi Busybox dd utility would try to allocate a contiguous block of memory as big as the used block size (default is 50M) when backing up via XSITools. In some systems this amount of memory could not be allocated, this would depend on the level of fragmentation as well as the host configuration and load. By reducing memory requirements to a contiguous megabyte, the chances to receive memory outage errors are almost null.

(*) Special thanks to Bernhard Heidegger from www.hyperwave.comz for taking the time to detect some bugs and offer us qualified feedback.
(**) Thanks again to Bernhard for taking the time to perform empiric tests to determine how ESXi Busybox's dd uses memory and give us feedback.
10.0.2 (PRO) BUG FIXES:
• This is a quick fix version for users that run remote backups via the --host argument. Some essential functions were moved to a new file (src/functions), but this file was not being replicated to the remote xsi-dir.
• The restore module now allows to choose the type of restore disk: thin, zeroedthick or eagerzeroedthick when using vmkfstools as the restore program. This is valid just for local regular backups, not for XSITools or Borg.

• We added the --options argument to parse some commands that might be needed in some circumstances.
• First data transfer in Rsync and OneDiff backups is overtaken by © copy;XSIDiff. It can handle -flat.vmdk files as native ESXi sparse files, making first transfer of whole file much more rapidly than Rsync.

• New argument --disable-vmotion allows to disable VMotion while the backup is taking place to avoid VMs being moved around by vCenter.

• New argument --shell-warning=[yes|no] allows to disable the annoying message that informs that the shell service is activated, run once.

• VM listing time previous to backup drastically reduced.

• OneDiff VMs are unregistered once data consolidation has completed to avoid duplicate MAC errors thrown by vCenter, even when the VM is off.
• Implemented workaround for 'kex protocol error bug'. Newer kex algorithm is set at runtime for Rsync transfers when ESXi 6.5.0 is detected. KEX error, which is thrown as a warning, is trapped to avoid nasty uncontrolled messages and is printed out nicely. MD5 checksum is forced on every -flat.vmdk file pair.

• Now the SMTP panel file is available in the Free version, edit the conf/smtpsrvs file to add a virtually unlimited number of SMTP servers. They can be later used by invoking the --use-smtp=[Id] option, to shorten your backup jobs and make them more manegeable and meaningful.

• Added more control points to debug complex scenarios.
• Removed sed filtering of \r in xsibackup-cron-log file to prevent buffering of output in ESXi 6.5.0. This will allow to still be able to observe the log as it is written.
• Fixed bug in XSITools module when deleting bad blocks in VM backup check,

• Improved speed in collecting of blocks previous to XSITools VM check.

Especial thanks to Bernhard Heidegger from for pointing out bug and improvement.

• Fixed issue, spaces were not handled in paths when checking XSITools VM backup.

• Fixed issue, spaces were not handled in paths when using OneDiff to local storage if the VM already existed.
• Improvement of xsibackup-cron processing speed, now lines without a --time argument are skipped.

• OneDiff logic error handling improved. The algorithm now tries to handle errors automatically and reinitializes the OneDiff cycle if necessary, up until this version manual intervention was required to delete the mirror VM if something was changed or moved. File size + first 50 mb. of .vmdk disk are checked. This first chunk will tipically contain the primary superblock, thus, any difference between both FSs (original & mirror) would cause a change in the first 50M block checksum.
• If user didn't set the hostname, it will be set as "localhost", instead of empty string, so that the SMTP client is able to EHLO something.

• SSH-out port set to link to another server is managed automatically by the --link-srv command and added to the firewall set of rules if needed. This is specially useful with the ESXi 6.5.0 web client, which still needs some tuning and does not always work well.

• Log output is delayed in ESXi 6.5.0 due to sed buffering (new default behaviour). Filtering of \r lines is removed from XSIBackup temporarily until a fixed is added to next main revision.
• We have moved time measurement to the start of the script to help reduce latencies a bit.

• Improved detection of blocked files.

• Fixed memory leak that could arise under some conditions and delay backups. Overall speed should improve.

• Improved detection of problematic OSs (Win x64 on MBR boot), now OS detection is made by regexp "^win.*64.*". The string is previously converted to lower case and then is matched to something starting by win and containing a 64 number somewhere else before the end of it. Mac OSX, coded as darwin is not mistaken for a Win OS, as the "win" substring is not at the beggining.
9.1.4 (PRO) BUG FIXES:
• This notice applies only to XSITools program. In extreme conditions, in which a host is short of memory, dd (used only by XSITools) can fail to copy disk slices with a "Cannot allocate memory" error. We have reinforced XSITools to detect such condition, raise a controlled error and retry the slice copy. Up until this version XSITools would not notice this spare bad/missing blocks until a repository check would be performed. Please, discard your previous XSITools backups and wait until 9.1.4 has been released to use XSITools in production.

• Added function to check VM hardware version against ESXi version. In case you are backing up a VM to an ESXi server with a version that cannot handle the VM hardware, a warning will be raised. The VM will be copied anyway, as the data store can host the VM files without problems, it is at the time to add the VM to the inventory when an unhandled error will be thrown and the VM will appear as "unknown" in the GUI inventory. I guess VMWare should address this situation and just output something like "This ESXi N.N.N host cannot handle HW version N".
9.1.3 (PRO) BUG FIXES:
• We have detected a late very seldom and random error that affects only to Windows Server system disks (there's a high correlation although the cause > effect relation is not clear). We have disabled XSITools for such systems until we release a fix or workaround. Sorry about the inconvenience. Please, do not use XSITools for production purposes until we release a solution.
• Added posibility to check XSITools VM backup individually via the --check-xsitoolsrepo argument.

• Error Policy changed, now all errors, even those unrecoverable are informed, but execution continues to favour continuity of a job chain. Take on account that this changes XSIBackup's base working philosophy: before, some very gross errors were considered to need human intervention (like a wrong path) and backup would halt and ask you to fix it. Now, even in the case of very obvious errors, the main priority is to keep the backup chain rolling and try to make the backup by any means. In case of full storage, XSIBackup will look for folders that match the --date-dir mask (YYYYMMDDhhmmss) and will try to delete the eldest, until enough room is gained to make the backup. In case of fatal errors that prevent a backup job from completing, XSIBackup will try to raise a controlled error and jump to the next backup job in the chain off --on-error and --on-success events.
• Added --check-xsitoolsrepo argument to check XSITools repositories, in combination with --mail-to argument will e-mail a short report with the result.

• Improvements in some routines.
• Now the block size is settable for XSITools backups, 10, 20 and 50 M are allowed.

• Added option --check-repo=yes to allow post backup consistency check.
• Now the default behaviour when taking a snapshot is not to copy memory. From now on, if you want to have memory included, just set --snapshot=includememory

• New argument --check-xsitoolsrepo added. You can use this command to check the integrity of an XSITools repo.

• An SMTP server database file has been added as /conf/smtpsrvs. You can add your SMTP servers there and call them from your backup jobs like --use-smtp=2. Each SMTP server entry is identified by a unique integer. Servers can be checked with the command --use-smtp=1, this example command would send an e-mail to the address especified in the --check-smtp argument through the SMTP server number #1 set in the /conf/smtpsrvs file. You can parse all SMTP authentication data as before too for backward compatibility.

• E-mail submission code has been reorganized in a separate module in the /src/sendmail file. The name alludes to the well known MTA, but has nothing to do with it.

• Improved syncronization of files with linked hosts.
• XSIBACKUP-FREE incorporates some of the improvements made to the XSIBackup-Pro core in the last moenths and some features not present until now.

• Fixed excessive proliferation of progress indication lines in the cron file. Especial thanks to Lothar Schilling for reminding the request and proposing an elegant and simple solution.
• XSIBackup-Pro 9.0.0 introduces a new concept in VMWare backups: XSITools. It is a module with a set of functions that will allow you to store your VMs in deduplicated repositories directly in VMFS volumes, or on any other FS of your choice.
• Code has been reorganized in modules that are sourced from the main file xsibackup. The code had grew and needed to be split in smaller chunks.

• If when installing/ removing the cron, a preexistent xsibackup-cron file is found, it will be renamed to xsibackup-cron.001.
• Added --exclude-vms argument to exclude VMs from general --backup-type rules, like all or running.

• Some functions have been reprogrammed to be more consistent.
• Added --override argument. By now it only accepts the string xsibakfilter, i.e.: --override=xsibakfilter. It removes the default filter for _XSIBAK terminated VMs generated by the OneDiff program, to allow to back them up under some special circumstances.
8.1.1 (PRO) BUG FIXES:
• Fixed some general bugs.
• Added ISO datetime prefix to log lines. Not present in manual console backups.

• Warm & cold backups are now fully compatible with OneDiff backup program. Before this update, there were some limitations in the way some options could be combined, per instance "cold" and "warm" backups, that were thought to offer absolute compatibility with some less common use OSs, could not be used with the OneDiff program.
• Added option to choose between nominal disk sizes or real data size in reports via the --show-sizes=real(default)|disk.

• Fixed relative path issue when trying to execute XSIBackup from a relative path instead of local or absolute, i.e.: ./xsi-dir/xsibackup. Paths above XSIBackup installation dir are not allowed, i.e.: ./../xsibackup
8.0.5 (PRO) BUG FIXES:
• Revision and improvement of ESXi config backup routine.
8.0.4 (PRO) BUG FIXES:
• Fixed bug, Borg backups would initialize repo in every backup cycle.

• Fixed bug in --type=all argument when doing onediff backups.
8.0.3 (PRO) BUG FIXES:
• Fixed bug in Borg client logic.

• Fixed bug in custom subject and other minor bugs.
• Added support for FreeBSD 11, key linking, Rsync and Borg Backup.
8.0.1 (PRO) BUG FIXES:
• Small bugs fixed.
• Added full restore module and backed up VMs browser.
• XSIBackup-Pro now can backup over IP to any Linux system with a compatible rsync binary.

• Added possibility to parse option to --backup-prog argument to force use of xsibackup-rsync instead of remote system's rsync binary.

• Improved logic.
• A new --backup-prog option has been added: borg. Borg backup is one of the fastest backup applications, featuring full block level de-duplication combined with compression and, optionally, encryption. The results in combination with XSIBackup are really impressive.

• Added possibility to parse option to --backup-prog argument to set compression when using rsync or borg. This may help over narrower connections (i.e.: --backup-prog=rsync:z).
• --certify-backup=yes|md5|sha|sha1 argument added. By appending this command XSIBackup-Pro will compare checksums for every datafile backed up and will inform about the result.
7.0.5 (PRO) IMPROVEMENTS: • --snapshot=auto argument is substituted by a smarter default behaviour. If an MS Windows Server guest is detected under an MBR boot disk, it is not quiesced by default. To quiesce Windows Server guests, turn them into GTP bootable OSs. 7.0.4 (PRO) BUG FIXES:
• Some small bugs have been corrected.

• Added support for settable Rsync compression. This will only help in very special circumstances, thus the default recommended config is not to use compression at all.
7.0.3 (PRO) BUG FIXES:
• Warnings would cause the e-mail subject to show errors in backup. This was too alarming, as a simple missing .VMXF file (not needed in every case), would result in a backup job marked as bad. After correction, warnings are shown but don't force the e-mail subject as (X) bad.
• Error handling logic has been rewritten.
• Over IP transfers now allow --date-dir argument.
• OneDiff differential backup over IPv4.

• Output bash layout redesigned.

• More visual alerts in e-mail subject.
• Resolvable hostnames are now allowed instead of IPv4 in --backup-point argument.

• Spaces are now allowed in datastores names.
• New --backup-how option, apart from the preexisting ones (cold,hot), we added the warm option, it switches the VM down, takes a snapshot and switches the VM on again. It works with any Operating System, just like the cold option, even with no VMWare Tools or Open VM Tools available, but reduces the downtime to some seconds, or minutes at most.
• The execprog directive has been added to the --on-success and --on-error arguments. It allows to run shell programs (binaries or scripts) with arguments upon backup completion.
• Changed line breaks by inside HTML body. hMailServer requires linebreaks inside HTML content to pledge to the RFC standard as if it was plain text.

• Added MIME-Version: 1.0 to e-mail report header.
• We have detected that sometimes ESXi 6.0.0 reports more datastores for a given VM than the datastores actually being used, when running:

vim-cmd vmsvc/get.datastores [VMID]
This is an ESXi bug and can confuse XSIBackup, making it not be able to find the .vmx file for the given VM. We have fixed this by restricting the .vmx file search to just the main datastore.

• We have added dontquiesce as a user option to the --snapshot argument, so that you can decide wether to quiesce snapshots or not.
• XSIBackup-Pro will load additional code files in its own directory with the ".inc" extension.

• SMTP servers are probed prior to sending the e-mail report and set a failed status and error in case they are not reachable, instead of previous behaviour: skip and continue.

• Trapped errors for the open/close/reload firewall operations previous and subsequent to the e-mail submision, before any failure in performing these operations would result in one simple uncontrolled exception. It's rare that this errors would be thrown though.
• xsibackup-pid turned into a multiprocess file. User and cron processes can coexist without having to manually delete the xsibackup-pid file.
• Improved signal trapping and process management to make XSIBackup-Pro more stable.
• Added argument --shutdown-wait to set the time a VM is granted to perform a clean shutdown before power off on cold backups.

• Subject text is not lowered any more.
• Improved disk exclusion matching, now it matches any base disk and any snapshot derived from the base disk.

• Improved backed up VM availability. Now any kind of backup is directly bootable from its backup location.
6.0.3 (PRO) BUG FIXES:
• Backup chaining by backupId issue fixed.

• Improved logic.
• Hostnames can now be used as well as IPv4 addresses with the --link-srv argument.

• EXIT signal is trapped to ensure proper cleanup of the xsibackup-pid file and remaining processes.
• VMDK paths are totally arranged at the backup destination folder to guarantee backups are runnable by: removing independent disks, arranging paths to point at the backed up .vmdk files.

• Code improvement to ensure maximum reliability, consistency and resilience.
• OneDiff technology has been added as a new feature, real time diff backups.

• .nvram and .vmxf files are backed up with the rest of the files.

• VMs can be run in their backup location, all file paths are arranged for this.

• Now only --smtp-pwd and --backup-vms argument values are case sensitive.

• Color denoting VM state (on|off) lightened to differentiate from the backup state.
5.1.6 BUG FIX:
• Bug would prevent datastores matching a certain pattern from being used as backup origin and/or target. The bug has been fixed.
• Added trapping of signals to allow a cleaner shutdown when [Control+C] is pressend during manual execution.

• Added optional debug info to the e-mail report.

• More solid routines.
5.1.0 FIXES:
• When backing up a simple VM layout (all .vmdk files in a unique VM folder) over IP by means of Rsync. A reference to the backup snapshot is kept in the VMX file, preventing the VM from directly starting in the backup location. We have fixed this to avoid having to tweak the VMX file manually to switch the backed VM on.

• The error handling routines have been improved to show last error per VM and a global error list, containing all the errors at the end of the e-mail report. Finer error handling.
• You can keep your pre-existing snapshots and have your VMs backed up from the last one. All information will be backed up, including data present in the last snapshot and all its chain down to the base disk. Read this post for more details.

• Compatibility with GMail. Now you can send e-mail reports through your account. Thanks to Jeff Kaminski for pointing some clues.

• Now XSIBackup key pair is RSA to maintain compatibility with ESXi 6.0 update 2 and onwards.

• Improved core routines.

4.7.3 Added colors in bash output to denote relevant information. Certain messages are highlighted to claim your attention. Blue means relevant plain info, green means something was completed O.K., red means something went wrong.

4.7.2 Fixed bug on same regexp again, some valid addresses were rejected. Added support to exclude memory from snapshots --snapshot=excludeMemory, this is useful when you want to hot backup a VM that contains an independent .vmdk disk, as excluding it may not be enough.

4.7.1 Fixed bug on regexp to match IPs in the --backup-point validation.

4.7.0 Added --on-error and --on-success arguments that allow transmitting the XSIBackup PID, argument list and errors to any HTTP URL for them to be proccessed or logged.

4.6.5 Multiple e-mail addresses accepted as a comma delimited list. Backups to same folder (no --date-dir) will be always overwritten to avoid vmkfstools error: "The file already exists (39)". Added colors to denote success, warnings and errors in a more visual friendly way.

4.6.4 SMART report is now optional, new option --smart-info has been added to set/unset this feature. Hole punching will only be done when the --backup-how flag has been set to "cold" (--backup-how=cold) to avoid a lock message being displayed causing some confusion.

4.6.3 Modifications made to Rsync to allow bigger buffer and block sizes in delta checksums. VMDK data file sizes are now compared previous to making an IP xsibackup-rsync copy on a .vmdk or -delta.vmdk virtual disk. If they use the same number of blocks, then MD5 checksum in both end files is performed. If the result of the MD5 hash matches there is no need to copy the .vmdk virtual disk. This avoids inner checksums when both files are identical. Rsync can't use size and timestamp because the latter is not preserved in VMFS and it can only know about apparent sizes and not real used blocks in thin disks. In any case MD5 is better than a simple, size plus timestamp comparison. Exception trapped and informed as a controlled error when backing up through IP and a .vmdk disk is missing. Some minor bug fixes have also been acomplished.

4.6.2 Added support to backup VMs located in datastore subfolders.

4.6.1 Fixed bug that would return incorrect VM size when using disk exclusions.

4.6.0 Guest system will be quiesced if VMWare Tools are detected to be installed in the guest OS. S.M.A.R.T. report for every disk in your ESXi system. A banner will appear in the e-mail report encouraging to make a donation to get full docs on how to use XSIBackup report as a marketing tool. NOTE!!: we have changed the way the file logo1.gif is downloaded in the e-mail report ?f=logo1.gif so that we can at least have a bare idea about the base of XSIBackup users. Of course you can get rid of it at any time.

4.5.0 Now XSIBackup uses its own DSA key pair instead of using the default. This allows persistance of this key pair across reboots and thus maintain links between servers avoiding to re issue --link-srv=[IP of linked server] after every reboot.

A PID file is created to allow follow up of the process state. Only one XSIBackup process is allowed at a time. If a second process is triggered manually the user will be given the option to delete the current PID file and launch a second process. Some small bugs have also been fixed.

4.4.0 Now it is possible to use vmkfstools or rsync for local backups by using the --backup-prog switch. Over the network transfers will only be possible with rsync. By combining the --backup-prog switch with the --date-dir argument you can mirror or build backup catalogs to a local datastore or over the network. A new argument --backup-room is also introduced that will allow to set the ammount of disk space that XSIBackup will use for its date subfolder backups. BUGFIX: added the -f flag to HOSTNAME=$(hostname -f) to get the fully qualified domain name under ESXi 6.0 (thanks to Jayce for reporting the bug).

4.3.1 Fixed bug, local rsync differential backups now allow spaces in paths.

4.3.0 Support for TLS e-mail communications. Added Rsync option for local backups between datastores that will allow to do differential mirroring of disks locally. Improved error reporting and minor bugs fixed.

4.2.5 Added support for multiple times in each cron line. You don't need to set a different line for each backup to be executed. You can separate different times with the format "Day hh:mm" by using the pipeline character (i.e. --time="Mon 10:30|Mon 21:30|Tue 11:31|Sat 03:21") This version is backward compatible, so you can keep your old multiple line cron file. Cron info is completely wiped now once you remove with --install-cron and added again if you run this command again and choose to reinstall.

4.2.4 Added full support for no athentication. Allows to use open SMTP relays inside a LAN. See the help section for details. Opening an open SMTP relay even inside a LAN requires you to be very confident you have a controlled environment. Use at your own risk.