diff --git a/scripts/create_influxdb_database.sh b/scripts/create_influxdb_database.sh
new file mode 100644
index 0000000000000000000000000000000000000000..639780587e4a0fd0969244f092e3855e165d2a20
--- /dev/null
+++ b/scripts/create_influxdb_database.sh
@@ -0,0 +1,5 @@
+#!/usr/bin/env bash
+
+echo "Creating database and continous queries for tower and buoy..."
+/home/metobs/miniconda/envs/metobs_influxdb/bin/python -m metobscommon.influxdb --host metobs01.ssec.wisc.edu --dbname metobs -vvv create --symbol-list aosstower.l00.influxdb.SYMBOLS mendotabuoy.level0.influxdb.SYMBOLS
+echo "Done"
diff --git a/scripts/rsync_data.sh b/scripts/rsync_data.sh
new file mode 100755
index 0000000000000000000000000000000000000000..878f4ecf1831db951dc7f07de0704ec0eee97412
--- /dev/null
+++ b/scripts/rsync_data.sh
@@ -0,0 +1,18 @@
+#!/usr/bin/env bash
+
+# Offset TZ by 1 minute to make sure we get data from 23:59 to 00:00
+export TZ="UTC-00:01:00"
+LOCK=$HOME/tower/$(basename "$0").lock
+SRC="/mnt/data/ingest/rig_tower/rig_tower.dat"
+
+(
+    flock -x -n 200 || exit $?
+
+    if [ -e $SRC ]; then
+        # Also send it to metobs01:
+        rsync -a $SRC rsync://metobs01.instrument/incoming/aoss-tower/rig_tower.ascii 
+    else
+        echo "$SRC does not exist"
+    fi
+
+) 200>$LOCK
diff --git a/scripts/start_tower_db_ingest.sh b/scripts/start_tower_db_ingest.sh
new file mode 100755
index 0000000000000000000000000000000000000000..f05aff1f82050069533147e9b26f07c7f6a77396
--- /dev/null
+++ b/scripts/start_tower_db_ingest.sh
@@ -0,0 +1,28 @@
+#!/usr/bin/env bash
+#
+# Runs the tower ingest in a screen session named 'tower_db_ingest'. 
+#
+# If a screen session is already running with that name, exit, otherwise start
+# a new detached screen session named 'tower_db_ingest'.
+#
+NAME=tower_db_ingest
+PYENV=$HOME/env
+SRC=/mnt/data/ingest/rig_tower/rig_tower.dat
+#DBURL=postgresql://buoy_ingest:bu0y1ngest@tahiti.ssec.wisc.edu/buoy
+DBURL=postgresql://metobs_ingest:m3t0b5@metobs01.instrument/metobs
+LOGFN=$HOME/log/tower_db_ingest.log
+
+export PGAPPNAME=tower_db_ingest
+
+SCRN=$(screen -list | grep $NAME | awk '{print $1}')
+if [ -n "$SCRN" ]; then 
+echo Screen already running: $SCRN
+else
+screen -S $NAME -d -m $PYENV/bin/tower_db_ingest \
+				--loglvl info \
+				--logfn $LOGFN \
+				--tail \
+				$DBURL \
+				$SRC
+echo Started in screen $(screen -list | grep $NAME | awk '{print $1}')
+fi
diff --git a/scripts/start_tower_mcast.sh b/scripts/start_tower_mcast.sh
new file mode 100755
index 0000000000000000000000000000000000000000..88f4935d53c80e37d4f69eb9d227d4b63b0892c3
--- /dev/null
+++ b/scripts/start_tower_mcast.sh
@@ -0,0 +1,26 @@
+#!/usr/bin/env bash
+#
+# Runs the tower ingest in a screen session named 'ceilo_ingest'. 
+#
+# If a screen session is already running with that name, exit, otherwise start
+# a new detached screen session named 'ceilo_ingest'.
+#
+
+echo "$0 really shouldn't be necessary any more if tower_db_ingest is used."
+echo "See start_tower_db_ingest.sh"
+exit 1
+
+NAME=tower_mcast
+CONFIG=$HOME/tower/tower_mcast.cfg
+PYENV=$HOME/env
+SCRN=$(screen -list | grep $NAME | awk '{print $1}')
+if [ -n "$SCRN" ]; then 
+echo Screen already running: $SCRN
+else
+screen -S $NAME -d -m $PYENV/bin/python -m metobs.tower.util.json_gen -vvv \
+				-H 192.168.16.23 \
+				-p 41175 \
+				-m 6544 $CONFIG \
+				-l $HOME/log/tower_mcast.log
+echo Started in screen $(screen -list | grep $NAME | awk '{print $1}')
+fi
diff --git a/scripts/tower_mcast.cfg b/scripts/tower_mcast.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..0cc3e612a76f3f826cacc41460a41d69b6ea2784
--- /dev/null
+++ b/scripts/tower_mcast.cfg
@@ -0,0 +1,5 @@
+[tower]
+site = rig
+num_records =  2
+tz = utc
+data = /mnt/data/ingest/rig_tower/rig_tower.dat