Skip to content

Instantly share code, notes, and snippets.

@zorancco
Forked from woodb/gzsync.sh
Created November 2, 2015 12:28
Show Gist options
  • Select an option

  • Save zorancco/1c0c1b94fc5e99f8a7bb to your computer and use it in GitHub Desktop.

Select an option

Save zorancco/1c0c1b94fc5e99f8a7bb to your computer and use it in GitHub Desktop.
Command line utility to sync the current directory with an S3 bucket, compressing and metadata'ing files as we go...
#!/bin/bash
BUCKET=$1
TMP_DIR=`mktemp -d -t gzsync`
# check that we have a trailing slash
[[ $BUCKET != */ ]] && BUCKET="$BUCKET"/
printf "Copying files to temporary directory... "
cp -R . $TMP_DIR && cd $TMP_DIR
printf "Done\n"
PWD=`pwd`
if [ "$PWD" = "$TMP_DIR" ]
then
for filename in $(find . -type f | sed "s/\.\///g" | grep -v git | grep -v .DS_Store)
do
printf "${filename}... "
gzip -t ${filename} > /dev/null 2>&1 || { gzip -9 ${filename}; mv ${filename}.gz ${filename}; }
s3cmd put ${filename} ${BUCKET}${filename} --add-header "Content-Encoding: gzip" --acl-public > /dev/null 2>&1
printf "Done\n"
done
printf "Cleaning up... "
cd && rm -rf ${TMP_DIR}
printf "Done\n"
else
echo "ERROR: Failed to change to current directory, exiting" 1>&2
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment