You can configure IBGP between your two routers at each site, and use route maps to set the metrics of the routes being advertised from each site.
e.g.
Site one, Router 1
------------------
access-list 1 permit 10.0.0.0
route-map set_metric permit 10
match ip address 1
set metric 10
router bgp 100
neighbor 11.0.0.1 route-map set metric out
Site one, Router 2
------------------
access-list 1 permit 10.0.0.0
route-map set_metric permit 10
match ip address 1
set metric 20
router bgp 100
neighbor 11.0.0.2 route-map set metric out
The routes with the higher cost won't be advertised into BGP unless the link or the neighbour that's adverstising the lower cost routes is unreachable.
On your routers, you could redistribute BGP routes into EIGRP or OSPF, and also configure this on your Core switch.
You core switch will forward traffic to the router learning routes with the lowest cost, if this link or the peer router fails then the higher cost routes will be learned via the second link and redistributed into EIGRP/OSPF and your clients will start using the second link.
You can also configure load sharing across these links if you have multiple subnets on your local network.
HTH
Paddy