diff options
author | Robin H. Johnson <robbat2@gentoo.org> | 2018-11-20 22:55:35 -0800 |
---|---|---|
committer | Robin H. Johnson <robbat2@gentoo.org> | 2018-11-20 22:55:35 -0800 |
commit | 544760570fc4b414b14d4eea128ac700b56d13f9 (patch) | |
tree | e8317548e8590a6bae217ba9112e2e3d385ae756 | |
parent | scripts/copy_buildsync: try to exclude rsync tempfile (diff) | |
download | releng-544760570fc4b414b14d4eea128ac700b56d13f9.tar.gz releng-544760570fc4b414b14d4eea128ac700b56d13f9.tar.bz2 releng-544760570fc4b414b14d4eea128ac700b56d13f9.zip |
scripts/copy_buildsync: cleanup excludes of tempfile
Signed-off-by: Robin H. Johnson <robbat2@gentoo.org>
-rwxr-xr-x | scripts/copy_buildsync.sh | 37 |
1 files changed, 32 insertions, 5 deletions
diff --git a/scripts/copy_buildsync.sh b/scripts/copy_buildsync.sh index 6c6085ff..815d21de 100755 --- a/scripts/copy_buildsync.sh +++ b/scripts/copy_buildsync.sh @@ -62,7 +62,7 @@ EOF # Copy artifacts for an arch to the outgoing directory. copy_arch_to_outgoing() { local ARCH=$1 indir=$2 outdir=$3 tmpdir=$4 - local i t rc + local i t rc timestamps if [[ ! -d ${indir} ]]; then # Nothing to do for this arch. @@ -70,21 +70,48 @@ copy_arch_to_outgoing() { fi # Copying - for i in $(find ${indir} -not -path '*/\.*' -type f | egrep -- '-20[0123][0-9]{5}(([0-9]{6})|(T[0-9]{6}Z))?' | sed -e 's:^.*-\(20[^.]\+\).*$:\1:' | sort -ur); do + timestamps=( $( + find "${indir}" \ + -regextype posix-egrep \ + -type f \ + -regex '.*-20[0123][0-9]{5}(([0-9]{6})|(T[0-9]{6}Z))?.*' \ + \( -not -path '*/\.*' \) \ + | sed -e 's:^.*-\(20[^.]\+\).*$:\1:' \ + | sort -ur + ) ) + + for i in "${timestamps[@]}" ; do #echo "Doing $i" t="${outdir}/${i}" mkdir -p ${t} 2>/dev/null - rsync "${RSYNC_OPTS[@]}" --temp-dir=${tmpdir} --partial-dir=${tmpdir} ${indir}/ --filter '- **/.*' --filter "S *${i}*" --filter 'S **/' --filter 'H *' ${t} + rsync \ + "${RSYNC_OPTS[@]}" \ + --temp-dir="${tmpdir}" \ + --partial-dir="${tmpdir}" \ + --filter '- **/.*' \ + --filter "S *${i}*" \ + --filter 'S **/' \ + --filter 'H *' \ + ${indir}/ \ + ${t} rc=$? if [ $rc -eq 0 ]; then - find ${indir} -not -path '*/\.*' -type f -name "*${i}*" -print0 | xargs -0 --no-run-if-empty $DEBUGP rm $VERBOSEP -f + find "${indir}" \ + -type f \ + -name "*${i}*" \ + \( -not -path '*/\.*' \) \ + -print0 \ + | xargs -0 --no-run-if-empty \ + "$DEBUGP" rm "$VERBOSEP" -f else echo "Not deleting ${indir}/*${i}*, rsync failed!" 1>&2 fail=1 fi done find "${outdir}" \ - -depth -mindepth 1 -type d \ + -depth \ + -mindepth 1 \ + -type d \ -exec rmdir --ignore-fail-on-non-empty {} + } |