Skip to content

Commit

Permalink
Test .tar files for rstprod before calling chgrp
Browse files Browse the repository at this point in the history
Refs #1460
  • Loading branch information
DavidHuber-NOAA committed Oct 24, 2023
1 parent 08ce4f8 commit a8dfe18
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 4 deletions.
22 changes: 20 additions & 2 deletions scripts/exgdas_enkf_earc.sh
Original file line number Diff line number Diff line change
Expand Up @@ -114,8 +114,26 @@ if [ "${ENSGRP}" -eq 0 ]; then
set +e
${TARCMD} -P -cvf "${ATARDIR}/${PDY}${cyc}/${RUN}.tar" $(cat "${ARCH_LIST}/${RUN}.txt")
status=$?
${HSICMD} chgrp rstprod "${ATARDIR}/${PDY}${cyc}/${RUN}.tar"
${HSICMD} chmod 640 "${ATARDIR}/${PDY}${cyc}/${RUN}.tar"

# Check if the newly created tarball has rstprod data in it
has_rstprod="NO"
while IFS= read -r file; do
if [[ -f ${file} ]]; then
group=$( stat -c "%G" "${file}" )
if [[ "${group}" == "rstprod" ]]; then
has_rstprod="YES"
break
fi
fi
done < "${ARCH_LIST}/${RUN}.txt"

# If rstprod was found, change the group of the tarball
if [[ "${has_rstprod}" == "YES" ]]; then
${HSICMD} chgrp rstprod "${ATARDIR}/${PDY}${cyc}/${RUN}.tar"
${HSICMD} chmod 640 "${ATARDIR}/${PDY}${cyc}/${RUN}.tar"
fi

# For safety, test if the htar/tar command failed after changing groups
if (( status != 0 && ${PDY}${cyc} >= firstday )); then
echo "FATAL ERROR: ${TARCMD} ${PDY}${cyc} ${RUN}.tar failed"
exit "${status}"
Expand Down
23 changes: 21 additions & 2 deletions scripts/exglobal_archive.sh
Original file line number Diff line number Diff line change
Expand Up @@ -264,13 +264,32 @@ if [[ ${HPSSARCH} = "YES" || ${LOCALARCH} = "YES" ]]; then
set +e
${TARCMD} -P -cvf "${ATARDIR}/${PDY}${cyc}/${targrp}.tar" $(cat "${ARCH_LIST}/${targrp}.txt")
status=$?

# Test gdas.tas and gdas_restarta.tar for rstprod and change group if so
case ${targrp} in
'gdas'|'gdas_restarta')
${HSICMD} chgrp rstprod "${ATARDIR}/${CDATE}/${targrp}.tar"
${HSICMD} chmod 640 "${ATARDIR}/${CDATE}/${targrp}.tar"
has_rstprod="NO"
# Test for rstprod in each archived file
while IFS= read -r file; do
if [[ -f ${file} ]]; then
group=$( stat -c "%G" "${file}" )
if [[ "${group}" == "rstprod" ]]; then
has_rstprod="YES"
break
fi
fi
done < "${ARCH_LIST}/${targrp}.txt"

# Change group to rstprod if it was found
if [[ "${has_rstprod}" == "YES" ]]; then
${HSICMD} chgrp rstprod "${ATARDIR}/${CDATE}/${targrp}.tar"
${HSICMD} chmod 640 "${ATARDIR}/${CDATE}/${targrp}.tar"
fi
;;
*) ;;
esac

# For safety, test if the htar/tar command failed after changing groups
if [ "${status}" -ne 0 ] && [ "${PDY}${cyc}" -ge "${firstday}" ]; then
echo "FATAL ERROR: ${TARCMD} ${PDY}${cyc} ${targrp}.tar failed"
exit "${status}"
Expand Down

0 comments on commit a8dfe18

Please sign in to comment.