Animate tori around surface of another torus
Because the Curve modifier on a cyclic curve is itself cyclic with respect to the deformed object's location, you can do this with 2 curve modifiers.


Create a curve-sheet made of multiple. straight, subdivided segments (note the orientation):




I created mine by taking the loops out of a subdivided plane, and converting to a curve.

In the next step, we will create a circle to deform this sheet into a tube.To get the measurements right, arrange for the Z-dimension of this curve-sheet to be 2*pi*[the circle's radius] with the scale applied, and then delete the top line.


Create a Curve-circle of the minor radius, which we will use with a Curve modifier to roll the sheet into a tube (again, note the orientation of its local axes)..
..and create a second Curve-circle for the major radius, at right-angles to the first, but with local axes aligned in the same way as the first, as shown:





Assign 2 Curve modifiers, the first to roll the sheet into a tube around the minor circle, and the second to roll the tube into a torus. Both modifiers and their settings are shown here, with only the first active in the view):




..This is with the second modifier active, too:




(You can use either the curve object's native profile to give it thickness, or give it a bevel object)
With these orientations you can get a cyclic animation by keying 2 (linear-interpolation) frames of the sheet's Z location. 0 at frame 1, a whole-number multiple of the Z-gap between the segments on the last frame:




It's probably sensible to parent the whole lot to an empty, so you can move it about without it falling apart.

2.79 version here (which will open in 2.8, too):