From 32c1185f2dab585bae1f9cec1ea485bf065a2a3f Mon Sep 17 00:00:00 2001 From: saul365 Date: Tue, 11 Aug 2026 22:31:31 -0600 Subject: [PATCH] Add s3-backup.sh and kindle_filler --- kindle_filler.sh | 158 +++++++++++++++++++++++++++++++++++++++++++++++ s3-backup.sh | 45 ++++++++++++++ 2 files changed, 203 insertions(+) create mode 100644 kindle_filler.sh create mode 100644 s3-backup.sh diff --git a/kindle_filler.sh b/kindle_filler.sh new file mode 100644 index 0000000..a24571c --- /dev/null +++ b/kindle_filler.sh @@ -0,0 +1,158 @@ +#!/bin/bash +# Kindle Disk Filler Utility for Linux/macOS +# Author: iiroak (https://github.com/iiroak) +# This tool fills the disk to prevent automatic updates on tablets +# that have not been registered. Useful for jailbreak preparation. + +set -e + +echo "" +echo " +=============================================================+" +echo " | Kindle Disk Filler Utility v2.0 |" +echo " +=============================================================+" +echo " | Fills disk to prevent auto-updates on unregistered |" +echo " | tablets. Useful for jailbreak preparation. |" +echo " +=============================================================+" +echo "" + +dir="fill_disk" +mkdir -p "$dir" + +find_next_free_index() { + local index=0 + while true; do + if [ ! -f "$dir/file_$index" ]; then + echo "$index" + return + fi + index=$((index + 1)) + done +} + +get_free_mb() { + df -Pm $dir | awk 'NR==2 {print $4}' +} + +create_file () { + local size=$1 path=$2 + + if command -v fallocate >/dev/null 2>&1; then + fallocate -l "$size" "$path" && return + fi + if command -v mkfile >/dev/null 2>&1; then + mkfile "$size" "$path" && return + fi + + dd if=/dev/zero of="$path" bs="$size" count=1 status=none +} + +render_progress() { + local percent=$1 + local status=$2 + local detail=$3 + local width=32 + local filled=$(( percent * width / 100 )) + local empty=$(( width - filled )) + local bar empty_bar + + bar=$(printf '%*s' "$filled" '' | tr ' ' '=') + empty_bar=$(printf '%*s' "$empty" '' | tr ' ' '-') + + printf '\r\033[2K [%s%s] %3d%% %s%s' "$bar" "$empty_bar" "$percent" "$status" "$detail" +} + +echo "How much free space (in MB) do you want to leave on disk?" +echo "It is highly recommended to leave only 20-50 MB (no more) to prevent updates." +echo "" +echo " [1] 20 MB (default)" +echo " [2] 50 MB" +echo " [3] 100 MB" +echo " [4] Custom value" +echo "" +read -p " Enter your choice (1-4) [1]: " choice + +case "$choice" in + 2) minFreeMB=50 ;; + 3) minFreeMB=100 ;; + 4) + read -p " Enter the minimum free space in MB (e.g., 30): " custom + if [[ "$custom" =~ ^[0-9]+$ ]] && [ "$custom" -gt 0 ]; then + minFreeMB=$custom + else + echo "Invalid input. Using default (20 MB)." + minFreeMB=20 + fi + ;; + *) minFreeMB=20 ;; +esac + +echo "" +echo "[>] Starting disk fill process..." +echo "" + +i=$(find_next_free_index) +totalFreeMB=$(get_free_mb) +targetFillMB=$((totalFreeMB - minFreeMB)) + +if [ "$targetFillMB" -le 0 ]; then + echo "[!] The requested free space is greater than or equal to the current free space. Nothing to do." + echo "" + read -p "Press Enter to exit..." _ + exit 0 +fi + +while true; do + freeMB=$(get_free_mb) + fillableMB=$((freeMB - minFreeMB)) + + if [ "$fillableMB" -le 0 ]; then + break + fi + + if [ "$fillableMB" -ge 1024 ]; then + fileSize=1G + elif [ "$fillableMB" -ge 100 ]; then + fileSize=100M + elif [ "$fillableMB" -ge 10 ]; then + fileSize=10M + else + fileSize="${fillableMB}M" + fi + + filePath="$dir/file_$i" + + usedMB=$((totalFreeMB - freeMB)) + percent=$((usedMB * 100 / targetFillMB)) + [ $percent -gt 100 ] && percent=100 + [ $percent -lt 0 ] && percent=0 + + render_progress "$percent" "Creating: " "file_$i ($fileSize)" + + create_file "$fileSize" "$filePath" + + if [ ! -f "$filePath" ]; then + break + fi + + i=$(find_next_free_index) + freeMB=$(get_free_mb) + + usedMB=$((totalFreeMB - freeMB)) + percent=$((usedMB * 100 / targetFillMB)) + [ $percent -gt 100 ] && percent=100 + [ $percent -lt 0 ] && percent=0 + + remainingLabel="${freeMB} MB" + [ $freeMB -ge 1024 ] && remainingLabel="$(awk "BEGIN {printf \"%.1f\", $freeMB/1024}") GB" + + render_progress "$percent" "Done: " "file_$((i-1)) | Free: $remainingLabel" +done + +printf '\n' +echo " +---------------------------------------------------------+" +echo " | Disk fill complete! |" +echo " | Files created: $i" +echo " | Target directory: $dir" +echo " +---------------------------------------------------------+" +echo "" +read -p "Press Enter to exit..." _ diff --git a/s3-backup.sh b/s3-backup.sh new file mode 100644 index 0000000..ac85d4b --- /dev/null +++ b/s3-backup.sh @@ -0,0 +1,45 @@ +#!/bin/bash +DATETIME=`date +%y%m%d-%H_%M_%S` +SRC=$1 +DST=$2 +GIVENNAME=$3 +showhelp(){ + echo "\n\n############################################" + echo "# bkupscript.sh #" + echo "############################################" + echo "\nThis script will backup files/folders into a single compressed file and will store it in the current folder." + echo "In order to work, this script needs the following three parameters in the listed order: " + echo "\t- The full path for the folder or file you want to backup." + echo "\t- The name of the Space where you want to store the backup at (not the url, just the name)." + echo "\t- The name for the backup file (timestamp will be added to the beginning of the filename)\n" + echo "Example: sh bkupscript.sh ./testdir testSpace backupdata\n" +} +tarandzip(){ + echo "\n##### Gathering files #####\n" + if tar -czvf $GIVENNAME-$DATETIME.tar.gz $SRC; then + echo "\n##### Done gathering files #####\n" + return 0 + else + echo "\n##### Failed to gather files #####\n" + return 1 + fi +} +movetoSpace(){ + echo "\n##### MOVING TO SPACE #####\n" + if s3cmd put $GIVENNAME-$DATETIME.tar.gz s3://$DST; then + echo "\n##### Done moving files to s3://"$DST" #####\n" + return 0 + else + echo "\n##### Failed to move files to the Space #####\n" + return 1 + fi +} +if [ ! -z "$GIVENNAME" ]; then + if tarandzip; then + movetoSpace + else + showhelp + fi +else + showhelp +fi