diff --git a/zsh/borg.zsh b/zsh/borg.zsh index 531ea66..7ef4603 100644 --- a/zsh/borg.zsh +++ b/zsh/borg.zsh @@ -24,6 +24,89 @@ b-rename() { b-info() { borg info "$REPO"::"$1" } +b-diff() { + REPO="aw:backup/backup.borg" + borg list "$REPO" + echo -n "First ID: " + read ID1 + echo -n "Second ID: " + read ID2 + + + if [ -z "$ID2" ] || [ -z "$ID2" ]; then + echo "No id" >&2 + return 1 + fi + BASEPATH="/tmp/$(uuidgen)" + mkdir -p "$BASEPATH" + FILE_LIST1="$BASEPATH/$(uuidgen)" + FILE_LIST2="$BASEPATH/$(uuidgen)" + A_DIFFS="$BASEPATH/$(uuidgen)" + B_DIFFS="$BASEPATH/$(uuidgen)" + FILE_SIZE_LIST1="$BASEPATH/$(uuidgen)" + FILE_SIZE_LIST2="$BASEPATH/$(uuidgen)" + COMPLETED_FILE1="$BASEPATH/$(uuidgen)" + COMPLETED_FILE2="$BASEPATH/$(uuidgen)" + echo "FILE_LIST1: $FILE_LIST1" + echo "FILE_LIST2: $FILE_LIST2" + echo "A_DIFS: $A_DIFFS" + echo "B_DIFFS: $B_DIFFS" + echo "FILE_SIZE_LIST1: $FILE_SIZE_LIST1" + echo "FILE_SIZE_LIST2: $FILE_SIZE_LIST2" + echo "COMPLETED_FILE1: $COMPLETED_FILE1" + echo "COMPLETED_FILE2: $COMPLETED_FILE2" + borg list --short "$REPO"::"$ID1" | pv -N "Getting List 1" > "$FILE_LIST1" + borg list --short "$REPO"::"$ID2" | pv -N "Getting List 2" > "$FILE_LIST2" + # Find differences and calculate them + diff <(pv -cN "List 1 Diff" "$FILE_LIST1") <(pv -cN "List 1 Diff" "$FILE_LIST2") > >(ag '^<' | perl -pe 's/^< //' > "$A_DIFFS") > >(ag '^>' | perl -pe 's/^> //' > "$B_DIFFS") + # Truncate everything + :|tee "$FILE_LIST1" "$FILE_LIST2" + # Calculate sizes of file1 + while read i + do + test -f /"$i" && du -sh /"$i" 2>/dev/null >> "$FILE_SIZE_LIST1" + done < <(pv -N "Calculating a sizes" "$A_DIFFS") + # Sort everything + pv -N "Sorting a sizes" "$FILE_SIZE_LIST1" | sort -h | tac > "$COMPLETED_FILE1" + # Calculate sizes of file2 + while read i + do + test -f /"$i" && du -sh /"$i" 2>/dev/null >> "$FILE_SIZE_LIST2" + done < <(pv -N "Calculating b sizes" "$B_DIFFS") + # Sort everything + pv -N "Sorting b sizes" "$FILE_SIZE_LIST2" | sort -h | tac > "$COMPLETED_FILE2" + # Truncate everything + :|tee "$A_DIFFS" "$B_DIFFS" "$FILE_SIZE_LIST1" "$FILE_SIZE_LIST2" + echo "In first backup:" + echo "$COMPLETED_FILE1" + echo "In second backup:" + echo "$COMPLETED_FILE2" +} +b-size() { + REPO="aw:backup/backup.borg" + borg list "$REPO" + echo -n "ID: " + read ID + if [ -z "$ID" ]; then + echo "No id" >&2 + return 1 + fi + FILE_LIST="/tmp/$(uuidgen)" + FILE_SIZE_LIST="/tmp/$(uuidgen)" + COMPLETED_FILE="/tmp/$(uuidgen)" + echo "FILE_LIST: $FILE_LIST" + echo "FILE_SIZE_LIST: $FILE_SIZE_LIST" + echo "COMPLETED_FILE: $COMPLETED_FILE" + borg list --short "$REPO"::"$ID" | pv -N "Getting List" > "$FILE_LIST" + while read i + do + test -f /"$i" && du -sh /"$i" 2>/dev/null >> "$FILE_SIZE_LIST" + done < <(pv -N "Calculating Sizes" "$FILE_LIST") + :>"$FILE_LIST" + pv -N "Sorting List" "$FILE_SIZE_LIST" | sort -h | tac > "$COMPLETED_FILE" + :>"$FILE_SIZE_LIST" + less "$COMPLETED_FILE" +} b-cmd() { echo "$REPO" }