Qual é a diferença entre "over the years", "in years" e "for years"?

Em anos

e

por anos

normalmente significam a mesma coisa: um período de tempo no passado que consiste em anos.

"Eu não o vejo há anos" e "eu não o vejo há anos" significam o mesmo, embora para meus ouvidos "há anos" pareça mais informal ou idiomático.

Só as vezes

por anos

é apropriado: "Durante anos, ela se perguntou se ele voltaria para casa". Nesse uso, significa "por muitos anos" da mesma maneira que você pode dizer "por cinco anos".

Ao longo dos anos

é diferente. É usado quando você está pensando em um longo período de tempo (geralmente no passado) e considerando algo que aconteceu ou irá acontecer

durante

naquela época:

"Esta cidade mudou muito ao longo dos anos."

"Ao longo dos anos, a empresa cresceu de uma pequena operação administrada por duas pessoas para uma grande organização multinacional que emprega milhares".

"