Looking for a better way with Reporting Db server
I would suggest 2 options ...

If you are using 


Enterprise edition then 


SQL server 2014 Enterprise edition will give you AlwaysON Availablity groups .. which you can use to offload reporting on secondary. 

Standard edition then 


You can use logshipping with delaying on transaction logs on secondary in STANDBY mode. The only caveat will be that when the transaction logs are being restored, all the users will be kicked out of the secondary server.



(I am not mentioning database mirroring, but you can use that (even though it is marked as deprecated. You can create database snapshot on secondary and every 2-3 hrs, you can generate a new one since your requirement is - data can be stale 2-4hours)

When using backup/restore method, make sure that you have enabled Instant file initialization and you are using backup compression. That will cut down the backup/restore time.