tuning splitter
This commit is contained in:
33
code/app.py
33
code/app.py
@@ -134,7 +134,7 @@ def upload_join_splitted(name, password):
|
|||||||
for part in range(100):
|
for part in range(100):
|
||||||
filename = os.path.join(
|
filename = os.path.join(
|
||||||
share['path'],
|
share['path'],
|
||||||
"%s.part.%02d"%(
|
"%s.part.%03d"%(
|
||||||
request.form['filename'],
|
request.form['filename'],
|
||||||
part
|
part
|
||||||
)
|
)
|
||||||
@@ -456,35 +456,38 @@ def script_upload_split(name = None, password = None):
|
|||||||
return "Upload not allowed",400
|
return "Upload not allowed",400
|
||||||
return """#!/bin/bash
|
return """#!/bin/bash
|
||||||
test -n "$1" || {
|
test -n "$1" || {
|
||||||
echo "First argument is split size in megabytes, add files to upload as next arguments"
|
echo "Usage: [-s SplitMegabytes] file/folder [files/folders]"
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
test -n "$2" || {
|
|
||||||
echo "Add files to upload as argument"
|
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
MAXBYTES=$(( 512 * 1024 * 1024 ))
|
||||||
|
for (( i=1; i<=$#; i++ )); do
|
||||||
|
j=$(( $i + 1 ))
|
||||||
|
[[ ${!i} = "-s" ]] && {
|
||||||
|
MAXBYTES=$(( ${!j} * 1024 * 1024 ))
|
||||||
|
shift 2
|
||||||
|
}
|
||||||
|
done
|
||||||
CAT=$( which cat )
|
CAT=$( which cat )
|
||||||
which pv &> /dev/null && CAT=$( which pv )
|
which pv &> /dev/null && CAT=$( which pv )
|
||||||
ROOTURL="%s"
|
ROOTURL="%s"
|
||||||
SHARE="%s"
|
SHARE="%s"
|
||||||
TOKEN="%s"
|
TOKEN="%s"
|
||||||
MAXBYTES=$(( $1 * 1024 * 1024 ))
|
|
||||||
shift 1
|
|
||||||
|
|
||||||
send_file() {
|
send_file() {
|
||||||
$CAT "$file_name" | split -d -b $MAXBYTES \
|
$CAT "$file_name" | split -d -a 3 -b $MAXBYTES \
|
||||||
--filter="curl -F \\"file=@-;filename=\${FILE}\\" ${ROOTURL}upload/${SHARE}/${TOKEN}" \
|
--filter="curl -f -F \\"file=@-;filename=\${FILE}\\" ${ROOTURL}upload/${SHARE}/${TOKEN}" \
|
||||||
- "$base_name.part."
|
- "$base_name.part." && \
|
||||||
curl -F "filename=$base_name" ${ROOTURL}upload_join/${SHARE}/${TOKEN}
|
curl -F "filename=$base_name" ${ROOTURL}upload_join/${SHARE}/${TOKEN}
|
||||||
}
|
}
|
||||||
send_folder() {
|
send_folder() {
|
||||||
which pv &> /dev/null && printf -v dusize -- "--size %%dk" $( du -s -k "$file_name" | cut -f1 )
|
which pv &> /dev/null && printf -v dusize -- "--size %%dk" $( du -s -k "$file_name" | cut -f1 )
|
||||||
tar c "$file_name" | $CAT $dusize - | split -d -b $MAXBYTES \
|
tar c "$file_name" | $CAT $dusize - | split -d -a 3 -b $MAXBYTES \
|
||||||
--filter="curl -F \\"file=@-;filename=\${FILE}\\" ${ROOTURL}upload/${SHARE}/${TOKEN}" \
|
--filter="curl -f -F \\"file=@-;filename=\${FILE}\\" ${ROOTURL}upload/${SHARE}/${TOKEN}" \
|
||||||
- "$base_name.tgz.part."
|
- "$base_name.tar.part." && \
|
||||||
curl -F "filename=$base_name.tgz" ${ROOTURL}upload_join/${SHARE}/${TOKEN}
|
curl -F "filename=$base_name.tar" ${ROOTURL}upload_join/${SHARE}/${TOKEN}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
echo "Splitting to $(( $MAXBYTES / 1024 / 1024 )) Mb chunks"
|
||||||
for file_name in "$@"; do
|
for file_name in "$@"; do
|
||||||
base_name=$( basename "$file_name" )
|
base_name=$( basename "$file_name" )
|
||||||
test -f "$file_name" && {
|
test -f "$file_name" && {
|
||||||
|
|||||||
Reference in New Issue
Block a user