> ## Documentation Index
> Fetch the complete documentation index at: https://docs.trainy.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# File + Directory Upload

> Example task yamls for cloud storage

This example also demonstrates inline env variable use with `${TEST_DIR}` and `${TEST_FILE}`.

## Prerequisites

#### Config.yaml (`~/.konduktor/config.yaml`)

```
allowed_clouds:
  - {s3, gs}
```

#### Setup

1. Set up cloud storage credentials
2. Check cloud storage setup with:

```
$ konduktor check {gs, s3}
```

For more details, check out the setup of cloud storage <a href="/setup#optional-setup-cloud-storage-credentials" target="_blank">here</a>.

#### Current Working Directory

```
$ ls
task.yaml   static_dir/a.txt   test_dir/b.txt   static.txt   test_file.txt
```

#### Launching

```
$ konduktor launch --env TEST_DIR=test_dir --env TEST_FILE=test_file.txt task.yaml
```

## Task.yaml

```
name: file-directory-upload

file_mounts:
  ~/${TEST_DIR}: ./${TEST_DIR}
  ~/static_dir: ./static_dir
  ~/${TEST_FILE}: ./${TEST_FILE}
  ~/static.txt: ./static.txt

resources:
  cpus: 1
  memory: 1
  image_id: ubuntu
  labels:
    kueue.x-k8s.io/queue-name: user-queue
    maxRunDurationSeconds: "600"

run: |
  if [ -f ~/${TEST_DIR}/b.txt ]; then
    echo "File exists"
  else
    echo "File does not exist"
    exit 1
  fi
  if [ -f ~/static_dir/a.txt ]; then
    echo "File exists"
  else
    echo "File does not exist"
    exit 1
  fi

  if [ -f ~/${TEST_FILE} ]; then
    echo "File exists"
  else
    echo "File does not exist"
    exit 1
  fi
  if [ -f ~/static.txt ]; then
    echo "File exists"
  else
    echo "File does not exist"
    exit 1
  fi
```
