This is an old revision of the document!
How to use srmcp with named pipes
Problem
Entire subdirectories cannot be recursively copied over to the grid with the tools currently installed on the lexar (2011-1-1).
Solution
The solution is to tar entire subdirectory trees, and move these to the archive. For speed, we would like to do this tar on the machine that holds the original data (an lse node), and send this tar file through a lexar to the grid light path, without touching the (relatively slow) lexar disk.
To write to the Grid, use globus-url-copy, not srmcp which fails as it tries a seek() on the pipe, in a setup like this (after all Grid proxies etc have been set):
# To store to the Grid one need to use globus-url-copy # which does not do a seek() in the stream set GSIFTPCP="globus-url-copy -vb" set SRMSSH="ssh lexar001 -c arcfour"
# Our data directory on the Grid: set GSIFTPDIR=gsiftp://gridftp.grid.sara.nl//pnfs/grid.sara.nl/data/lofar/pulsar/
# In this case, read OBSID from the script input set OBSID=$1 set FILE=/tmp/psr/${OBSID}.raw.tar
# Make named pipe, wait 2 sec, then start transfer tar -cp ${ID} | ${SRMSSH} "(mkfifo $FILE; cat - > $FILE)" & sleep 2 ${SRMSSH} "${GSIFTPCP} file://$FILE $GSIFTPDIR/tape/; rm $FILE"
To read back from the Grid one can use the same as below but inverted, or use srmcp: output to the named pipe and untar.