|
64 | 64 |
|
65 | 65 | TMPL=$(mktemp) |
66 | 66 |
|
67 | | -samweb list-file-locations "${@}" | tr ":" " " > $TMPL |
| 67 | +# this might be |
| 68 | +# enstore:/pnfs/... filename size |
| 69 | +# or if the user added --schema=root |
| 70 | +# xroot://... enstore:/pnfs/.. filename size |
| 71 | + |
| 72 | +# separate "disk" (enstore or dcache) from /pnfs/path |
| 73 | +# and put the URI last if it is there |
| 74 | +samweb list-file-locations "${@}" | \ |
| 75 | +awk '{if(NF==4) print $2" "$3" "$4" "$1; else print $1" "$2" "$3;}' | \ |
| 76 | +sed -e 's/enstore:/enstore /' -e 's/dcache:/dcache /' > $TMPL |
68 | 77 |
|
69 | 78 | # loop over unique file names |
| 79 | +# TMPL is like |
| 80 | +# enstore /pnfs/path filename size <URI> |
70 | 81 | cat $TMPL | awk '{print $3}' | sort | uniq \ |
71 | 82 | | while read FILENAME |
72 | 83 | do |
73 | 84 |
|
74 | | - # list of locations, dcache first |
75 | | - FSS=$(cat $TMPL | awk '{if($3=="'$FILENAME'") print $1" "$2}' | sort ) |
76 | | - |
77 | | - TAPESPEC=$(echo "$FSS" | awk '{if($1=="enstore") print $2"/'$FILENAME'"}') |
78 | | - DISKSPEC=$(echo "$FSS" | awk '{if($1=="dcache") print $2"/'$FILENAME'"}') |
79 | | - |
| 85 | + # FSS is a list of locations, dcache first, like |
| 86 | + # dcache /pnfs/path xrootd://... |
| 87 | + FSS=$(cat $TMPL | awk '{if($3=="'$FILENAME'") print $1" "$2" "$5}' | sort ) |
| 88 | + |
| 89 | + # creates tape (/pnfs/mu2e/tape/.../filename) and disk filespecs |
| 90 | + TAPESPEC=$(echo "$FSS" | awk '{ if($1=="enstore") print $2"/'$FILENAME'" }') |
| 91 | + DISKSPEC=$(echo "$FSS" | awk '{ if($1=="dcache") print $2"/'$FILENAME'" }') |
| 92 | + # find URI, if present |
| 93 | + TAPEURI=$(echo "$FSS" | awk '{ if($1=="enstore") print $3 }') |
| 94 | + # if no URI, then use pnfs path |
| 95 | + [ -z "$TAPEURI" ] && TAPEURI="$TAPESPEC" |
| 96 | + DISKURI=$(echo "$FSS" | awk '{ if($1=="dcache") print $3 }') |
| 97 | + [ -z "$DISKURI" ] && DISKURI="$DISKSPEC" |
| 98 | + |
| 99 | + FILEURI="none" |
80 | 100 | if [ "$DISKSPEC" ]; then |
81 | 101 | FILESPEC="$DISKSPEC" |
| 102 | + FILEURI="$DISKURI" |
82 | 103 | LOC="ONLINE" |
83 | 104 | else |
84 | 105 | FILESPEC="$TAPESPEC" |
| 106 | + FILEURI="$TAPEURI" |
85 | 107 | LOC="" |
86 | 108 | if [ $DOLOC ]; then |
87 | 109 | # have to see if tape-backed is on disk |
|
90 | 112 | fi |
91 | 113 |
|
92 | 114 | if [ $DODISK ]; then |
93 | | - [[ "$LOC" =~ "ONLINE" ]] && echo "$FILESPEC" |
| 115 | + [[ "$LOC" =~ "ONLINE" ]] && echo "$FILEURI" |
94 | 116 | elif [ $DOFIRST ]; then |
95 | 117 | if [[ "$LOC" =~ "ONLINE" ]]; then |
96 | | - echo "$FILESPEC" |
| 118 | + echo "$FILEURI" |
97 | 119 | else |
98 | | - echo "$FILESPEC" >> $TMPF |
| 120 | + echo "$FILEURI" >> $TMPF |
99 | 121 | fi |
100 | 122 | else |
101 | | - echo "$FILESPEC" |
| 123 | + echo "$FILEURI" |
102 | 124 | fi |
103 | 125 |
|
104 | 126 | done |
|
0 commit comments