LINUX.ORG.RU
ФорумAdmin

Backup. tar -> mutt -> gmail. MD5SUM doesn't match

 , , ,


0

1

Есть простой шелл-скрипт, который по крону бекапит исходники сайта в tar-архив, и сразу же оный отправляется mutt-ом на gmail. Поскольку гмаил не допускает более 20мб вложение, архив делится на меньшие куски. Проблема: после скачивания частей бекапа с гмаила(стандартно через веб-морду) при попытке развернуть склееный архив возникает ошибка. Один из кусков не совпадает контрольной суммой с указанной в письме. Отправляется всё по очереди и корректно, а скачивается «кривым». Похоже, что ошибка получается только в последнем куске серии. При создании бекапа пробовал делить на части на лету через пайпы, пробовал уже готовый архив разрезать — результат одинаков. Контрольные суммы перед отправкой просчитываются и добавляются в тело письма для каждой части архива вместе с аттачментом самой части(КС не путаются между кусками, это точно). Пробовал архивировать без сжатия, с gz и bzip2. Сжатие gz почему-то не прокатывает с mutt — по-тихому не отправляет письмо. Вопрос: где подвох? Всю голову сломал…

UPD: после написания поста и очередных тестов получил-таки бекап из двух кусков с нормальными КС. Ничего не понимаю…

#!/bin/bash
# make backup of site file sources 
# and send it to admin email
# splitted to 19mb each part

shopt -s extglob # allow using of * patterns

TMPDIR="/tmp/site$$"
MD5FILE="/tmp/md5$$"

mkdir $TMPDIR
FULLTAR="$TMPDIR/site_dump_"`date '+%d%m%Y-%H%M%S'`".tar.bz2"
OUT="$TMPDIR/*__*"

tar -cjf $FULLTAR --exclude='awstats' --exclude '.filemanager'  ~/http/; split  -d -b 19m "$FULLTAR" $FULLTAR"__" ## add __ postfix to each part
ALLFILECNT=`find $TMPDIR -name "*__*" -type f | wc -l` 
## ^^ all needed backup files contain __ underscores

CNT=0 # current file counter

for x in ${OUT}
do
    let 'CNT=CNT+1'
    md5sum "$x" > ${MD5FILE}
    cat  ${MD5FILE}
mutt -e "unmy_hdr from; my_hdr From: ADMIN@SITE.com.ua"         -e "set realname=\"Crontab site sources backup\" " \
        -s  "SITE.com.ua tar $CNT/$ALLFILECNT `basename $x` " \
        -a "$x" -- 'USERNAME@gmail.com' < ${MD5FILE}
done
rm -rf $TMPDIR
rm -f ${MD5FILE}


Последнее исправление: slackerr (всего исправлений: 4)

В Яндекс-Почта точно есть проблема, с тем, что маленькие файлы-кусочки бьются... Покрайней мере: 0-2 килобайта. Видимо антивирус ихний там шуршит, или что-то подобное происходит бякное.

DALDON ★★★★★
()
Ответ на: комментарий от DALDON

Ну слава Джа, я не одинок. Думалось уже, что запутавшись в трёх соснах схожу с ума :) Похоже, что гугл не может проверить bz2 архивы. Мне кажется, действительно надо посылать нерасшифровываемые файлы. Запароливать в rar для этого сервака не вариант.

slackerr
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.