Understood everything except

or by waiting for an event with event (the progress of a pull model backup is under the control  of  whatever third  party  connects  to  the NBD export)

How do I wait for an event with event. Can you please give an example.

However, the clarification till now is sufficient for me. Specially the link was very helpful.

One more thing, There are some documents which say: 
backup-begin <domain> [--backupxml <string>] [--checkpointxml <string>] [--reuse-external]
There are others which say:
backup-begin domain [backupxml] [checkpointxml] [--reuse-external]
Which syntax is right?

On Sat, Jan 15, 2022 at 3:19 AM Peter Krempa <pkrempa@redhat.com> wrote:
On Fri, Jan 14, 2022 at 23:39:10 +0600, Ahmad Ismail wrote:
> Normally when I backup a kvm machine I shutdown the machine then run:

[...]

> The problem with this help is, it is not clear enough.
>
> I understand that I should use virsh backup-begin vm1 to backup a live kvm
> machine. However, this command only create .qcow2 files. What about the .xml
> file.
>
> What does --backupxml , --checkpointxml & --reuse-external actually do?
>
> When should I use them?

'man virsh' states:

   backup-begin
       Syntax:

          backup-begin domain [backupxml] [checkpointxml] [--reuse-external]

       Begin a new backup job. If backupxml is omitted, this defaults  to
       a  full  backup  using a push model to filenames generated by lib‐
       virt; supplying XML allows fine-tuning such as requesting  an  in‐
       cremental  backup  relative  to an earlier checkpoint, controlling
       which disks participate or which filenames are  involved,  or  re‐
       questing  the use of a pull model backup.  The backup-dumpxml com‐
       mand shows any resulting values assigned by libvirt. For more  in‐
       formation           on          backup          XML,          see:
       https://libvirt.org/formatbackup.html

       If --reuse-external is used it instructs libvirt to  reuse  tempo‐
       rary and output files provided by the user in backupxml.

       If checkpointxml is specified, a second file with a top-level ele‐
       ment of domaincheckpoint is used to create a  simultaneous  check‐
       point,  for  doing a later incremental backup relative to the time
       the backup was created. See checkpoint-create for more details  on
       checkpoints.

       This  command returns as soon as possible, and the backup job runs
       in the background; the progress of a  push  model  backup  can  be
       checked with domjobinfo or by waiting for an event with event (the
       progress of a pull model backup is under the control  of  whatever
       third  party  connects  to  the NBD export). The job is ended with
       domjobabort.


Does this clarify it sufficiently?