[kwlug-disc] GNU tar incremental backup bug?

Ron ron at bclug.ca
Mon Oct 27 00:54:21 EDT 2025


I've had quite a struggle with tar incremental backups recently.

Feels like a bug, even if only in the documentation.

Curious to hear the wisdom of this crowd.


Synopsis:

I want to make an archive. Then, incrementally archive some time later.

Extracting the archives should leave destination with results that match
source (at time of last archive), including the *absence* of files
captured in earlier archives then *deleted* from source file system
prior to subsequent archive.


This would not work as I anticipated, nor as the docs indicated (by my
reading), nor as ChatGPT 4o-mini or Claude Haiku 3.5 all agreed should work.


The key is using --listed-incremental=snapshot.file:

# touch file1 file2
# tar --listed-incremental=snapshot.file 1.tar file?
file1
file2

# rm file2
# touch file3

# tar --listed-incremental=snapshot.file 2.tar file?
file3

# mkdir untar
# cd untar

# tar --listed-incremental=../snapshot.file -xvvf ../1.tar
file1
file2
# tar --listed-incremental=../snapshot.file -xvvf ../2.tar
file3

# ls -l
file1
file2
file3

^-- file2 should *not* exist at this point, per docs:

https://www.gnu.org/software/tar/manual/html_node/Incremental-Dumps.html

> The option ‘--listed-incremental’ instructs tar to operate on an 
> incremental archive with additional metadata stored in a standalone 
> file, called a snapshot file. The purpose of this file is to help 
> determine which files have been changed, added or *deleted* since
> the last backup


Turns out, it will *only* work if the source to tar does not contain a 
file glob, like `file?`.

The snapshot file will contain no info about what was archived and tar 
won't therefore know to remove file2.


Does this make sense, or sound like a bug?


Turns out, it can be made to work:

Extracting ../2.tar with --incremental-listed:
drwxr-xr-x root/root        15 2025-10-26 21:48 ./source/
tar: Deleting ‘./source/file2’
-rw-r--r-- root/root         0 2025-10-26 21:48 ./source/file3


If I run `tar ... file*` then no incremental archive.

If I run `tar ... $folder_name` then everything works as desired.


Very weird, counter-intuitive, and not documented (IMHO).

What do you think?



More information about the kwlug-disc mailing list