#!/bin/bash # Setup output file backup_dir="$HOME/backup_software_lists" mkdir -p "$backup_dir" outfile="$backup_dir/complete-installed-software-list.txt" # Clear the outfile before writing > "$outfile" # Python Packages if which pip >/dev/null; then echo "Python Packages:" >> "$outfile" pip freeze >> "$outfile" else echo "Python pip is not installed or not found in PATH." >> "$outfile" fi echo >> "$outfile" # Node.js Global Packages if which npm >/dev/null; then echo "Node.js Global Packages:" >> "$outfile" npm list -g --depth=0 >> "$outfile" else echo "Node.js npm is not installed or not found in PATH." >> "$outfile" fi echo >> "$outfile" # Snap Packages if which snap >/dev/null; then echo "Snap Packages:" >> "$outfile" snap list >> "$outfile" else echo "Snap is not installed." >> "$outfile" fi echo >> "$outfile" # Applications in /opt if [ -d "/opt" ]; then echo "Applications in /opt:" >> "$outfile" ls /opt >> "$outfile" else echo "/opt directory does not exist." >> "$outfile" fi echo >> "$outfile" # Local Applications in /usr/local echo "Local Applications in /usr/local:" >> "$outfile" ls /usr/local >> "$outfile" echo >> "$outfile" # User Installed Applications user_applications_dir="$HOME/applications" if [ -d "$user_applications_dir" ]; then echo "User Applications Folder:" >> "$outfile" ls "$user_applications_dir" >> "$outfile" else echo "User applications directory does not exist or not found: $user_applications_dir" >> "$outfile" fi echo >> "$outfile" # Installed Debian Packages Details echo "Installed Debian Packages Details:" >> "$outfile" dpkg-query -l | awk 'BEGIN {print "| Name | Description |\n|---|---|"} NR>5 { desc=$5; for (i=6; i<=NF; i++) desc=desc " " $i; print "| " $2 " | " desc " |" }' >> "$outfile" echo "Installed packages list written to $outfile" echo >> "$outfile" # Backup of repositories sources_list="$backup_dir/sources.list.backup" sources_list_d="$backup_dir/sources.list.d.backup.tar.gz" echo "Backup of repositories:" >> "$outfile" echo "Sources list: $sources_list" >> "$outfile" echo "Sources list.d: $sources_list_d" >> "$outfile" cp /etc/apt/sources.list "$sources_list" tar czvf "$sources_list_d" -C /etc/apt sources.list.d/ echo >> "$outfile" echo "Backup of software lists has been created at: $outfile."