Eu codifiquei dois pequenos scripts que podem ser usados para isso. Primeiro, coloque o script (nomeie-o 'splitter' ou qualquer coisa que você queira) em uma pasta separada com o arquivo a ser dividido e, em seguida, na execução do bash:
./splitter FILE SIZE
Sendo FILE o arquivo a ser dividido e SIZE o tamanho em MB. Depois disso, você verá todos os blocos divididos (SPLITTED_FILE.aa, SPLITTED_FILE.ab e assim por diante ...), um arquivo de soma de verificação (SPLITTED_CHECK_SHA256SUM) e um arquivo tar com todos esses arquivos dentro de (SPLITTED_TAR.tar). Exclua todos, exceto o arquivo tar. Quando você precisar enviá-lo, extraia-o e envie os arquivos individuais. Quando eles chegarem, coloque-os novamente em um arquivo tar com o mesmo nome (SPLITTED_TAR.tar) e coloque-o em uma pasta separada com o segundo script ('mergefile' ou qualquer nome que você escolha). Executar:
./mergefile
Ele deve extrair todos os arquivos, mesclá-los em um arquivo com o mesmo nome que o original e verificar o sha256sum.
Note que é um script muito bruto , portanto, use-o exatamente da maneira que descrevi, em uma pasta separada, sem mais nada nele. Se você quiser usá-lo, pense que é mais fácil fazer isso manualmente na linha de comando. Mas eu queria praticar um script de shell!
script splitter:
#!/bin/bash
#Usage: splitter [FILENAME] [SIZE]
PROGRAMNAME=$(basename $0)
PREFIX='SPLITTED_FILE'
if [[ $# != 2 ]]; then
echo "Usage: $PROGRAMNAME [FILENAME] [SIZE]"
exit 1
fi
FILENAME=$1
SIZE=$2
if [[ -f $FILENAME ]]; then
if [[ $SIZE =~ ^[0-9]+$ && $SIZE != 0 ]]; then
sha256sum $FILENAME > SPLITTED_CHECK_SHA256SUM
split -b ${SIZE}'M' $FILENAME $PREFIX
tar -cf SPLITTED_TAR.tar SPLITTED_FILE* SPLITTED_CHECK_SHA256SUM
echo "Done."
exit
else
echo "$PROGRAMNAME: Invalid size"
exit 1
fi
else
echo "$PROGRAMNAME: Invalid filename"
exit 1
fi
script mergefile:
#!/bin/bash
#Usage: mergefile
PROGRAMNAME=$(basename $0)
PREFIX='SPLITTED_FILE'
if [[ $# != 0 ]]; then
echo "Usage: $PROGRAMNAME. No arguments (SPLITTED_TAR.tar will be merged)"
exit 1
fi
FILENAME=""
if [[ -f 'SPLITTED_TAR.tar' ]]; then
tar -xf 'SPLITTED_TAR.tar'
FILENAME=$(cut -f 3 -d " " SPLITTED_CHECK_SHA256SUM)
cat ./SPLITTED_FILE* > $FILENAME
if [[ $(sha256sum $FILENAME | cut -f 3 -d " ") == $(cut -f 3 -d " " SPLITTED_CHECK_SHA256SUM) ]]; then
echo "SHASUM Checks!"
else
echo "File corrupted (SHASUM doesn't check!)"
exit 1
fi
echo "Done."
exit
else
echo "$PROGRAMNAME: SPLITTED_TAR.tar not found."
exit 1
fi