-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrestore-script.sh
More file actions
139 lines (116 loc) · 4.79 KB
/
restore-script.sh
File metadata and controls
139 lines (116 loc) · 4.79 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
#!/bin/bash
if ! command -v sudo &> /dev/null; then
echo "sudo n'est pas installé sur ce système."
exit 1
fi
# Restauration depuis archive tar.gz
echo "Restauration depuis archive tar.gz"
echo "Recherche d'archives tar.gz dans /mnt..."
TARBALL=$(find /mnt -maxdepth 2 -name "*.tar.gz" -type f 2>/dev/null | head -n 1)
if [ -n "$TARBALL" ]; then
echo "Archive trouvée : $TARBALL"
echo "Contenu de l'archive (premiers éléments) :"
tar -tzf "$TARBALL"
echo ""
read -r -p "Voulez-vous extraire cette archive à la racine / ? (o/N) : " CONFIRM
if [[ "$CONFIRM" =~ ^[oOyY]$ ]]; then
echo "Extraction de l'archive vers / ..."
sudo tar -xzf "$TARBALL" -C / --preserve-permissions
if [ $? -eq 0 ]; then
echo "Extraction terminée avec succès."
else
echo "Erreur lors de l'extraction de l'archive."
fi
else
echo "Extraction annulée."
fi
else
echo "Aucune archive tar.gz trouvée dans /mnt"
fi
echo ""
# Demande interactive pour le fichier APT
# Cette liste peut être obtenue avec : apt-mark showmanual > "/opt/apt-list.txt"
echo "--- Restauration APT ---"
APT_LIST=$(find /mnt -maxdepth 2 -name "apt-list.txt" -type f 2>/dev/null | head -n 1)
if [ -z "$APT_LIST" ]; then
read -r -p "Non trouvé veuillez indiquer le chemin du fichier liste APT (Entrée pour ignorer) : " APT_LIST
if [ -n "$APT_LIST" ] && [ -f "$APT_LIST" ]; then
echo "Liste des paquets APT trouvée : $APT_LIST"
echo "Mise à jour des dépôts..."
sudo apt update
echo "Vérification des paquets disponibles..."
# Lecture brute des paquets
RAW_PACKAGES=$(cat "$APT_LIST" | tr '\n' ' ')
VALID_PACKAGES=""
UNKNOWN_PACKAGES=""
# Filtrage des paquets
for pkg in $RAW_PACKAGES; do
if apt-cache show "$pkg" >/dev/null 2>&1; then
VALID_PACKAGES="$VALID_PACKAGES $pkg"
else
UNKNOWN_PACKAGES="$UNKNOWN_PACKAGES $pkg"
fi
done
if [ ! -z "$UNKNOWN_PACKAGES" ]; then
echo "Les paquets suivants sont introuvables et seront ignorés : $UNKNOWN_PACKAGES"
fi
if [ ! -z "$VALID_PACKAGES" ]; then
echo "Tentative d'installation groupée des paquets valides..."
if ! sudo apt install -y $VALID_PACKAGES; then
echo "L'installation groupée a échoué (problème de dépendance ?)."
echo "Passage à l'installation paquet par paquet (pour en installer un maximum)..."
for pkg in $VALID_PACKAGES; do
echo "Tentative d'installation de $pkg..."
sudo apt install -y "$pkg" || echo "Échec de l'installation de $pkg"
done
else
echo "Installation groupée réussie."
fi
else
echo "Aucun paquet valide à installer."
fi
# Nettoyage
sudo apt autoremove -y
else
if [ -z "$APT_LIST" ]; then
echo "Restauration APT ignorée (aucun fichier fourni)."
else
echo "Fichier '$APT_LIST' introuvable/invalide."
fi
fi
# Demande interactive pour le fichier Flatpak
# Cette liste peut être obtenue avec : flatpak list --columns=application --app > "/opt/flatpak-list.txt"
echo "--- Restauration Flatpak ---"
read -r -p "Veuillez indiquer le chemin du fichier liste Flatpak (Entrée pour ignorer) : " FLATPAK_LIST
if [ -n "$FLATPAK_LIST" ] && [ -f "$FLATPAK_LIST" ]; then
echo "Liste des applications Flatpak trouvée : $FLATPAK_LIST"
# Vérification et installation de Flatpak si nécessaire
if ! command -v flatpak &> /dev/null; then
echo "Flatpak n'est pas installé. Tentative d'installation..."
sudo apt install -y flatpak
if ! command -v flatpak &> /dev/null; then
echo "Impossible d'installer Flatpak. Les applications Flatpak ne seront pas restaurées."
fi
fi
if command -v flatpak &> /dev/null; then
echo "Configuration du remote Flathub..."
sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
echo "Installation des Flatpaks..."
# Le fichier de backup contient --columns=application --app, donc juste les ID (ex: org.mozilla.firefox)
while IFS= read -r app; do
if [ ! -z "$app" ]; then
echo "Installation de $app..."
# Suggest explicit remote 'flathub' to avoid ambiguity or missing refs
sudo flatpak install -y --noninteractive flathub "$app" || echo "Échec de l'installation de $app"
fi
done < "$FLATPAK_LIST"
else
echo "Flatpak n'est pas installé sur ce système."
fi
else
if [ -z "$FLATPAK_LIST" ]; then
echo "Restauration Flatpak ignorée (aucun fichier fourni)."
else
echo "Fichier '$FLATPAK_LIST' introuvable/invalide."
fi
fi