aboutsummaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
authorkaotisk <kaotisk@arching-kaos.org>2022-11-15 00:31:26 +0200
committerkaotisk <kaotisk@arching-kaos.org>2022-11-15 00:31:26 +0200
commit7e08d401a7d9acba7b9e319ca981b78dd8b00556 (patch)
treee6b91ddfa7be49b19e29113049c4644d67976017 /bin
parent1db7cda752ed90919917b6979975eae0c7ed4af3 (diff)
downloadarching-kaos-tools-7e08d401a7d9acba7b9e319ca981b78dd8b00556.tar.gz
arching-kaos-tools-7e08d401a7d9acba7b9e319ca981b78dd8b00556.tar.bz2
arching-kaos-tools-7e08d401a7d9acba7b9e319ca981b78dd8b00556.zip
File splitter and joiner scripts
Diffstat (limited to 'bin')
-rwxr-xr-xbin/filejoiner78
-rwxr-xr-xbin/filesplitter107
2 files changed, 185 insertions, 0 deletions
diff --git a/bin/filejoiner b/bin/filejoiner
new file mode 100755
index 0000000..5ac7dc7
--- /dev/null
+++ b/bin/filejoiner
@@ -0,0 +1,78 @@
+#!/bin/bash
+#
+set -xe
+
+PROGRAM="$(basename $0)"
+
+usage(){
+ echo "$PROGRAM <hash>"
+}
+
+cdaw(){
+ pwd > tmp_holder
+}
+
+cdaw
+
+CURDIR="$(cat tmp_holder)"
+
+TMPWD="/tmp/rjs"
+
+if [ ! -d "$TMPWD" ]
+then
+ mkdir -p "$TMPWD"
+ if [ "$?" != 0 ]
+ then
+ echo "Can't create $TMPWD dir"
+ exit 1
+ fi
+fi
+
+MAPSDIR="$WORKDIR/fmp"
+
+CHKDIR="$WORKDIR/ftr"
+
+cd $CHKDIR
+if [ "$?" != 0 ]
+then
+ echo "Can't get dir"
+ exit 1
+fi
+
+
+
+if [ ! -z $1 ]
+then
+ MAPSFILE="$1"
+
+ echo '#!/bin/bash' > script
+
+ awk '{print "cp '$CHKDIR'/"$1" '$TMPWD'/"$2" "}' $MAPSDIR/$MAPSFILE| grep chk > script
+
+ sh script
+ if [ "$?" != 0 ]
+ then
+ echo "Error executing copy script"
+ exit 1
+ fi
+ rm script
+
+ cd $TMPWD
+
+ echo "$PWD"
+ OUTPUT="$(tail -n1 $MAPSDIR/$MAPSFILE | awk '{print $2}')"
+
+ echo $OUTPUT
+
+ cat $(echo $(cat $MAPSDIR/$MAPSFILE|grep chk|awk '{print $2" "}'|tr -d '\n')) > $OUTPUT
+
+ sha512sum -c $MAPSDIR/$MAPSFILE
+
+ mv $OUTPUT $CURDIR
+
+ rm -rf "$TMPWD"
+
+ rm $CURDIR/tmp_holder
+else
+ usage
+fi
diff --git a/bin/filesplitter b/bin/filesplitter
new file mode 100755
index 0000000..0236642
--- /dev/null
+++ b/bin/filesplitter
@@ -0,0 +1,107 @@
+#!/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!
+#
+
+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
+
+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
+
+cat $TEMPORARYDIR/map
+
+`sha512sum $TEMPORARYDIR/map | awk '{print "mv " $2 " '$FILEMAPSDIR'" $1}'`
+
+rm -rf $TEMPORARYDIR