# Intented use for \`publish\`, \`export\` and \`push\`

**URL:** <https://guildai.org/t/intented-use-for-publish-export-and-push/702>\
**Category:** General\
**Created:** [May 4, 2021, 10:28pm UTC](https://guildai.org/t/intented-use-for-publish-export-and-push/702 "2021-05-04T22:28:37Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![copah](https://avatars.discourse-cdn.com/v4/letter/c/9fc29f/32.png) [@copah](https://guildai.org/u/copah)\
**Post date:** [May 4, 2021, 10:28pm UTC](https://guildai.org/t/intented-use-for-publish-export-and-push/702/1 "2021-05-04T22:28:37Z")

</div>

I am wondering what the intended use cases for these three different commands are and how they differ.

I have used `guild export` for copying runs locally, `guild push` for pushing to remote storage locations. I’ve never used the `guild publish` command.

@garrett can you maybe shed some light on the different intended use cases for these three commands?

---

<div class="post-metadata">

**Author:** ![garrett](https://yyz1.discourse-cdn.com/flex031/user_avatar/guildai.org/garrett/32/224_2.png) [@garrett](https://guildai.org/u/garrett)\
**Post date:** [May 7, 2021, 7:24pm UTC](https://guildai.org/t/intented-use-for-publish-export-and-push/702/2 "2021-05-07T19:24:10Z")

</div>

Good question!

`export` is a straight copy of the run directory. This is used to create archives, either to cleanup you working directory (e.g. to focus on a active runs without complicating commands with runs that you’re not currently interested in) and to backup runs to a file system.

- `push` is a remote operation, so Guild is going to copy or move runs to another system. Guild supports a variety of remotes including S3, Azure, ssh, and even GitHub (via gists). Use this when you want to backup or share runs across systems.

- `publish` generates an HTML report of runs. Use this to share run results with others. Note that run directories are not copied in this case.

So high level differences:

- Use `export` to archive runs to a local system directory
- Use `push` to copy or move runs to other systems
- Use `publish` to generate an HTML report of runs
