blob: 2fb0ed9f1dda42053cf14aae9512987e129f32dd (
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 "Hash of the map is $MAPFILEHASH and it's located at $FILEMAPSDIR"
|