Why BIT use complex include/exclude patterns?

I try to understand why BIT does call rsync that way it does. Here is one example: rsync --recursive --times --devices --specials --hard-links --human-readable --links --perms --executability --group --owner --info=progress2 --no-inc-recursive --rsh=ssh -o ServerAliveInterval=240 -o LogLevel=Error -o IdentityFile=/home/user/.ssh/id_rsa -p 22 --delete --delete-excluded -v -i --out-format=BACKINTIME: %i %n%L --chmod=Du+wx --exclude=/tmp/tmpis8vc03n/.local/share/backintime/mnt/1_61639 --exclude=/tmp/tmpis8vc03n/.local/share/backintime --exclude=.local/share/backintime/mnt --include=/tmp/tmpns6f8qt7/ --include=/tmp/ --exclude=.gvfs --exclude=.cache/* --exclude=.thumbnails* --exclude=.local/share/[Tt]rash* --exclude=*.backup* --exclude=*~ --exclude=.dropbox* --exclude=/proc/* --exclude=/sys/* --exclude=/dev/* --exclude=/run/* --exclude=/etc/mtab --exclude=/var/cache/apt/archives/*.deb --exclude=lost+found/* --exclude=/tmp/* --exclude=/var/tmp/* --exclude=/var/backups/* --exclude=.Private --include=/tmp/tmpns6f8qt7/** --exclude=* / user@localhost:"/tmp/tmp80iu7iq1/foo/backintime/test-host/test-user/1/new_snapshot/backup" It seems to me that the "source" is "/", the whole file system. Am I right? Why is that? Why not only specify explicite the folders the user want to include? The "real source" is "/tmp/tmpns6f8qt7/" which is included via "--include". But also its parent "/tmp/" is included. Why is that? But also "everything" (because of "*") is excluded. I think I need a break. ;)

Hi! On 06.10.2022 16:44, c.buhtz@posteo.jp wrote:
Yes, I see the same. This is probably to allow later inclusion of more high-level dirs. If you first include just /home/me/Documents/Work, but later you want to include all of /home/me, then you don't need to "re-base" the backup, because the parent dirs /home/me already exist, and can be filled with more included files at any time.
The "real source" is "/tmp/tmpns6f8qt7/" which is included via "--include". But also its parent "/tmp/" is included. Why is that?
Probably to allow this "parent-folder" structure I explained above. The goal is to have the directory tree from / on downwards represented in the target dir, like /mnt/backupdisk/home/me/Documents. Note that a trailing '/' means 'everything inside the named dir'. If you have: - /home/me/Documents - /home/me/Music then if will make a difference if you call 'rsync /home/me' or '/home/me/': - 'rsync /home/me' will transfer 'me/Documents' and 'me/Music' - 'rsync /home/me/' will transfer just 'Documents' and 'Music' So if you want to recreate /tmp/tmpns6f8qt7 in a target dir like /mnt/backupdisk/, then running just 'rsync /tmp/ /mnt/backupdisk/' would give you /mnt/backupdisk/tmpns6f8qt7 – and not /mnt/backupdisk/tmp/tmpns6f8qt7. So that's probably why /tmp/ (and / !) are included explicitly.
But also "everything" (because of "*") is excluded.
I have no idea what that does. Please explain if you learn why ;) Cheers, Michael

Moin moin On 2022-10-09 17:21 Michael Büker <foss@michael-bueker.de> wrote:
It is just an assumption. Everything is included via "/". And you explained why this is useful: To mirror the original complete folder structure from the backup source in the backup destination (the snapshot/sid) also. Just because of that everything need to be excluded also "*". It is a bit like "Von Hinten durchs Auge.". :D

Hi! On 06.10.2022 16:44, c.buhtz@posteo.jp wrote:
Yes, I see the same. This is probably to allow later inclusion of more high-level dirs. If you first include just /home/me/Documents/Work, but later you want to include all of /home/me, then you don't need to "re-base" the backup, because the parent dirs /home/me already exist, and can be filled with more included files at any time.
The "real source" is "/tmp/tmpns6f8qt7/" which is included via "--include". But also its parent "/tmp/" is included. Why is that?
Probably to allow this "parent-folder" structure I explained above. The goal is to have the directory tree from / on downwards represented in the target dir, like /mnt/backupdisk/home/me/Documents. Note that a trailing '/' means 'everything inside the named dir'. If you have: - /home/me/Documents - /home/me/Music then if will make a difference if you call 'rsync /home/me' or '/home/me/': - 'rsync /home/me' will transfer 'me/Documents' and 'me/Music' - 'rsync /home/me/' will transfer just 'Documents' and 'Music' So if you want to recreate /tmp/tmpns6f8qt7 in a target dir like /mnt/backupdisk/, then running just 'rsync /tmp/ /mnt/backupdisk/' would give you /mnt/backupdisk/tmpns6f8qt7 – and not /mnt/backupdisk/tmp/tmpns6f8qt7. So that's probably why /tmp/ (and / !) are included explicitly.
But also "everything" (because of "*") is excluded.
I have no idea what that does. Please explain if you learn why ;) Cheers, Michael

Moin moin On 2022-10-09 17:21 Michael Büker <foss@michael-bueker.de> wrote:
It is just an assumption. Everything is included via "/". And you explained why this is useful: To mirror the original complete folder structure from the backup source in the backup destination (the snapshot/sid) also. Just because of that everything need to be excluded also "*". It is a bit like "Von Hinten durchs Auge.". :D
participants (2)
-
c.buhtz@posteo.jp
-
Michael Büker