1. tar will not screw up something on the source dir/subdirs
True, unless you count updating access times as screwing up. Other than that, tar doesn't change anything in the source tree.
2. tar will add to archive as it found in the moment of building archieve
True, for some value of “in the moment”. If the source tree changes while tar is reading it, what is included in the archive is somewhat unpredictable. In particular, if a file changes while tar is reading it, there is no guarantee that tar will write a copy of the file as it was at some moment in time. For example, it's possible to have:
- tar reads bytes 0–4095 of
- Some program writes to
foo, changing bytes 4095–4096 in a single write operation.
- tar reads bytes 4096–8191 of
Then the content of
foo in the archive is neither the old content nor the new content, it's a mixture of the two. Another example is that if a file is renamed while tar is reading the source tree, tar might skip it altogether.
3 . success signal will be emitted even if described changes occurred
No, not necessarily. If tar detects that the source has changed while it's reading it, it might complain and return a failure status. In particular, tar needs to write the size of a file to the archive before it writes the content, so it reads the size of each source file first. If it reaches the end of the file before reaching the recorded size, there's no obvious way to recover, so any tar implementation should complain in at least that case.
To make backups safely, use filesystem- or volume-level tools to make a snapshot, and back up the snapshot.