Draft

This documentation is in draft and under active review. Figures for the Fall 2026 GPU reservation system are not yet published, and some pages describe behaviour that has not been verified against a primary source. Check with us before relying on anything here.

Moving & Sharing Data

Files reach the cluster by one of four routes, chosen mostly by size and by how often the transfer is repeated. Sharing them splits into two quite different problems: letting other people on the cluster read a member's files, and getting data to someone who has no cluster account at all.

Route Suits
The Jupyter file browser A handful of small files, once
git Code, and anything that will be changed and re-sent
scp · sftp · rsync Data of any size, scripted or repeated
Globus Large transfers, unattended, between institutions

All of this happens at the login node. Moving files is one of the two things dsmlp-login exists for; the other is launching jobs. → The Login Node

Contents

In the Browser


The JupyterLab file browser uploads with drag and drop and downloads from the right-click menu. It is the right tool for a notebook and a CSV, and the wrong one past about 64 MB or a few dozen files — transfers stall and there is no resume. Where the file is large and the browser is the only route available, zip it, upload the archive and extract it from a terminal.

Git


git is installed on the login node and in the standard images, and is the best route for code. Clone at the login node and the working tree is already there when the container starts; both see the same filesystem.

git clone https://github.com/<owner>/<repo>.git

A private repository needs a personal access token or an SSH key, exactly as on a local machine. A clone counts against quota like any other files. Git is the best option for code and notebooks and a poor one for large data.

scp, sftp and rsync


These run from a terminal on a local machine, not from the cluster, and are what we recommend for most transfers. On Windows, WinSCP offers the same thing with a window.

scp /local/path <username>@dsmlp-login.ucsd.edu:~/remote/path            # upload
scp <username>@dsmlp-login.ucsd.edu:~/remote/path /local/path            # download
scp -r <username>@dsmlp-login.ucsd.edu:/directory/to/send /local/where   # directory

sftp gives an interactive session, which is easier when what is where is not certain; rsync is the one to reach for when the transfer will be repeated, since it sends only what changed:

sftp <username>@dsmlp-login.ucsd.edu
rsync -avr <directory> <username>@dsmlp-login.ucsd.edu                   # upload
rsync -avr <username>@dsmlp-login.ucsd.edu:<remote-path> <local-path>    # download

Messages about a pod being created and deleted appear around the transfer. That is the cluster starting a short-lived container to serve it, and is not an error.

The VPN is not required for these — they run over ssh, which works from anywhere.Connecting over SSH

Landing Files in the Right Directory


This is the step that goes wrong. On an scp to dsmlp-login, ~ is the personal area — what appears as private/ inside a container. It is not a course home, and files left there do not appear where a course notebook expects them. Copying the login-node home and taking it for the coursework is the commonest way to discover the omission later.

To reach a workspace home, take its path from the workspace listing and use that instead:

workspace -l     # prints each workspace and the path to its home directory

The paths look like /dsmlp/workspaces-fs0*/<WORKSPACE>/home/<username>, with team directories under the same prefix and /teams in place of /home. → Directories, Quotas & Cleaning Up

Globus


Globus suits large unattended transfers and transfers between institutions. The supported route is to run Globus Connect Personal inside the environment, making it an endpoint for transfers in either direction. In a terminal there, fetch and unpack the client and run its setup — the directory it unpacks into is named for the version downloaded:

wget https://downloads.globus.org/globus-connect-personal/linux/stable/globusconnectpersonal-latest.tgz
tar -xvzf globusconnectpersonal-latest.tgz
./globusconnectpersonal-<version>/globusconnectpersonal -setup

Setup prints a login link. Globus authenticates through CILogon: choose University of California-San Diego, sign in with AD credentials and Duo, allow the setup tool, and paste the returned code at the Enter the auth code: prompt. Setup also asks for a recognisable endpoint name. Start the endpoint with -start & and check it on the Globus Collections page under Administered By You: green is running, red is stopped.

The endpoint runs only while the environment runs. A red endpoint means logging back in, launching the environment, and starting it again — adding the start command to .bash_profile starts it with every terminal opened there.

Downloading from the Internet


wget and curl are available on the login node and in the container, and are the simplest way to pull a public dataset straight onto the cluster. Please check the size first: where the data is large and more than one person needs it, please ask us to stage it once rather than each person keeping a copy. → Shared Datasets

Retrieving Work Before Access Ends


Retrieving work from the platform is not urgent right up until it is impossible. The operative date is the day access ends, not the day the files are purged — once the environment stops appearing for a member, the work in it can be retrieved only by asking us. → When Access Starts & Ends

The archive provision does not cover a student's own work. Archiving covers instructor and course-wide files, on request. Student home directories are not archived, so anything a student wants to keep has to be copied out before access ends.

What is worth taking:

  • The course home directory — notebooks, code, results and figures. No copy of it is kept anywhere else.
  • teams/, when a project's shared work lives there.
  • private/ — it follows a member between workspaces, but see the open question in the note above.
  • public/ is usually the instructor's course material rather than a member's own work. Large shared datasets are generally better re-obtained from their source than copied to a laptop.

None of this requires a running container. The container and the login node share a filesystem, so ssh to the login node is enough to collect everything.

If access has already ended, work that is out of reach is not necessarily gone. Please contact us rather than assuming it has been lost. Until the environment is purged, an archived class can be revived and an archive can be made available for download, and an instructor can request that an individual account be reactivated to resolve an Incomplete, an academic integrity matter, or a hand-off. The earlier the request, the more likely the answer is yes.

Inside the Workspace


public/ is the sanctioned way to share with a whole workspace. Everything in it is readable by every member. In a course, the shared grader account holds write permission and stages the material; elsewhere the writer is whoever the workspace was set up around. → The Shared Workspace Area

Files staged into public/ sometimes arrive unreadable, because they carry the permissions they had wherever they came from. The published repair, run as the account that owns the directory, is:

chmod -R u+rwX,go+rXs,go-w ~/public

That removes write permission for everyone else while adding the execute bit on directories so they can be entered. It is the only permission recipe our documentation publishes; for anything beyond it, please ask.

teams/ narrows the audience from the whole workspace to one group — a capstone group, a project team, a lab bench.

Teams and Canvas Groups


Course teams come from Canvas group sets. An instructor either creates a self-sign-up group set and lets students join, or creates the groups and assigns students to them. Changes reach the cluster within a few hours rather than immediately.

Two details catch people out:

  • Canvas will only put students in groups. An instructor or TA cannot be added as a member. The route in is the course's grader account, which is enrolled as a student and joins the group in the same way.
  • Multiple group sets in one Canvas course may not work correctly. Please use one.

From the command line, the team's data is requested at launch:

launch-scipy-ml.sh -W <WORKSPACE> -G list      # the teams the account belongs to
launch-scipy-ml.sh -W <WORKSPACE> -G <teamid>  # launch with that team's data

Group storage is provisioned separately from personal storage, and additional space is requested from us. → Asking for More Space

Asking Us to Change Ownership or Permissions


File ownership and permission adjustments are a request we handle. They sit alongside resource limits and disk quotas in the list of configuration changes the Service Desk makes, and a ticket is the documented route when files have ended up owned by the wrong account or unreadable by the people who need them. → The Six Requests

Sharing with People Who Have No Cluster Account


Globus Project Guest Collections are the campus mechanism for sharing research data with named collaborators, at UC San Diego or elsewhere, and for publishing it openly. A PI requests one from Research IT with a short description of the project and its intended use; the PI is the collection's Access Manager and may delegate that role.

What is shared is a directory and everything below it, and it may be shared with one named person by institutional identity or email address, with a Globus group created for the purpose, with every user logged in to Globus, or with the public anonymously and with no login at all. The rest of the model:

  • Permissions are set on directories, not on files, and child directories inherit from their parent.
  • Read or read-and-write. Write includes delete.
  • Anything shared publicly should live in a directory named for the fact, with write access to it kept narrow.
  • Files can also be handed out over HTTPS, as links of the form https://<collectionid>.data.globus.org/<path> that can be embedded elsewhere.
  • Allocations run a year at a time — initially 500 GB, somewhat expandable — and are reviewed for renewal, with priority to collections in active use.
  • A collection cannot change owner. Where a project passes to a new PI, a new collection is created and permissions reassigned.

For a one-off send to a person, the Library's rdl-share service carries up to 500 GB per message with no limit on the number of messages, encrypts in transit, and can request files from someone as well as send them. Executable file types are refused.

Two Limits Worth Stating Plainly


Datahub and DSMLP are not a hosting platform. They should not be used to run externally-available services or applications except as required for coursework or projects. Sharing data is supported; standing up a public service is not.

Sharing is a classification decision before it is a technical one. Licensed data, protected data, and anything under a data use agreement do not become shareable by being copied into a shared directory. → Restricted & Licensed Datasets


If you still have questions or need additional assistance, email us at datahub@ucsd.edu or submit a ticket to the ITS Service Desk.