First draft backup and restore dotfiles to quickly use a machine
This commit is contained in:
parent
b1672ea3c3
commit
152873f129
2 changed files with 98 additions and 0 deletions
80
dotfiles/replace_dotfiles.sh
Executable file
80
dotfiles/replace_dotfiles.sh
Executable file
|
|
@ -0,0 +1,80 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Funktion, um Dotfiles zu ersetzen und Softlinks zu erstellen
|
||||||
|
replace_dotfiles() {
|
||||||
|
local src_dir="$1"
|
||||||
|
local target_dir="$2"
|
||||||
|
local backup_dir="$3"
|
||||||
|
|
||||||
|
# Durchlaufe alle Dateien im Quellverzeichnis
|
||||||
|
for item in "$src_dir"/*; do
|
||||||
|
local relative_path="${item#$src_dir/}"
|
||||||
|
local target="$target_dir/$relative_path"
|
||||||
|
local backup_target="$backup_dir/$relative_path"
|
||||||
|
|
||||||
|
# Ignoriere '.' und '..' sowie das Skript selbst
|
||||||
|
if [[ "$(basename "$item")" != "." && "$(basename "$item")" != ".." && "$(basename "$item")" != "replace_dotfiles.sh" ]]; then
|
||||||
|
|
||||||
|
# Wenn das Element ein Verzeichnis ist, erstelle es im Zielverzeichnis und im Backup-Verzeichnis und rufe die Funktion rekursiv auf
|
||||||
|
if [[ -d "$item" ]]; then
|
||||||
|
mkdir -p "$target"
|
||||||
|
mkdir -p "$backup_target"
|
||||||
|
replace_dotfiles "$item" "$target_dir" "$backup_dir"
|
||||||
|
else
|
||||||
|
# Wenn die Datei im Zielverzeichnis existiert und keine Softlink ist
|
||||||
|
if [[ -e "$target" && ! -L "$target" ]]; then
|
||||||
|
# Datei in den Sicherungsordner verschieben (inkl. Ordnerstruktur)
|
||||||
|
mkdir -p "$(dirname "$backup_target")"
|
||||||
|
mv "$target" "$backup_target"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Softlink zum Dotfile im Zielverzeichnis erstellen
|
||||||
|
ln -sfn "$item" "$target"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
# Verzeichnis des aktuellen Verzeichnisses
|
||||||
|
DOTFILES_DIR="$(pwd)"
|
||||||
|
|
||||||
|
# Sicherungsordner im Home-Verzeichnis
|
||||||
|
BACKUP_DIR="$HOME/dotfiles_backup"
|
||||||
|
|
||||||
|
# Wenn der Sicherungsordner bereits existiert
|
||||||
|
if [[ -d "$BACKUP_DIR" ]]; then
|
||||||
|
echo "Das Backup-Verzeichnis $BACKUP_DIR existiert bereits."
|
||||||
|
echo "Bitte wählen Sie eine Option:"
|
||||||
|
echo "1) Überschreiben"
|
||||||
|
echo "2) Neues Verzeichnis mit Datum und Uhrzeit erstellen"
|
||||||
|
echo "3) Abbrechen"
|
||||||
|
read -p "Option (1/2/3): " option
|
||||||
|
|
||||||
|
case $option in
|
||||||
|
1)
|
||||||
|
echo "Überschreiben des vorhandenen Backup-Verzeichnisses..."
|
||||||
|
rm -rf "$BACKUP_DIR"
|
||||||
|
mkdir -p "$BACKUP_DIR"
|
||||||
|
;;
|
||||||
|
2)
|
||||||
|
timestamp=$(date +"%Y%m%d_%H%M%S")
|
||||||
|
BACKUP_DIR="${BACKUP_DIR}_$timestamp"
|
||||||
|
echo "Erstellen eines neuen Backup-Verzeichnisses: $BACKUP_DIR"
|
||||||
|
mkdir -p "$BACKUP_DIR"
|
||||||
|
;;
|
||||||
|
3)
|
||||||
|
echo "Abgebrochen."
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Ungültige Option. Abgebrochen."
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
else
|
||||||
|
mkdir -p "$BACKUP_DIR"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Dotfiles ersetzen und Softlinks erstellen
|
||||||
|
replace_dotfiles "$DOTFILES_DIR" "$HOME" "$BACKUP_DIR"
|
||||||
|
echo "Dotfile-Symlinks wurden aktualisiert und gesichert."
|
||||||
18
dotfiles/restore_dotfiles.sh
Executable file
18
dotfiles/restore_dotfiles.sh
Executable file
|
|
@ -0,0 +1,18 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Sicherungsordner im Home-Verzeichnis
|
||||||
|
BACKUP_DIR="$HOME/dotfiles_backup"
|
||||||
|
|
||||||
|
# Durchlaufe alle Dateien im Sicherungsordner
|
||||||
|
for backup_file in "$BACKUP_DIR"/.*; do
|
||||||
|
# Ignoriere '.' und '..'
|
||||||
|
if [[ "$(basename "$backup_file")" != "." && "$(basename "$backup_file")" != ".." ]]; then
|
||||||
|
# Zielpfad im Home-Verzeichnis
|
||||||
|
target="$HOME/$(basename "$backup_file")"
|
||||||
|
|
||||||
|
# Datei aus dem Sicherungsordner ins Home-Verzeichnis verschieben
|
||||||
|
mv "$backup_file" "$target"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "Dotfiles wurden aus dem Sicherungsordner wiederhergestellt."
|
||||||
Loading…
Add table
Reference in a new issue