I am curious how those of you who use a multi-environment development process handle user upload directories? If you use a remote database and one developer uploads some test content, the shared database will think there are files on the other developers machine and they won't be there. This would also show its face if you access a staging server. The database would be out of sync with the upload directory.

Thanks for your input.

  • Thanks for the feedback. I "think" I have found a pretty nifty solution to the problem. I have been using Amazon S3 as my assets source which solves the issue. I was recently thinking about switching back to local storage to see if there would be any performance gains but then I thought about the version control issue I asked about. Is anyone seeing any downsides to using Amazon S3 in this situation? By using that, everybody can upload/download and it all stays in sync with the shared development database.
    – Jacob Graf
    Commented Jul 16, 2014 at 21:37

3 Answers 3


We use rsync. This can either be run manually with your CLI or you could set up a cron to run it every so often. It's significantly faster than FTP.

  • Which folders do you rsync with?
    – Jacob Graf
    Commented Jul 16, 2014 at 15:28
  • 1
    This will depend a bit on how your environment structure is setup, but we just do public/uploads and then keep all Assets paths to that folder. Those are the only files that change on a remote environment that wouldn't otherwise be in our repo.
    – Ryan Shrum
    Commented Jul 16, 2014 at 15:31
  • So each of your developers sync to a central development server?
    – Jacob Graf
    Commented Jul 16, 2014 at 15:36
  • 1
    Just in terms of the uploads; rsync is run to each dev's local setup. dropbox.com/s/o7u9w1ft2wi1zw8/rsync.jpg All the other files are handled via Git and go upwards
    – Ryan Shrum
    Commented Jul 16, 2014 at 15:54
  • For my own understanding: @RyanShrum When you say "repo", do you mean git repo? Are you excluding these files from your git repo? If so, why? If they were in git repo, couldn't each developer pull them down to respective local dev environments, and then the shared remote dev DB would know about them? Commented Jul 16, 2014 at 15:57

I think Ryan's solution is the best, but since you're looking for other ways...

Transmit's sync feature works very well for user upload directories. Sync down or sync up as needed. I use this only for user upload directories (for me html/assets). Everything else is handled with Git, similar to the way Ryan described. I also gitignore the user upload directories (seems the wise thing to do).

Here is a screenshot of Transmit's sync dialogue.

Transmit sync dialogue


I just ran across this with a dev enviroment and live enviroment. I ended up setting the asset url as an absolute path pointing to live. So that when entries are created on live, and images are uploaded, dev will then use the urls from live for the images, since I have dev and live both pointing to the same db.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.