For those people already utilizing third party sync tools such as Rsync or Unison, it might be preferable not to use the built-in remote publishing facilities of Org mode which rely heavily on Tramp. Tramp, while very useful and powerful, tends not to be so efficient for multiple file transfer and has been known to cause problems under heavy usage.
Specialized synchronization utilities offer several advantages. In addition to timestamp comparison, they also do content and permissions/attribute checks. For this reason you might prefer to publish your web to a local directory—possibly even in place with your Org files—and then use Unison or Rsync to do the synchronization with the remote host.
Since Unison, for example, can be configured as to which files to
transfer to a certain remote destination, it can greatly simplify the
project publishing definition. Simply keep all files in the correct
location, process your Org files with org-publish
and let the
synchronization tool do the rest. You do not need, in this scenario,
to include attachments such as JPG, CSS or PNG files in the project
definition since the third-party tool syncs them.
Publishing to a local directory is also much faster than to a remote
one, so that you can afford more easily to republish entire projects.
If you set org-publish-use-timestamps-flag
to nil
, you gain the
main benefit of re-including any changed external files such as source
example files you might include with ‘INCLUDE’ keyword. The timestamp
mechanism in Org is not smart enough to detect if included files have
been modified.