menyalin pohon direktori ke lokasi lain, dengan kompresi opsional

1

Yang ingin saya lakukan adalah menyalin direktori ke posisi anther (di Linux), dan kompres beberapa file (dengan ekstensi tertentu) dengan GZip di tujuan, sementara file lain hanya disalin. Mungkinkah ini dicapai oleh one-liner dengan efisiensi yang baik? Banyak file menjadi salinan maka semakin efisien semakin baik.

Boris Hsu
sumber

Jawaban:

1

Nah, sebagai latihan akademis:

set -e # abort on errors
find /source -print | while read object_name; do
  if [ -d "$object_name" ]; then
    mkdir -p /destination/$object_name
  else
    if echo "$object_name" | egrep "(txt|html|...)" >/dev/null # extensions you want to compress
      cat $object_name | gzip >/destination/${object_name}.gz
    else
      cp $object_name /destination/$object_name
    fi
  fi
  rm /source/$object_name # could comment this out to preserve the source if you have the space
done
polynomial
sumber