Skip to content

Instantly share code, notes, and snippets.

@zerdliu
Created October 17, 2013 11:11
Show Gist options
  • Save zerdliu/7023098 to your computer and use it in GitHub Desktop.
Save zerdliu/7023098 to your computer and use it in GitHub Desktop.
#!/bin/bash
photo_dir=$1
limit_size=1000000000 # 1G
total_size=0
archive_photo_file_names=""
archive_idx=1
IFS=$(echo -en "\n\b")
echo "change dir to $photo_dir"
cd $photo_dir
for file in `ls $photo_dir.*.tar.gz 2>/dev/null` ; do
echo "clear $file"
rm $file
done
for photo in `find . -type f -depth 1` ; do
photo_size=`ls -l $photo | awk '{print $5}'`
(( total_size = total_size + photo_size ))
archive_file=$photo_dir.$archive_idx.tar.gz
if (( "$total_size" >= "$limit_size" )) ; then
photo_tar_file=$photo_dir.$archive_idx.tar
photo_gz_file=$photo_tar_file.gz
## archive last file
tar -uvf $photo_tar_file $photo
## zip
gzip -c $photo_tar_file > $photo_gz_file
total_size=0
(( archive_idx ++ ))
else
photo_tar_file=$photo_dir.$archive_idx.tar
photo_gz_file=$photo_tar_file.gz
if [ -f $photo_tar_file ] ; then
tar -uvf $photo_tar_file $photo
else
tar -cvf $photo_tar_file $photo
fi
fi
done
# zip last tar file
gzip -c $photo_tar_file > $photo_gz_file
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment