Sending many backup emails can get your SMTP account throttled. Saving attachments as IMAP drafts avoids that.

Idea

  1. Tar the files you want under /tmp/diabak/…
  2. split into 10 MB chunks
  3. For each chunk, run a small Java helper that uploads the message to the Drafts folder over IMAPS

Cron script sketch

Save as /etc/cron.daily/diabak.sh (edit TOEMAIL, PASSWORD, DIR, etc.):

#!/bin/bash
TOEMAIL="bak@example.com"
PASSWORD="xxx"
DIR='wordpress'
YYYYMMDD=$(date +%Y%m%d)
SUBJECT="DiaBak_of_${DIR}_${YYYYMMDD}"

TMP="/tmp/diabak/${DIR}"
ATTTMP="/tmp/diabakatt/${DIR}"

rm -rf "$TMP" && mkdir -p "$TMP"
# copy files to backup into $TMP ...

rm -rf "$ATTTMP" && mkdir -p "$ATTTMP"
cd "$ATTTMP"
tar zcPf backup.tar.gz "$TMP"
rm -rf "$TMP"
split -b 10m -a 3 -d backup.tar.gz "${SUBJECT}.part"
rm -f backup.tar.gz

for file in *; do
  java -jar SaveEmailtoDraft.jar \
    -to backup@qq.com \
    -subject "$SUBJECT" \
    -text backup@vip.qq.com \
    -smtphost smtp.qq.com \
    -imaphost imap.qq.com \
    -user "$TOEMAIL" \
    -password "$PASSWORD" \
    -filename "$file"
  sleep 30
done
rm -rf "$ATTTMP"

Prebuilt JAR

save-email-to-draft.jar

Further reading