Save to Persistent Storage with GoCommands
0) One-time setup (install + login)
# Install GoCommands (Linux x86_64)
GOCMD_VER=$(curl -L -s https://raw.githubusercontent.com/cyverse/gocommands/main/VERSION.txt); \
curl -L -s https://github.com/cyverse/gocommands/releases/download/${GOCMD_VER}/gocmd-${GOCMD_VER}-linux-amd64.tar.gz | tar zxvf -
# Configure iRODS (accept defaults for Host/Port/Zone; use your CyVerse creds)
./gocmd init
./gocmd whoami
Community folder root (read/write for teams):
/iplant/home/shared/esiil/Innovation_summit/<GROUP_NAME>
Set environment variables:
# —— Edit these two lines ——
GROUP_NAME="Group_1" # <-- change to your group
USERNAME="<your_cyverse_username>" # <-- no angle brackets
COMMUNITY="i:/iplant/home/shared/esiil/Innovation_summit/${GROUP_NAME}"
PERSONAL="i:/iplant/home/${USERNAME}"
Note: GoCommands uses
i:
to denote paths on the CyVerse Data Store. Include this prefix for any remote path (for example,i:/iplant/home/...
). Local filesystem paths should not have thei:
prefix.
A) Save data to the community folder
# Put (upload) a local folder into your group’s community space
LOCAL_SRC="outputs/run-YYYYMMDD"
REMOTE_DST="${COMMUNITY}/outputs/"
./gocmd put --icat --retry 3 -d -k -r "${LOCAL_SRC}" "${REMOTE_DST}"
put
uploads from local → CyVerse Data Store-r
is recursive;--diff
(optional) only sends changed files
Verify upload:
./gocmd ls "${REMOTE_DST}"
B) Pull data from the community folder
# Get (download) a shared dataset from the community folder into ./data/
mkdir -p ./data
REMOTE_SRC="${COMMUNITY}/shared_data/"
LOCAL_DST="./data/"
./gocmd get --icat --retry 3 -d -k -r "${REMOTE_SRC}" "${LOCAL_DST}"
get
downloads from CyVerse → local machine- Use for pulling common datasets your team prepared
C) Move data from the community folder to your personal space
# Copy directly between two Data Store locations
REMOTE_SRC="i:/iplant/home/shared/esiil/Innovation_summit/${GROUP_NAME}/deliverables/"
REMOTE_PERSONAL_DST="i:/iplant/home/${USERNAME}/projects/innovation_summit_2025/deliverables/"
./gocmd cp --icat --retry 3 -d -k -r "${REMOTE_SRC}" "${REMOTE_PERSONAL_DST}"
# Verify contents
./gocmd ls "${REMOTE_PERSONAL_DST}"
Notes & Best Practice
- Use descriptive subfolders in
${COMMUNITY}
(e.g.,shared_data/
,outputs/
,deliverables/
). - Always add
--diff
when re-uploading to avoid resending unchanged files. - Use
./gocmd ls <path>
to explore or confirm folder structure. - To reorganize: safest workflow is get locally → restructure → put back.
More info: CyVerse GoCommands Docs