nievergeltlab
11/29/2018 - 9:35 PM

compare and replace for two directories

Compare two directories to reconcile them

src='/run/media/genetics/pgc_ptsd/broad/gracy' # Source directory
dst='/run/media/root/_gen/pts1/gracy' # Destination directory


icp() {
  f="${1}";
  [ -d "$f" ] && {
    [ ! -d "${dst}${f#$src}" ] && mkdir -p "${dst}${f#$src}";
    return
  }

  [ ! -f "${dst}/${f#$src/}" ] && { cp -a "${f}" "${dst}/${f#$src/}"; return; }
  fsizeSrc=$( stat -c %s "$f" )
  fsizeDst=$( stat -c %s "${dst}/${f#$src/}" )
  [ ${fsizeDst} -lt ${fsizeSrc} ] && echo "copying "${f}"" && cp -a "${f}" "${dst}/${f#$src/}"
}

export -f icp
export src
export dst

find ${src} -exec bash -c 'icp "$0"' {} \;