Reducing size of hash function If I have some data I hash with SHA256 as hash=SHA256(data) and then copy only the first 8 bytes of the hash instead of the whole 32 bytes. How easy is it to find a hash collision with different data? Is it $2^{64}$ or $2^{32}$?

And uf I need to reduce a hash of some data to a smaller size ($n$ bits) is there any way to ensure the search space $2^n$?
Even in a perfect world (the random oracle model) there's no way to ensure first-preimage and second-preimage resistane of more than $2^n$ and collision resistance of more than $2^{n/2}$. (Wie $n$ bytes as the output size of the hash function.) That's the maximum you will ever be able to archive.

Cutting off some bytes of the output of a secure hash algorithm doesn't hurt the security more than you have to expect. With an output of $8$ bytes ($n = 64$ bits) from (for example) SHA-256 you have first-preimage and second-preimage resistance of $2^{64}$ and collision resistance of $2^{32}$.