summaryrefslogtreecommitdiff
path: root/sync_and_run.sh
blob: a809331c1f6162da02c758095dab8b9064809d26 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#!/bin/bash
# Sync code from voidlaptop to meru's jspace container and run commands
# Usage: ./sync_and_run.sh [command or "shell"]

set -e

MACHINE="meru"
CONTAINER="jspace-nanogpt"
REMOTE_CODE="/mnt/appdata/jspace/code"
LOCAL_PROJECT="$HOME/projects/jspace-nanogpt"

echo "=== Syncing code to $MACHINE ==="
rsync -avz --delete \
    --exclude='upstream-nanogpt' \
    --exclude='.git' \
    --exclude='__pycache__' \
    --exclude='*.pyc' \
    --exclude='outputs/*' \
    --exclude='data/*/train.bin' \
    --exclude='data/*/val.bin' \
    --exclude='data/*/meta.pkl' \
    --exclude='data/freq_experiment/' \
    --exclude='out-shakespeare-char/' \
    --exclude='out-freq-*/' \
    --exclude='out-starved-*/' \
    --exclude='data/*' \
    "${LOCAL_PROJECT}/" \
    "${MACHINE}:${REMOTE_CODE}/"

if [ "$1" = "shell" ]; then
    echo "=== Opening shell in container ==="
    ssh -t "$MACHINE" "docker exec -it $CONTAINER bash"
elif [ -n "$1" ]; then
    echo "=== Running: $@ ==="
    ssh "$MACHINE" "docker exec $CONTAINER bash -c 'cd /workspace/code && $*'"
else
    echo "=== Synced. No command specified. ==="
    echo "Usage: $0 shell          # interactive bash"
    echo "       $0 'command ...'  # run a command"
fi