A lot depends on who you want to have control over the process. Most approaches to this type of problem are based on a client server model and it is the client which controls what happens and when.
So if it is a question of getting a file onto a Rabbit device and retrieving the same file or some other file at a later date then you would have the FTP server running on the Rabbit and an FTP client running on the PC.
If it is a question of the Rabbit sending a file to a PC or retrieving a file from a PC then the roles are reversed.
It all depends on who needs to be in control, worst case would mean trying to run FTP client and server on the Rabbit but it is starting to get messy if you have to go down that route.
Another possibility for file transfer to and from a device would be BACnet (see https://sourceforge.net/projects/bacrabbit/ and https://sourceforge.net/projects/bacnet/ for examples) using the File object and associated services. This is still a client/server approach so the same caveats apply.