aboutsummaryrefslogtreecommitdiff
path: root/bin/ak-filesplitter
blob: 0f7919b0a1291df788ed1e9eaf2eae59de19b5ed (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
#!/bin/bash
#
# The concept is simple
# 
# 1. For a given file we split in 1MB files inside a temporary directory
#
# 2. We then create a map file, containing the resulted files and their sha512sum
#
# 3. We move the files to our $CHKDIR named after their checksums
#
# We ultimately want to be seeding the file so
#
# 4. We append the checksum of the original file with its name into the map file
#
# 5. We rename the map file after its checksum and move it to maps directory
#
# 6. We are done!
#

# Uncomment next line if you want to debug 
# set -xe
PROGRAM="$(basename $0)"

if [ ! -f "$1" ]
then
	echo "[ERROR] File not found"
	exit 1
else
	FILE="$1"
fi

CHKDIR="$WORKDIR/ftr/"
FILEMAPSDIR="$WORKDIR/fmp/"
TEMPORARYDIR="/tmp/tltmp"
TECHDIR="/tmp/tltmp/chks/"
CURRENTDIR="$(pwd)/"
# BSFILE="$(basename $1)"
# echo $CURRENTDIR $BSFILE

logit(){
	logthis "<$PROGRAM>" "$1" "$2"
}

if [ ! -d "$TECHDIR" ]
then
	mkdir -p "$TECHDIR"
	if [ "$?" == 0 ]
	then
		logit "[INFO]" "Folder $TECHDIR created!"
	else
		logit "[ERROR]" "Problem occured while creating $TECHDIR"
		echo "[ERROR] Can't create $TECHDIR"
		exit 1
	fi
else
	logit "[INFO]" "Temp dir found"
fi
if [ ! -d "$FILEMAPSDIR" ]
then
	mkdir -p "$FILEMAPSDIR"
	if [ "$?" == 0 ]
	then
		logit "[INFO]" "Folder $FILEMAPSDIR created!"
	else
		logit "[ERROR]" "Problem occured while creating $FILEMAPSDIR"
		echo "[ERROR] Can't create $FILEMAPSDIR"
		exit 1
	fi
else
	logit "[INFO]" "Mapsdir found"
fi
if [ ! -d "$CHKDIR" ]
then
	mkdir -p "$CHKDIR"
	if [ "$?" == 0 ]
	then
		logit "[INFO]" "Folder $CHKDIR created!"
	else
		logit "[ERROR]" "Problem occured while creating $CHKDIR"
		echo "[ERROR] Can't create $CHKDIR"
		exit 1
	fi
else
	logit "[INFO]" "Workdir found"
fi

# Uncomment next line in case you want to debug the resulting script as well
# echo 'set -xe' > $TEMPORARYDIR/cmd_queue.sh

CHECKSUM=$(sha512sum "$FILE"|awk '{print $1}')
split -b 1048576 --additional-suffix ".chk" -d "$FILE" "$TECHDIR$(basename "$FILE")-"

cd $TECHDIR

sha512sum  * > $TEMPORARYDIR/map; while IFS="" read -r p || [ -n "$p" ]
do
	echo $p | awk '{print "mv " $2 " '$CHKDIR'" $1}' >> $TEMPORARYDIR/cmd_queue.sh
done < $TEMPORARYDIR/map

sh $TEMPORARYDIR/cmd_queue.sh
rm $TEMPORARYDIR/cmd_queue.sh

echo "$CHECKSUM  $(basename "$FILE")" >> $TEMPORARYDIR/map

MAPFILEHASH="$(sha512sum $TEMPORARYDIR/map | awk '{ print $1 }')"

`sha512sum $TEMPORARYDIR/map | awk '{print "mv " $2 " '$FILEMAPSDIR'" $1}'`

rm -rf $TEMPORARYDIR

echo "$MAPFILEHASH"