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

# File Transfers

> Move files to and from Thunder Compute instances using the CLI. Upload or download data between local and cloud GPU hardware.

export const QuickstartCard = ({ title, icon, href, children, selected }) => {
  const enter = e => { if (selected) return; const el = e.currentTarget; el.style.borderColor = '#555'; el.querySelector('[data-title]').style.color = '#fff'; el.querySelector('[data-sub]').style.opacity = '0.7'; el.querySelector('[data-icon]').style.opacity = '0.7'; };
  const leave = e => { if (selected) return; const el = e.currentTarget; el.style.borderColor = '#333'; el.querySelector('[data-title]').style.color = ''; el.querySelector('[data-sub]').style.opacity = '0.5'; el.querySelector('[data-icon]').style.opacity = '0.35'; };
  return (
  <a href={href} className="group" style={{ textDecoration: 'none', borderBottom: 'none', color: 'inherit', display: 'block', marginBottom: '0.75rem' }}>
    <div className="border rounded-xl p-5 transition-all duration-150 border-zinc-200 dark:border-zinc-800" style={{
      minHeight: '8rem',
      height: '100%',
      borderWidth: '1.5px',
      borderColor: selected ? '#95c5ea' : '#333',
    }} onMouseEnter={enter} onMouseLeave={leave}>
      <div data-icon style={{ marginBottom: '0.75rem', opacity: selected ? 1 : 0.35, transition: 'opacity 0.15s ease' }}>
        <Icon icon={icon} size={24} color="#95c5ea" />
      </div>
      <div data-title style={{ fontWeight: 600, fontSize: '1.05rem', marginBottom: '0.25rem', color: selected ? '#fff' : undefined, transition: 'color 0.15s ease' }}>{title}</div>
      <div data-sub style={{ fontSize: '0.9rem', opacity: selected ? 0.7 : 0.5, transition: 'opacity 0.15s ease' }}>{children}</div>
    </div>
  </a>
  );
};

<Columns cols={3}>
  <QuickstartCard title="VS Code" icon="window" href="/docs/vscode/operations/file-transfers">
    Editor extension
  </QuickstartCard>

  <QuickstartCard title="CLI" icon="terminal" href="/docs/cli/operations/file-transfers" selected={true}>
    Command line
  </QuickstartCard>

  <QuickstartCard title="Console" icon="browser" href="/docs/console/operations/file-transfers">
    Web interface
  </QuickstartCard>
</Columns>

## Transfer Files

```bash theme={null}
tnr scp <source> <destination>
```

Prefix a path with `instance_id:` to indicate it's remote.

```bash theme={null}
# Upload: local → remote
tnr scp ./data.csv 0:/home/user/

# Download: remote → local
tnr scp 0:/home/user/results.csv ./
```

<Info>
  Directories are transferred recursively. SSH keys and `~/` expansion are handled automatically.
</Info>

<Note>
  Uses `rsync` on Linux and macOS for better performance and progress display. Falls back to `scp` if rsync is unavailable. On Windows/WSL, uses `scp`.
</Note>

## Best Practices

* **Compress large transfers**: Zip files before transferring to reduce time
* **Use cloud storage for big files**: For datasets over a few GB, upload to cloud storage and download directly to your instance
