bitcoind – Why does Bitcoin Core need to reindex the chainstate directory in some cases?

I’ve read that some people can migrate their existing index directories to a new system without having to reindex. But it seems to me that the chainstate directory is “corrupted”. Even though that file worked fine on the previous node. I don’t think it’s actually corrupted, but Bitcoin Core is not reading it correctly. Why doesn’t the migration process work for some people like me? Just to be clear, I deleted the following 3 index directories on the new hardware (using the rsync command) before copying the files from the old hardware:
bitcoin/blocks/index/
bitcoin/indexes/
bitcoin/chainstate/
And using reindex-chainstate=1 in the config file takes a long time (it’s already been 3 days and I’m not even halfway done).
There may be things you need to configure for the chainstate directory to make it compatible with bitcoind on new nodes.