Symlink deployment solves the downtime problem during site updates. Instead of copying files into a working directory (which creates a window where the site is partially updated), rsync uploads a new version to a separate folder releases/20260524-1200/, then ln -sfn switches the current/ symlink. The operation is atomic — nginx instantly sees either the old or the new version in its entirety. Users don't notice the update.
Comparison with Other Methods
FAQ
What if symlink switches to a broken build?
Health-check after switching verifies the home page. If it returns non-200, symlink reverts to previous version. Users don't notice. GitHub CMS validates the build before rsync.
How much space do 10 versions take?
A static site of 50-100 pages is 5-15 MB per version. 10 versions = 50-150 MB. Negligible on a 20 GB VPS.
Deploy with Zero Downtime Today
GitHub CMS Pro — symlink deployment built-in. Git push → 2 minutes → production.