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

# File storage

> Manage file storage resources.

**Aliases:** `fs`, `filestorage`

Manage [file storage](https://docs.nscale.com/docs/storage/file-storage.md): shared NFS filesystems that instances and Kubernetes clusters on the same network can mount. Every command acts in the organization given by `--org`, or the one saved in your [context](https://docs.nscale.com/docs/cli/contexts.md).

Commands that act on one file storage resource take its ID or name either as a positional argument or with `--id`. If you omit it, the CLI opens an interactive picker, so always pass it in scripts.

## Subcommands

* [list](#list) — List file storage resources
* [classes](#classes) — List file storage classes
* [get](#get) — Get file storage details
* [create](#create) — Create a new file storage resource
* [update](#update) — Update an existing file storage resource
* [delete](#delete) — Delete a file storage resource

**Manual snapshots** (aliases: `snapshot`, `snapshots`)

* [snapshot list](#snapshot-list) — List manual snapshots of a file storage resource
* [snapshot get](#snapshot-get) — Get manual file storage snapshot details
* [snapshot create](#snapshot-create) — Create a manual snapshot of a file storage resource
* [snapshot delete](#snapshot-delete) — Delete a manual file storage snapshot

**Snapshot policies** (aliases: `snapshot-policy`, `sp`)

* [snapshot-policy list](#snapshot-policy-list) — List snapshot policies for a file storage resource
* [snapshot-policy create](#snapshot-policy-create) — Create a snapshot policy for a file storage resource
* [snapshot-policy update](#snapshot-policy-update) — Update a snapshot policy on a file storage resource
* [snapshot-policy delete](#snapshot-policy-delete) — Delete a snapshot policy from a file storage resource

***

## list

List file storage resources, optionally filtered by project or region. The table shows each resource's ID, name, region, size in GiB, and remote ports.

**Remote Ports** is the IP range of the NFS storage endpoints for each network attachment, ready to use as the `remoteports` mount option. It's empty until an attachment has been given a range.

```bash theme={null}
nscale file-storage list [flags]
```

### Flags

<table>
  <thead><tr><th>Flag</th><th>Description</th></tr></thead>

  <tbody>
    <tr><td>`--org string`</td><td>Organization ID or name</td></tr>
    <tr><td>`--project string`</td><td>Project ID or name</td></tr>
    <tr><td>`--region string`</td><td>Region ID or name</td></tr>

    <tr>
      <td>
        `--limit int`
      </td>

      <td>Show at most N results (client-side; every result is still fetched). Cuts before `-q`. `0` for all</td>
    </tr>

    <tr>
      <td>
        `--json`
      </td>

      <td>Emit the full JSON payload (mutually exclusive with `-q`)</td>
    </tr>

    <tr>
      <td>
        `-q, --query stringArray`
      </td>

      <td>jq filter for value extraction (see [Query output with `-q`](https://docs.nscale.com/docs/cli/query-output))</td>
    </tr>
  </tbody>
</table>

### Examples

```bash theme={null}
nscale file-storage list --region <region-id>
nscale file-storage list --project <project-id> -q '.[].metadata.id'
```

***

## classes

List the file storage classes you can create file storage in. A class sets the kind of storage and the region it lives in. Pass its ID as `spec.storageClassId` when you [create](#create) a file storage resource. The table shows each class's ID, name, region, supported protocols, and parallelism.

```bash theme={null}
nscale file-storage classes [flags]
```

### Flags

<table>
  <thead><tr><th>Flag</th><th>Description</th></tr></thead>

  <tbody>
    <tr><td>`--org string`</td><td>Organization ID or name</td></tr>
    <tr><td>`--region string`</td><td>Region ID or name (defaults to all regions)</td></tr>

    <tr>
      <td>
        `--limit int`
      </td>

      <td>Show at most N results (client-side; every result is still fetched). Cuts before `-q`. `0` for all</td>
    </tr>

    <tr>
      <td>
        `--json`
      </td>

      <td>Emit the full JSON payload (mutually exclusive with `-q`)</td>
    </tr>

    <tr>
      <td>
        `-q, --query stringArray`
      </td>

      <td>jq filter for value extraction (see [Query output with `-q`](https://docs.nscale.com/docs/cli/query-output))</td>
    </tr>
  </tbody>
</table>

### Examples

```bash theme={null}
nscale file-storage classes --region <region-id>
nscale file-storage classes --region <region-id> -q '.[].metadata.id'
```

***

## get

Get details for a file storage resource, including its NFS settings, snapshot policies, and network attachments. Each attachment in `status.attachments` carries its `mountSource`, in `<host>:<path>` format, and its `mountOptions`.

```bash theme={null}
nscale file-storage get <storage-id> [flags]
```

### Flags

<table>
  <thead><tr><th>Flag</th><th>Description</th></tr></thead>

  <tbody>
    <tr><td>`--id string`</td><td>File storage ID or name. Can also be passed as a positional argument</td></tr>
    <tr><td>`--org string`</td><td>Organization ID or name</td></tr>

    <tr>
      <td>
        `--json`
      </td>

      <td>Emit the full JSON payload (mutually exclusive with `-q`)</td>
    </tr>

    <tr>
      <td>
        `-q, --query stringArray`
      </td>

      <td>jq filter for value extraction (see [Query output with `-q`](https://docs.nscale.com/docs/cli/query-output))</td>
    </tr>
  </tbody>
</table>

### Examples

```bash theme={null}
nscale file-storage get <storage-id> --json
nscale file-storage get <storage-id> -q '.status.attachments[].mountSource'
```

***

## create

Create a new file storage resource. Accepts input from a JSON file or stdin. With neither, the CLI prompts for the name, description, project, region, size (1 to 1013 GiB), NFS settings, networks to attach, and Default Snapshot Protection. It offers only regions that have a file storage class, and uses the first class it finds in the region you choose. To choose the [class](#classes) yourself or add [snapshot policies](#snapshot-policies), use a file.

Provisioning is asynchronous: without `--wait`, the command returns as soon as the request is accepted.

```bash theme={null}
nscale file-storage create [flags]
```

Example payload:

```json storage.json theme={null}
{
  "metadata": {
    "name": "shared-data"
  },
  "spec": {
    "organizationId": "<org-id>",
    "projectId": "<project-id>",
    "regionId": "<region-id>",
    "storageClassId": "<storage-class-id>",
    "sizeGiB": 200,
    "storageType": {
      "NFS": {
        "rootSquash": true,
        "posixAcl": false,
        "atimeUpdateIntervalSeconds": 0
      }
    },
    "attachments": {
      "networkIds": ["<network-id>"]
    }
  }
}
```

| Field | Notes |
| - | - |
| `spec.storageClassId` | A class from the same region. List them with [`classes`](#classes). |
| `spec.storageType.NFS` | `rootSquash` is required. `posixAcl` and `atimeUpdateIntervalSeconds` are optional and default to `false` and `0`. See [NFS settings](https://docs.nscale.com/docs/storage/file-storage.md#nfs-settings) for what each does. The CLI rejects an `atime` interval outside the accepted range before sending the request. |
| `spec.attachments.networkIds` | Optional. The networks the file storage is mounted from. |
| `spec.defaultSnapshotProtectionEnabled` | Optional. Omit it to turn on Default Snapshot Protection, or set `false` to leave it off. |
| `spec.snapshotPolicies` | Optional. User-managed [snapshot policies](https://docs.nscale.com/docs/storage/file-storage.md#snapshot-policies), up to 4. |

### Flags

<table>
  <thead><tr><th>Flag</th><th>Description</th></tr></thead>

  <tbody>
    <tr><td>`-f, --file string`</td><td>Path to a JSON file</td></tr>
    <tr><td>`--stdin`</td><td>Read JSON from standard input</td></tr>
    <tr><td>`--dry-run`</td><td>Preview actions and payload without persisting</td></tr>
    <tr><td>`-y, --yes`</td><td>Automatically confirm creation</td></tr>
    <tr><td>`--wait`</td><td>Block until provisioning finishes. Without it, the command returns as soon as the request is accepted</td></tr>
    <tr><td>`--wait-timeout duration`</td><td>How long `--wait` polls before giving up. The operation keeps running server-side (default `30m0s`)</td></tr>

    <tr>
      <td>
        `--json`
      </td>

      <td>Emit the full JSON payload (mutually exclusive with `-q`)</td>
    </tr>

    <tr>
      <td>
        `-q, --query stringArray`
      </td>

      <td>jq filter for value extraction (see [Query output with `-q`](https://docs.nscale.com/docs/cli/query-output))</td>
    </tr>
  </tbody>
</table>

### Examples

```bash theme={null}
nscale file-storage create --file storage.json
nscale file-storage create --stdin < storage.json
nscale file-storage create --file storage.json --yes --wait
```

***

## update

Update an existing file storage resource. Accepts input from a JSON file or stdin. With neither, the CLI prompts for the name, description, size, NFS settings, networks, and Default Snapshot Protection, pre-filled from the resource as it stands. The prompts leave snapshot policies unchanged; manage them with the [`snapshot-policy`](#snapshot-policies) commands.

A payload takes `metadata` and the `spec` fields from [`create`](#create) except `organizationId`, `projectId`, `regionId`, and `storageClassId`. It replaces the resource's settings, with these exceptions for omitted fields:

| Field | When omitted |
| - | - |
| `spec.storageType.NFS.posixAcl` | Resets to `false` |
| `spec.storageType.NFS.atimeUpdateIntervalSeconds` | Resets to `0` |
| `spec.defaultSnapshotProtectionEnabled` | Keeps the current setting |
| `spec.snapshotPolicies` | Keeps the current policies. Send `[]` to remove them all, or a list to replace them all. |

If your payload leaves out `posixAcl` or `atimeUpdateIntervalSeconds` while the resource has them set, the CLI prints a warning on stderr before sending it, including with `--dry-run`. The payload is still sent as written. To keep the current values, start from `nscale file-storage get <storage-id> --json`.

```bash theme={null}
nscale file-storage update <storage-id> [flags]
```

### Flags

<table>
  <thead><tr><th>Flag</th><th>Description</th></tr></thead>

  <tbody>
    <tr><td>`--id string`</td><td>File storage ID or name. Can also be passed as a positional argument</td></tr>
    <tr><td>`--org string`</td><td>Organization ID or name</td></tr>
    <tr><td>`-f, --file string`</td><td>Path to a JSON file</td></tr>
    <tr><td>`--stdin`</td><td>Read JSON from standard input</td></tr>
    <tr><td>`--dry-run`</td><td>Preview actions and payload without persisting</td></tr>
    <tr><td>`-y, --yes`</td><td>Automatically confirm update</td></tr>

    <tr>
      <td>
        `--json`
      </td>

      <td>Emit the full JSON payload (mutually exclusive with `-q`)</td>
    </tr>

    <tr>
      <td>
        `-q, --query stringArray`
      </td>

      <td>jq filter for value extraction (see [Query output with `-q`](https://docs.nscale.com/docs/cli/query-output))</td>
    </tr>
  </tbody>
</table>

### Examples

```bash theme={null}
nscale file-storage update <storage-id> --file storage.json
nscale file-storage update <storage-id> --stdin < storage.json
cat storage.json | nscale file-storage update <storage-id> --stdin
```

***

## delete

Delete a file storage resource. Teardown is asynchronous: without `--wait`, the command returns as soon as the request is accepted, and the file storage disappears some time later.

**Aliases:** `rm`, `remove`

> [!WARNING]
>
> Deleting file storage permanently removes all its data and snapshots. This can't be undone.

```bash theme={null}
nscale file-storage delete <storage-id> [flags]
```

### Flags

| Flag | Description |
| - | - |
| `--id string` | File storage ID or name. Can also be passed as a positional argument |
| `--org string` | Organization ID or name |
| `--dry-run` | Preview actions and payload without persisting |
| `-y, --yes` | Automatically confirm deletion |
| `--wait` | Block until deletion finishes |
| `--wait-timeout duration` | How long `--wait` polls before giving up. The operation keeps running server-side (default `30m0s`) |

### Examples

```bash theme={null}
nscale file-storage delete <storage-id> --yes
nscale file-storage delete <storage-id> --yes --wait
```

***

## Manual snapshots

A manual snapshot is a point-in-time copy of a file storage resource that you take on demand, alongside the scheduled ones from [snapshot policies](#snapshot-policies). It captures the whole file storage, or one path within it.

The `snapshot` commands take the file storage resource as the positional argument or `--file-storage`, except `get` and `delete`, which take the snapshot ID (or name) as the positional argument and the file storage with `--file-storage`. If you omit the file storage, you pick it from a list.

A snapshot's protected path and expiration time can't be changed once it's created. Once a snapshot expires, it's no longer listed and `get` reports it as not found.

***

## snapshot list

List the manual snapshots of a file storage resource. Expired snapshots aren't listed. The table shows each snapshot's ID, name, protected path, snapshot time, expiry (`never` if it doesn't expire), and status.

```bash theme={null}
nscale file-storage snapshot list <storage-id> [flags]
```

### Flags

<table>
  <thead><tr><th>Flag</th><th>Description</th></tr></thead>

  <tbody>
    <tr><td>`--file-storage string`</td><td>File storage ID or name. Can also be passed as a positional argument</td></tr>
    <tr><td>`--org string`</td><td>Organization ID or name</td></tr>

    <tr>
      <td>
        `--limit int`
      </td>

      <td>Show at most N results (client-side; every result is still fetched). Cuts before `-q`. `0` for all</td>
    </tr>

    <tr>
      <td>
        `--json`
      </td>

      <td>Emit the full JSON payload (mutually exclusive with `-q`)</td>
    </tr>

    <tr>
      <td>
        `-q, --query stringArray`
      </td>

      <td>jq filter for value extraction (see [Query output with `-q`](https://docs.nscale.com/docs/cli/query-output))</td>
    </tr>
  </tbody>
</table>

### Examples

```bash theme={null}
nscale file-storage snapshot list <storage-id>
nscale fs snapshot list <storage-id> -q '.[].metadata.id' -q '.[].metadata.name'
```

***

## snapshot get

Get the details of a manual snapshot: its status, when it was captured (`status.snapshotTime`), and the path it captured.

```bash theme={null}
nscale file-storage snapshot get <snapshot-id> --file-storage <storage-id> [flags]
```

### Flags

<table>
  <thead><tr><th>Flag</th><th>Description</th></tr></thead>

  <tbody>
    <tr><td>`--id string`</td><td>Snapshot ID or name. Can also be passed as a positional argument</td></tr>
    <tr><td>`--file-storage string`</td><td>File storage the snapshot belongs to</td></tr>
    <tr><td>`--org string`</td><td>Organization ID or name</td></tr>

    <tr>
      <td>
        `--json`
      </td>

      <td>Emit the full JSON payload (mutually exclusive with `-q`)</td>
    </tr>

    <tr>
      <td>
        `-q, --query stringArray`
      </td>

      <td>jq filter for value extraction (see [Query output with `-q`](https://docs.nscale.com/docs/cli/query-output))</td>
    </tr>
  </tbody>
</table>

### Examples

```bash theme={null}
nscale file-storage snapshot get <snapshot-id> --file-storage <storage-id>
nscale file-storage snapshot get <snapshot-id> --file-storage <storage-id> -q '.status.snapshotTime'
```

***

## snapshot create

Take a manual snapshot of a file storage resource. Pass `--protected-path` to snapshot one path within it instead of the whole file storage. Without `--expires-at`, the snapshot is kept until you delete it.

With none of the snapshot flags (`--name`, `--description`, `--protected-path`, `--expires-at`, `--no-expiry`), the CLI prompts for the name, description, protected path, and expiry (never, in 1, 7, or 30 days, or at a time you enter). Pass any of them to skip the prompts. `--name` is then required unless the CLI can prompt for it.

The snapshot is captured in the background: without `--wait`, the command returns as soon as the request is accepted.

| Field | Rules |
| - | - |
| Name | Lowercase letters, numbers, and dashes |
| Protected path | Relative to the root of the file storage, such as `datasets/model`. A leading `/` is dropped. At most 1024 characters, no trailing slash, no repeated slashes, and no `.` or `..` components. |
| Expiry | An RFC 3339 time in the future, such as `2030-01-01T00:00:00Z` |

```bash theme={null}
nscale file-storage snapshot create <storage-id> --name <snapshot-name> [flags]
```

### Flags

<table>
  <thead><tr><th>Flag</th><th>Description</th></tr></thead>

  <tbody>
    <tr><td>`--file-storage string`</td><td>File storage ID or name. Can also be passed as a positional argument</td></tr>
    <tr><td>`--org string`</td><td>Organization ID or name</td></tr>
    <tr><td>`--name string`</td><td>Snapshot name</td></tr>
    <tr><td>`--description string`</td><td>Snapshot description</td></tr>
    <tr><td>`--protected-path string`</td><td>Path within the file storage to snapshot, such as `datasets/model` (default: the whole file storage)</td></tr>
    <tr><td>`--expires-at string`</td><td>RFC 3339 time the snapshot expires. Can't be combined with `--no-expiry`</td></tr>
    <tr><td>`--no-expiry`</td><td>Keep the snapshot until it's deleted (the default)</td></tr>
    <tr><td>`--dry-run`</td><td>Preview actions and payload without persisting</td></tr>
    <tr><td>`-y, --yes`</td><td>Automatically confirm creation</td></tr>
    <tr><td>`--wait`</td><td>Block until capture finishes. Without it, the command returns as soon as the request is accepted</td></tr>
    <tr><td>`--wait-timeout duration`</td><td>How long `--wait` polls before giving up. The operation keeps running server-side (default `30m0s`)</td></tr>

    <tr>
      <td>
        `--json`
      </td>

      <td>Emit the full JSON payload (mutually exclusive with `-q`)</td>
    </tr>

    <tr>
      <td>
        `-q, --query stringArray`
      </td>

      <td>jq filter for value extraction (see [Query output with `-q`](https://docs.nscale.com/docs/cli/query-output))</td>
    </tr>
  </tbody>
</table>

### Examples

```bash theme={null}
nscale file-storage snapshot create <storage-id> --name before-upgrade --yes
nscale file-storage snapshot create <storage-id> --name models --protected-path datasets/model --yes
nscale file-storage snapshot create <storage-id> --name weekly --expires-at 2030-01-01T00:00:00Z --yes --wait
```

***

## snapshot delete

Delete a manual snapshot. It's removed in the background: without `--wait`, the command returns as soon as the request is accepted.

**Aliases:** `rm`, `remove`

```bash theme={null}
nscale file-storage snapshot delete <snapshot-id> --file-storage <storage-id> [flags]
```

### Flags

| Flag | Description |
| - | - |
| `--id string` | Snapshot ID or name. Can also be passed as a positional argument |
| `--file-storage string` | File storage the snapshot belongs to |
| `--org string` | Organization ID or name |
| `--dry-run` | Preview actions and payload without persisting |
| `-y, --yes` | Automatically confirm deletion |
| `--wait` | Block until deletion finishes |
| `--wait-timeout duration` | How long `--wait` polls before giving up. The operation keeps running server-side (default `30m0s`) |

### Example

```bash theme={null}
nscale file-storage snapshot delete <snapshot-id> --file-storage <storage-id> --yes --wait
```

***

## Snapshot policies

Snapshot policies take point-in-time snapshots of a file storage resource on a schedule and keep a set number of them. Each resource can have up to **4** policies. For how schedules and retention work, see [Snapshot policies](https://docs.nscale.com/docs/storage/file-storage.md#snapshot-policies).

The `snapshot-policy` commands edit the policies stored on the file storage resource. Each change reads the resource and sends it back with the updated policy list. The rest of the resource is left as it is, including Default Snapshot Protection. Default Snapshot Protection is managed by Nscale and doesn't appear in these commands.

The file storage resource is the positional argument or `--file-storage`. Before v7.0.0 the flag was `--id`; passing `--id` now fails with an error that names `--file-storage`.

`create` and `update` collect the policy through interactive prompts and don't accept a JSON file, so they need a terminal. With `--ci`, they fail. To set policies in a script, send the full `spec.snapshotPolicies` list with [`update`](#update) instead.

The prompts ask for:

| Prompt | Shown for | Rules |
| - | - | - |
| **Name** | Every policy | Lowercase letters, numbers, and dashes; at most 19 characters; unique on the resource |
| **Frequency** | Every policy | `Hourly`, `Daily`, `Weekly`, or `Monthly` |
| **Day of week** | Weekly | `Monday` through `Sunday` |
| **Day of month** | Monthly | `1` through `28`, so the policy runs every month |
| **Time of day (UTC)** | Daily, weekly, monthly | 24-hour `HH:MM` |
| **Latest snapshots to keep** | Every policy | At least `1`. Older snapshots are deleted automatically. |

***

## snapshot-policy list

List the snapshot policies on a file storage resource. The table shows each policy's name, frequency, run time, number of snapshots kept, and provisioning status.

With `--json` or `-q`, the output is the array of policies from `spec.snapshotPolicies`. Each policy has `name`, `schedule`, and `retention` fields, with no `metadata` wrapper.

```bash theme={null}
nscale file-storage snapshot-policy list <storage-id> [flags]
```

### Flags

<table>
  <thead><tr><th>Flag</th><th>Description</th></tr></thead>

  <tbody>
    <tr><td>`--file-storage string`</td><td>File storage ID or name. Can also be passed as a positional argument</td></tr>
    <tr><td>`--org string`</td><td>Organization ID or name</td></tr>

    <tr>
      <td>
        `--limit int`
      </td>

      <td>Show at most N results (client-side; every result is still fetched). Cuts before `-q`. `0` for all</td>
    </tr>

    <tr>
      <td>
        `--json`
      </td>

      <td>Emit the full JSON payload (mutually exclusive with `-q`)</td>
    </tr>

    <tr>
      <td>
        `-q, --query stringArray`
      </td>

      <td>jq filter for value extraction (see [Query output with `-q`](https://docs.nscale.com/docs/cli/query-output))</td>
    </tr>
  </tbody>
</table>

### Examples

```bash theme={null}
nscale file-storage snapshot-policy list <storage-id>
nscale fs sp list <storage-id> -q '.[].name'
```

***

## snapshot-policy create

Add a snapshot policy to a file storage resource. The CLI [prompts](#snapshot-policies) for the policy's name, schedule, and retention, then asks you to confirm. It fails if the resource already has 4 policies.

On success, the updated file storage resource is printed.

```bash theme={null}
nscale file-storage snapshot-policy create <storage-id> [flags]
```

### Flags

<table>
  <thead><tr><th>Flag</th><th>Description</th></tr></thead>

  <tbody>
    <tr><td>`--file-storage string`</td><td>File storage ID or name. Can also be passed as a positional argument</td></tr>
    <tr><td>`--org string`</td><td>Organization ID or name</td></tr>
    <tr><td>`--dry-run`</td><td>Preview actions and payload without persisting</td></tr>
    <tr><td>`-y, --yes`</td><td>Automatically confirm creation</td></tr>

    <tr>
      <td>
        `--json`
      </td>

      <td>Emit the full JSON payload (mutually exclusive with `-q`)</td>
    </tr>

    <tr>
      <td>
        `-q, --query stringArray`
      </td>

      <td>jq filter for value extraction (see [Query output with `-q`](https://docs.nscale.com/docs/cli/query-output))</td>
    </tr>
  </tbody>
</table>

### Example

```bash theme={null}
nscale file-storage snapshot-policy create <storage-id>
```

***

## snapshot-policy update

Change a snapshot policy's name, schedule, or retention. The CLI [prompts](#snapshot-policies) for each field, pre-filled from the policy as it stands, then asks you to confirm. If you omit `--name`, you pick the policy from a list.

Policy names identify policies in the API, so renaming a policy replaces it with a new one.

On success, the updated file storage resource is printed.

```bash theme={null}
nscale file-storage snapshot-policy update <storage-id> --name <policy-name> [flags]
```

### Flags

<table>
  <thead><tr><th>Flag</th><th>Description</th></tr></thead>

  <tbody>
    <tr><td>`--file-storage string`</td><td>File storage ID or name. Can also be passed as a positional argument</td></tr>
    <tr><td>`--org string`</td><td>Organization ID or name</td></tr>
    <tr><td>`--name string`</td><td>Name of the snapshot policy to update (prompts if omitted)</td></tr>
    <tr><td>`--dry-run`</td><td>Preview actions and payload without persisting</td></tr>
    <tr><td>`-y, --yes`</td><td>Automatically confirm update</td></tr>

    <tr>
      <td>
        `--json`
      </td>

      <td>Emit the full JSON payload (mutually exclusive with `-q`)</td>
    </tr>

    <tr>
      <td>
        `-q, --query stringArray`
      </td>

      <td>jq filter for value extraction (see [Query output with `-q`](https://docs.nscale.com/docs/cli/query-output))</td>
    </tr>
  </tbody>
</table>

### Example

```bash theme={null}
nscale file-storage snapshot-policy update <storage-id> --name daily
```

***

## snapshot-policy delete

Remove a snapshot policy from a file storage resource. If you omit `--name`, you pick the policy from a list.

**Aliases:** `rm`, `remove`

```bash theme={null}
nscale file-storage snapshot-policy delete <storage-id> --name <policy-name> [flags]
```

### Flags

| Flag | Description |
| - | - |
| `--file-storage string` | File storage ID or name. Can also be passed as a positional argument |
| `--org string` | Organization ID or name |
| `--name string` | Name of the snapshot policy to delete (prompts if omitted) |
| `--dry-run` | Preview actions and payload without persisting |
| `-y, --yes` | Automatically confirm deletion |

### Example

```bash theme={null}
nscale file-storage snapshot-policy delete <storage-id> --name daily --yes
```

***

## Related

> [card] [File Storage (Console)](https://docs.nscale.com/docs/storage/file-storage.md)
>
> Create and manage file storage via the Console UI.
