$ tar -C /tmp/root3 -cvf test.tar .
./
./.config/
./.config/test
./.local/
./var/
./var/db/
./var/db/xbps/
or even like this $ tar -cvf test2.tar root3/
root3/
root3/.config/
root3/.config/test
root3/.local/
root3/var/
root3/var/db/
root3/var/db/xbps/
No special options were needed. But, if I do it this way, then, there are definitely missing all dot directories: $ tar -cvf test2.tar root3/*
root3/usr/
root3/usr/bin/
root3/usr/bin/xbps-uunshare
But this problem is not a tar's problem. That's only because "*" mask doesn't match dot files: $ echo root3/*
root3/usr root3/var
For that purpose, you need to clearly add a dot: $ echo root3/.*
root3/.config root3/.local
Thus, the solution might be $ tar -cvf test2.tar root3/.* root3/*
root3/.config/
root3/.config/test
root3/.local/
root3/usr/
root3/usr/bin/
But, I'd rather stick to "-C dir/" option instead of relying on "*" mask in this case. $ getconf PATH
/usr/bin
$ ls -l /usr/bin/sh
lrwxrwxrwx. 1 root root 4 Jan 2 2023 /usr/bin/sh -> bash
$ ls -l /bin/sh
lrwxrwxrwx. 1 root root 4 Jan 2 2023 /bin/sh -> bash
$ ls -ld /bin
lrwxrwxrwx. 1 root root 7 Aug 9 2022 /bin -> usr/bin
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V...
Interesting fact about the FreeBSD tar's origins:
https://man.freebsd.org/cgi/man.cgi?query=tar
My personal journey with FreeBSD began with version 5.3 (the first stable release on the 5th branch) in November 2004. I was completely unaware of such a significant tar change, and apparently I didn't care at the time. However, the entire 5th branch has been so revolutionary compared to the 4th branch that this change is just a drop in the bucket ;)