That's an interesting idea. However, I'm not sure how long Lagrange points would truly last as "safe" places to store data.
Another solution would be to use physical "error correcting codes":
First, the "physical" part of that: there are lots of things you could try, such as reordering the particles of dust on the moon, in such as way that they collectively hold "patterns". Or, you could fiddle with the orbits of small objects (e.g. asteroids) so that they collectively contain a pattern that can be read with a telescope.
Now the "error correcting code" part: even if you pick that pile of moon dust up, shake it, and then put it back, there will still be enough of a pattern there to reconstruct the information you "stored" in it. The same if you screwed up the orbits of the planets. If you use the right kind of code, you would have to do quite a lot of damage to the object in order to lose the information.
Consider this: let's say you want to preserve a string of 50 bits -- that is, 50 1's and 0's. You feed those bits into an "encoding algorithm" that spits out a string 100 bits long, twice the length of the original string. Now, this new string has the property that if you flip any 25 of the bits, say, and hand it to me, I can still recover the original string of length 50. The "decoding algorithm" I use will map any corruption of up to 25 bits back to the original string. (Maybe one can do better than 25 flips; I forget the optimal codes for this, and am too lazy to do the calculations in bed at this hour).
One can also take into account "deletions" and "insertions", where the corruptions aren't just bit-flips, but can involve adding little random strings in places, or deleting little strings, just like what happens in DNA sequences when errors occur. For these, you can also build error correcting codes -- say, that are resistant to a large % of the bits being deleted, added, or flipped.
And one can go further with this, and in place of "strings", work with 2D grids of 1's and 0's -- or 3D grids... or 4D, etc.
Even more general, still, would be to represent the "string" or structure as a graph, where each node holds a 1 or 0 value, and two nodes are connected if they are intended to be "close by" each other, such as in a pile of moon dust particles. Shaking the moon dust would amount of making some edge deletions and insertions; but the rough structure of the graph would remain intact.
If a long-extinct alien species used a method like that to record the history of their civilization, we might never be able to decode it, because we wouldn't know where to look or what encoding algorithm they used. Those should probably be things preserved lots of different ways, in lots of different places, so that they aren't forgotten.