Let G = (V;E) be an n-vertices m-edges directed graph with edge weights in the range [1;W] and L = log(W). Let s 2 V be a designated source. In this paper we address several variants of the problem of maintaining the (1 +ϵ)-approximate shortest path from s to each v 2 V n fsg in the presence of a failure of an edge or a vertex. From the graph theory perspective we show that G has a subgraph H with Õ (nL) edges such that for any x; v 2 V, the graph H n x contains a path whose length is a (1 +ϵ)-approximation of the length of the shortest path from s to v in G n x. We show that the size of the subgraph H is optimal (up to logarithmic factors) by proving a lower bound of (nL/ϵ) edges. Demetrescu, Thorup, Chowdhury and Ramachandran  showed that the size of a fault tolerant exact shortest path subgraph in weighted directed/undirected graphs is (m). Parter and Peleg  showed that even in the restricted case of unweighted undirected graphs the size of any subgraph for the exact shortest path is at least (n1:5). Therefore, a (1 +ϵ)-approximation is the best one can hope for. We consider also the data structure problem and show that there exists an O(nL/ϵ) size oracle that for any v 2 V reports a (1 +ϵ)-approximate distance of v from s on a failure of any x 2 V in O(log log1+ϵ (nW)) time. We show that the size of the oracle is optimal (up to logarithmic factors) by proving a lower bound of (nL/log n). Finally, we present two distributed algorithms. We present a single source routing scheme that can route on a (1 +ϵ)-approximation of the shortest path from a fixed source s to any destination t in the presence of a fault. Each vertex has a label and a routing table of O(L/ϵ) bits. We present also a labeling scheme that assigns each vertex a label of eO (L/ϵ) bits. For any two vertices x; v 2 V the labeling scheme outputs a (1 +ϵ)-approximation of the distance from s to v in Gnx using only the labels of x and v.