This topic needs a title

Dear Grassers:
  I would like to get all the updates to grass4.0, however it appears that
these are in many directories, and they are quite clumsy to retrieve via ftp
and/or ftpmail. Could someone on the moon cpio into a .Z file ?
  Many thanks
  cheers
  duc@comsearch.com

Duc Nygen (duc@comsearch.com) writes on 8 Dec 92:

Dear Grassers:
I would like to get all the updates to grass4.0, however it appears that
these are in many directories, and they are quite clumsy to retrieve via ftp
and/or ftpmail. Could someone on the moon cpio into a .Z file ?
Many thanks
cheers
duc@comsearch.com

save as getrftp, chmod +x

#!/bin/sh
#
# Script to get directories of files (recursively) from a Unix
# ftp server.
#
# Usage: getrftp <host> <dir1> [<dir2> ...]
#
# File: getrftp
# Author: Julian Perry (jp@hplb.hpl.hp.com)
# Date: 90/07/12
# Revision: 1.0
#

USER=anonymous
PASSWORD=`whoami`@`hostname`
VERBOSE=-v

if [ $# -lt 2 ]
then
  echo "usage: $0 <host> <dir1> [<dir2> ...]"
  exit 1
fi

HOST=$1
ROOT=`pwd`
TMPFIL="/tmp/grftp.$$"
trap "rm -f $TMPFIL; trap '' 0; exit" 0 1 2 13 15

shift

for DIR in $*
do

  ftp -v -g -i -n $HOST <<EOF
user $USER $PASSWORD
ls "-pR $DIR" $TMPFIL
quit
EOF

  {
  echo "user $USER $PASSWORD"
  echo "binary"

  CURDIR=$DIR
  mkdir -p $ROOT/$CURDIR
  cd $ROOT/$CURDIR

  echo "lcd $ROOT/$CURDIR"
  echo "cd /"
  echo "cd $CURDIR"

  while read line
  do
    if [ ! -z "$line" ]
    then
      case "$line" in
  *:slight_smile: # Found a directory
      CURDIR=`echo "$line" | sed -e 's/:$//'`
      mkdir -p $ROOT/$CURDIR
      cd $ROOT/$CURDIR
      echo "lcd $ROOT/$CURDIR"
      echo "cd /"
      echo "cd $CURDIR"
      ;;
  */) # Found a directory to be ignored
      ;;
  *) # Found a file
      if [ ! -f "$line" ]
      then
        echo "get $line"
      fi
      esac
    fi
  done } < $TMPFIL | ftp $VERBOSE -g -i -n $HOST

done

--