> For the complete documentation index, see [llms.txt](https://docs.nuvolos.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.nuvolos.com/how-to-guides/common-workflows/working-with-files.md).

# Working with files

<mark style="color:$primary;">**Outcome**</mark>\
You add files to your instance - by upload, Git clone, direct download, or external storage mount.

<mark style="color:$primary;">**Before you start**</mark>

* You hold at least the **Instance Editor** role in the target instance.
* You are in the Current state of the instance - files cannot be modified in a snapshot view.
* You know where your source data currently lives (local machine, Git repository, public URL, or external storage).

Files in Nuvolos live inside an Instance, accessible from the Files view in the sidebar and from inside any application running in that instance. The procedures below work the same way for any role - what differs is the typical use case (instructors uploading teaching materials, students working on assignments, researchers adding code and data).

### Upload files via the web interface

The simplest path for individual files:

{% stepper %}
{% step %}
Navigate to the space and instance where you want the file.
{% endstep %}

{% step %}
On the sidebar, click the folder icon to open the Files view.
{% endstep %}

{% step %}
On the top left, click **UPLOAD** and choose your file.
{% endstep %}
{% endstepper %}

{% hint style="info" %}
The web UI uploads individual files. To upload a folder, compress it locally first (`.zip` or `.tar.gz`), upload the archive, then extract it from the ... Actions menu in the Files view. Supported archive formats include `zip`, `tar`, `tar.gz`, `bz2`, and `tgz`.
{% endhint %}

### Clone a Git repository

Best when your code is already version-controlled. Open a terminal in any application and clone normally:

<pre class="language-sql" data-overflow="wrap"><code class="lang-sql"><strong>git clone &#x3C;repository-url>
</strong></code></pre>

If the repository is private, generate an SSH key inside the application and add the public key to the repository's accepted keys. The Nuvolos-generated key persists in the Instance, so cloning continues to work for future sessions.

### Download directly from the internet

Skip your local machine when the data is already at a public URL. From a terminal in any application:

{% code overflow="wrap" %}

```sql
wget <url>
```

{% endcode %}

You can also use curl, or any API call from a Python or R script that downloads to disk. The `wget` command is available in every Nuvolos application by default.

### Mount external storage

If your data lives in cloud storage you already use, mount it as a folder in your instance rather than copying. Most well-known storage services are supported via [rclone](https://rclone.org/overview/):

* Amazon S3
* Azure files
* Dropbox
* Google Drive
* Box
* SharePoint Online

Setup uses the [rclone mount add-on](/reference/applications/add-ons/rclone-mount-add-on.md). For specific guidance on the more common services, see the dedicated reference pages: [Dropbox](/reference/file-system-and-storage/mount-dropbox.md), [S3 buckets](/reference/file-system-and-storage/access-s3-buckets-with-rclone.md), [SSHFS](/reference/file-system-and-storage/access-remote-files-with-sshfs.md), and [SharePoint Online](/reference/file-system-and-storage/access-files-on-sharepoint-online.md).

### Larger datasets

For datasets that don't fit comfortably on the per-instance file system (typically above 100 GB), see [Reference › File Storage](/reference/file-system-and-storage/large-file-storage.md) for Large File Storage.
