Firefox
Aquí tens el resum dels 5 passos que vam seguir per instal·lar Firefox 152.0.5 des de ~/Downloads/firefox-152.0.5.tar.xz:
1. Extreure el fitxer
cd ~/Downloads tar -xf firefox-152.0.5.tar.xz
2. Moure la carpeta a /opt
sudo mv firefox /opt/firefox-152
3. Crear enllaç simbòlic al terminal
sudo ln -sf /opt/firefox-152/firefox /usr/local/bin/firefox
4. Crear l’accés directe al menú d’aplicacions
A ~/.local/share/applications/firefox.desktop amb les dades necessàries (nom, icona, executable, etc.).
5. Configurar el català
Des de about:preferences → General → Idioma, afegir Català com a idioma preferit.
Resultat: ✅ Firefox 152.0.5 instal·lat, funcional des del menú d’aplicacions i des del terminal.

VLC

LibreOffice
com vull instal·lar la versió catalana
Enllaços ràpits
Synology assistant
Pas 1: Instal·lar el Synology Assistant
flatpak install flathub com.synology.SynologyAssistant
Pas 2: Executar l’aplicació
Un cop instal·lat, pots obrir-lo de dues maneres:
Des de la terminal:
flatpak run com.synology.SynologyAssistant
qBittorrent

Calibre
Restablir TOT Calibre als valors per defecte
Si vols restablir tota la configuració de Calibre, executa al terminal:
# Tanca Calibre primer! mv ~/.config/calibre ~/.config/calibre.backup
Instal·lador oficial de Calibre (RECOMANAT)
Aquesta és la manera oficial que recomana el propi Calibre. Obre el terminal i executa:
sudo -v && wget -nv -O- https://download.calibre-ebook.com/linux-installer.sh | sudo sh /dev/stdin
Què fa aquesta comanda?
sudo -v: demana la contrasenya d’administradorwget: descarrega l’script oficial d’instal·laciósudo sh /dev/stdin: l’executa amb permisos de root
Un cop acabi, podràs obrir Calibre des del menú d’aplicacions o escrivint calibre al terminal.
Desinstal·lar calibre
sudo apt remove calibre
Visual Vode
Synology Assistan
backup_mut
correu electronic
Llibre d’0ffice
Backup_mut
Posar a l’escriptori backup_mut.txt . Aplicar aquesta comanda:
sudo cp /home/Miquel/Desktop/backup_mut-ok.txt /usr/local/bin/backup_mut
amb lsblk podem veure la estructura i les particions del sistema Deepin

Clar, aquí tens una descripció detallada de l’estructura de particions del teu sistema Deepin basant-me en la sortida de lsblk:
Disc sda – 476,9 GB (disc principal)
És el disc intern del sistema on hi ha Deepin instal·lat.
sda1 – 100 MB → /boot/efi
Partició EFI System Partition (ESP). Conté el carregador d’arrencada (bootloader) en format UEFI. És essencial per a l’inici del sistema.
sda2 – 16 MB
Partició Microsoft Reserved Partition (MSR). Reservada per Windows per a metadades internes. No té punt de muntatge.
sda3 – 346,4 GB → /media/Miquel/windows
Partició principal de Windows (probablement C:). Muntada en modo lectura/escriptura des de Deepin, la tens accés a /media/Miquel/windows.
sda4 – 1,2 GB
Partició de recuperació de Windows (WinRE). Conté eines per restaurar Windows en cas de fallada. No té punt de muntatge actiu.
sda5 – 129,3 GB → /var, /persistent/ostree, /ostree, /sysroot/ostree, /sysroot
Partició principal de Deepin (basada en OSTree). Això és típic de Deepin V23 o versions amb sistema immutable/atomic.
/var: Dades variables del sistema (logs, bases de dades, spool, etc.)/ostreei/persistent/ostree: Sistema de desplegament OSTree (similar a una actualització atòmica)./sysrooti/sysroot/ostree: Arrel del sistema operatiu (root filesystem).
Disc sdb – 57,7 GB (disc extern o USB)
sdb1 – 57,7 GB → /media/Miquel/backup
Dispositiu extraïble (la columna RM = 1 indica que és extraïble). Conté una única partició amb tot l’espai, muntada com a còpia de seguretat (backup).
Resum visual
sda (476,9 GB) ── Disc intern ├─ sda1 (100 MB) → /boot/efi → Arrencada UEFI ├─ sda2 (16 MB) → → Reserva MSR (Windows) ├─ sda3 (346,4 GB)→ /media/Miquel/windows → Windows ├─ sda4 (1,2 GB) → → Recuperació Windows └─ sda5 (129,3 GB)→ /var, /ostree... → Deepin (sistema OSTree) sdb (57,7 GB) ── Disc extraïble └─ sdb1 (57,7 GB)→ /media/Miquel/backup → Còpia de seguretat
Tens un sistema dual (Deepin + Windows) en el mateix disc, amb Deepin muntat sobre una estructura OSTree (sistema atòmic/immutable) i un disc extern dedicat a còpies de seguretat.


Fem un llistat de backup mut
$ cat -n /usr/local/bin/backup_mut
#!/bin/bash
# Indica al sistema que aquest fitxer s'ha d'executar amb l'intèrpret Bash.
# ==========================================
# 1. CONFIGURACIÓ INICIAL I COLORS
# ==========================================
VERMELL='\033[0;31m'
VERD='\033[0;32m'
GROC='\033[1;33m'
BLAU='\033[0;34m'
NC='\033[0m'
# Opcions base de rsync; s'hi afegeixen flags segons el sistema de fitxers del destí
RSYNC_OPTS="-avh --progress"
clear
# ==========================================
# 2. FUNCIONS DE DETECCIÓ I MUNTATGE DE DISCS
# ==========================================
# disc_sistema: nom del disc físic on viu el Deepin (ex: "sda").
disc_sistema() {
local arrel
arrel=$(findmnt -n -o SOURCE / 2>/dev/null)
lsblk -ndo PKNAME "$arrel" 2>/dev/null | head -n 1
}
# detecta_discos: omple els vectors amb les particions (o discs sencers amb
# sistema de fitxers propi) de tots els discs que NO siguin el del sistema.
detecta_discos() {
local sys part tipus disc mp mida label fst
sys=$(disc_sistema)
DISC_NOM=(); DISC_MIDA=(); DISC_ETIQUETA=(); DISC_MUNTATGE=(); DISC_MUNTAT=()
NUM_DISCS=0
while read -r part tipus; do
if [ "$tipus" == "disk" ]; then
disc=$(basename "$part")
else
disc=$(lsblk -ndo PKNAME "$part" 2>/dev/null | head -n 1)
fi
mp=$(lsblk -ndo MOUNTPOINT "$part" 2>/dev/null | head -n 1)
fst=$(lsblk -ndo FSTYPE "$part" 2>/dev/null | head -n 1)
# Mai el disc físic on viu el Deepin (ni les seves particions)
[ "$disc" == "$sys" ] && continue
# Descarta dispositius sense sistema de fitxers útil
case "$fst" in
""|swap|crypto_LUKS) continue ;;
esac
# Descarta punts de muntatge propis del sistema operatiu
case "$mp" in
/|/boot|/boot/efi|/efi) continue ;;
esac
mida=$(lsblk -ndo SIZE "$part" 2>/dev/null | head -n 1)
label=$(lsblk -ndo LABEL "$part" 2>/dev/null | head -n 1)
NUM_DISCS=$((NUM_DISCS + 1))
DISC_NOM[NUM_DISCS]="$part"
DISC_MIDA[NUM_DISCS]="$mida"
DISC_ETIQUETA[NUM_DISCS]="${label:-sense etiqueta}"
DISC_MUNTATGE[NUM_DISCS]="$mp"
if [ -n "$mp" ]; then
DISC_MUNTAT[NUM_DISCS]="si"
else
DISC_MUNTAT[NUM_DISCS]="no"
fi
done < <(lsblk -nlp -o NAME,TYPE 2>/dev/null | awk '$2 == "part" || $2 == "disk" {print $1, $2}')
}
# munta_disc <índex>: monta la unitat amb udisksctl si cal (no cal sudo).
munta_disc() {
local idx="$1" mp
[ "${DISC_MUNTAT[$idx]}" == "si" ] && return 0
if ! command -v udisksctl >/dev/null 2>&1; then
echo -e "${VERMELL}udisksctl no disponible. Monta el disc des del gestor de fitxers.${NC}"
return 1
fi
echo -e "${BLAU}Muntant ${DISC_NOM[$idx]}...${NC}"
udisksctl mount -b "${DISC_NOM[$idx]}" >/dev/null 2>&1
mp=$(lsblk -ndo MOUNTPOINT "${DISC_NOM[$idx]}" 2>/dev/null | head -n 1)
if [ -n "$mp" ]; then
DISC_MUNTATGE[$idx]="$mp"
DISC_MUNTAT[$idx]="si"
echo -e "${VERD}✓ Muntat a: $mp${NC}"
return 0
else
echo -e "${VERMELL}No s'ha pogut muntar ${DISC_NOM[$idx]}.${NC}"
echo "Monta'l des del gestor de fitxers i torna-ho a provar."
return 1
fi
}
# mostra_discos: llistat numerat d'unitats + estat de muntatge.
mostra_discos() {
local i estat
if [ "$NUM_DISCS" -eq 0 ]; then
echo -e " ${VERMELL}(cap)${NC} No s'ha detectat cap USB ni disc extern/intern."
else
for i in $(seq 1 "$NUM_DISCS"); do
if [ "${DISC_MUNTAT[$i]}" == "si" ]; then
estat="${VERD}muntat a ${DISC_MUNTATGE[$i]}${NC}"
else
estat="${GROC}no muntat (es muntarà en triar-lo)${NC}"
fi
echo -e " ${VERD}$i${NC}) ${DISC_ETIQUETA[$i]} ${BLAU}[${DISC_NOM[$i]}, ${DISC_MIDA[$i]}]${NC} - $estat"
done
fi
}
# rsync_compat <dispositiu>: adapta les opcions de rsync al sistema de fitxers:
# - ext4/btrfs/xfs: hardlinks (-H) I permisos/propietaris (clau per a ostree).
# - ntfs: hardlinks sí, sense permisos Linux.
# - exfat/vfat: ni hardlinks ni permisos.
rsync_compat() {
local fst
fst=$(lsblk -ndo FSTYPE "$1" 2>/dev/null | head -n 1)
case "$fst" in
ext2|ext3|ext4|btrfs|xfs) echo " -H" ;;
ntfs) echo " -H --no-perms --no-owner --no-group" ;;
*) echo " --no-perms --no-owner --no-group" ;;
esac
}
# ajusta_rsync <ruta_desti>: determina el dispositiu de destí i afegeix els
# flags adequats a RSYNC_OPTS.
ajusta_rsync() {
local ruta="$1" i disc_desti=""
for i in $(seq 1 "$NUM_DISCS"); do
case "$ruta" in
"${DISC_MUNTATGE[$i]}"*) disc_desti="${DISC_NOM[$i]}"; break ;;
esac
done
RSYNC_OPTS="${RSYNC_OPTS}$(rsync_compat "$disc_desti")"
}
# ==========================================
# 3. MENÚ PRINCIPAL
# ==========================================
echo -e "${VERD}========================================${NC}"
echo -e "${VERD} BACKUP_MUT - BACKUP I RESTAURACIÓ ${NC}"
echo -e "${VERD}========================================${NC}"
echo ""
echo "1) Fer còpia de seguretat (backup)"
echo "2) Restaurar còpia de seguretat"
echo "3) Sortir"
echo ""
read -p "Tria una opció [1-3]: " opcio
# ==========================================
# 4. LÒGICA DE DECISIÓ (CASE)
# ==========================================
case $opcio in
1) # --- OPCIÓ 1: FER BACKUP ---
echo ""
echo -e "${GROC}--- MODE BACKUP ---${NC}"
detecta_discos
echo ""
echo -e "${BLAU}Unitats disponibles on guardar el backup:${NC}"
mostra_discos
echo ""
# Arbre visual de tots els discs i particions del sistema
DISC_SYS=$(disc_sistema)
echo -e "${BLAU}🗺️ Mapa de discs del sistema (el disc '${DISC_SYS}' és el del Deepin i queda exclòs):${NC}"
lsblk -o NAME,SIZE,TYPE,PKNAME,LABEL,MOUNTPOINT
echo ""
if [ "$NUM_DISCS" -eq 0 ]; then
echo -e "${GROC}PKNAME és el disc físic 'pare'. Si tots els volums tenen el${NC}"
echo -e "${GROC}mateix PKNAME que el sistema, són particions del mateix disc${NC}"
echo -e "${GROC}físic i queden excloses per seguretat.${NC}"
echo ""
fi
echo ""
echo "Tria el directori ORIGEN:"
echo -e " ${VERD}A${NC}) /home/Miquel (tot el directori d'usuari)"
echo -e " ${VERD}B${NC}) /home/Miquel/Documents"
echo -e " ${VERD}C${NC}) /home/Miquel/Pictures"
echo -e " ${VERD}D${NC}) /home/Miquel/Downloads"
echo -e " ${VERD}S${NC}) Sistema Deepin (sda5)"
echo -e " ${GROC}R${NC}) Especificar ruta manualment"
echo ""
read -p "Opció [A/B/C/D/S/R]: " opcio_dir
case "$opcio_dir" in
A|a)
origen="/home/Miquel/"
echo -e "${VERD}✓ Directori seleccionat: /home/Miquel${NC}"
;;
B|b)
origen="/home/Miquel/Documents/"
echo -e "${VERD}✓ Directori seleccionat: /home/Miquel/Documents${NC}"
;;
C|c)
origen="/home/Miquel/Pictures/"
echo -e "${VERD}✓ Directori seleccionat: /home/Miquel/Pictures${NC}"
;;
D|d)
origen="/home/Miquel/Downloads/"
echo -e "${VERD}✓ Directori seleccionat: /home/Miquel/Downloads${NC}"
;;
S|s)
echo -e "${VERD}💾 BACKUP DEL SISTEMA DEEPIN (sda5)${NC}"
echo ""
ARREL=$(findmnt -n -o SOURCE / 2>/dev/null)
if [ "$ARREL" != "/dev/sda5" ]; then
echo -e "${GROC}⚠ Atenció: La partició arrel actual és ${ARREL:-desconeguda}, no /dev/sda5.${NC}"
read -p "Vols fer el backup del sistema actual de totes maneres? (s/n): " confirma_sys
if [ "$confirma_sys" != "s" ] && [ "$confirma_sys" != "S" ]; then
echo "Operació cancel·lada."
exit 0
fi
fi
if [ "$NUM_DISCS" -eq 0 ]; then
echo -e "${VERMELL}Error: No s'ha trobat cap USB o disc connectat!${NC}"
echo "Connecta un USB i torna a intentar-ho."
exit 1
elif [ "$NUM_DISCS" -eq 1 ]; then
if munta_disc 1; then
USB_PATH="${DISC_MUNTATGE[1]}/"
echo -e "${BLAU}Unitat detectada: ${USB_PATH}${NC}"
else
exit 1
fi
else
echo "Tria la unitat on guardar el backup del sistema:"
mostra_discos
read -p "Opció [1-$NUM_DISCS]: " opcio_sys
if [[ "$opcio_sys" =~ ^[0-9]+$ ]] && [ "$opcio_sys" -ge 1 ] && [ "$opcio_sys" -le "$NUM_DISCS" ]; then
if munta_disc "$opcio_sys"; then
USB_PATH="${DISC_MUNTATGE[$opcio_sys]}/"
else
exit 1
fi
else
echo -e "${VERMELL}Opció no vàlida.${NC}"
exit 1
fi
fi
echo ""
origen="/"
# Carpeta FIXA: el backup del sistema s'actualitza incrementalment
desti="${USB_PATH}deepin_system_backup"
echo "Origen: $origen"
echo "Destí: $desti"
echo ""
mkdir -p "$desti"
if [ "$EUID" -ne 0 ]; then
echo -e "${GROC}⚠ Per copiar fitxers del sistema es necessiten permisos d'administrador.${NC}"
echo -e "${BLAU}Introdueix la teva contrasenya quan se't demani.${NC}"
RSYNC_SYS="sudo rsync"
else
RSYNC_SYS="rsync"
fi
ajusta_rsync "$desti"
echo -e "${VERD}Iniciant còpia de seguretat del sistema...${NC}"
echo -e "${GROC}Aquest procés pot trigar força temps...${NC}"
$RSYNC_SYS $RSYNC_OPTS \
--exclude='/proc' \
--exclude='/sys' \
--exclude='/dev' \
--exclude='/run' \
--exclude='/tmp' \
--exclude='/mnt' \
--exclude='/media' \
--exclude='/lost+found' \
"$origen" "$desti/"
echo -e "${BLAU}Guardant informació del backup...${NC}"
if [ "$RSYNC_SYS" == "sudo rsync" ]; then ESCRIU="sudo tee"; else ESCRIU="tee"; fi
echo "ORIGEN=$origen" | $ESCRIU "${desti}/backup_info" > /dev/null
{
echo "DATA=$(date +%Y-%m-%d_%H:%M:%S)"
echo "TIPUS=deepin_system_backup"
echo "USB=${USB_PATH}"
echo "PARTICIO=${ARREL:-/dev/sda5}"
} | $ESCRIU -a "${desti}/backup_info" > /dev/null
echo -e "${VERD}✅ Backup del sistema Deepin completat!${NC}"
echo "Metadades guardades a: ${desti}/backup_info"
echo ""
exit 0
;;
*)
read -p "Directori ORIGEN (ex: /home/Miquel/Pictures/Pict): " origen
;;
esac
# --- Selecció del DESTÍ (sempre a partir del llistat) ---
if [ "$NUM_DISCS" -eq 0 ]; then
echo -e "${VERMELL}Error: no hi ha cap unitat disponible on guardar el backup.${NC}"
echo "Connecta un USB o disc extern i torna-ho a provar."
exit 1
elif [ "$NUM_DISCS" -eq 1 ]; then
if munta_disc 1; then
desti_base="${DISC_MUNTATGE[1]}/backup_deepin"
echo -e "${VERD}✓ Destí seleccionat: $desti_base${NC}"
else
exit 1
fi
else
echo ""
read -p "Tria la unitat de DESTÍ del backup (mira el llistat de dalt): " opcio_desti
if [[ "$opcio_desti" =~ ^[0-9]+$ ]] && [ "$opcio_desti" -ge 1 ] && [ "$opcio_desti" -le "$NUM_DISCS" ]; then
if munta_disc "$opcio_desti"; then
desti_base="${DISC_MUNTATGE[$opcio_desti]}/backup_deepin"
echo -e "${VERD}✓ Destí seleccionat: $desti_base${NC}"
else
exit 1
fi
else
echo -e "${VERMELL}Opció no vàlida.${NC}"
exit 1
fi
fi
if [ ! -d "$origen" ]; then
echo -e "${VERMELL}Error: El directori origen '$origen' no existeix.${NC}"
exit 1
fi
nom_carpeta=$(basename "$origen")
if [[ "$origen" == /home/$USER* ]]; then
# Dades personals: una carpeta nova amb data a cada execució
desti="${desti_base}/${nom_carpeta}_$(date +%Y%m%d_%H%M)"
else
# Sistema (Roota, etc.): carpeta fixa actualitzada incrementalment
desti="${desti_base}/${nom_carpeta}"
fi
[[ "$origen" != */ ]] && origen="${origen}/"
rsync_desti="${desti}/"
# SEGURETAT: mai copiar "/" sense exclusions (usa l'opció S)
if [ "$origen" == "/" ]; then
echo -e "${VERMELL}Error: per copiar tot el sistema usa l'opció S.${NC}"
exit 1
fi
# SEGURETAT: el destí mai pot ser dins de l'origen (recursió infinita)
case "$desti" in
"$origen"*)
echo -e "${VERMELL}Error: el destí ('$desti') és dins de l'origen ('$origen').${NC}"
echo "Això provocaria una còpia infinita. Operació cancel·lada."
exit 1
;;
esac
echo ""
echo -e "${BLAU}📋 Resum del backup:${NC}"
echo -e " Origen: ${VERD}$origen${NC}"
echo -e " Destí: ${VERD}$rsync_desti${NC}"
echo ""
read -p "Vols continuar? (s/n): " confirma_backup
if [ "$confirma_backup" != "s" ] && [ "$confirma_backup" != "S" ]; then
echo -e "${GROC}⚠ Operació cancel·lada. No s'ha copiat res.${NC}"
exit 0
fi
mkdir -p "$desti"
echo ""
echo -e "${VERD}Iniciant còpia de seguretat...${NC}"
ajusta_rsync "$desti"
if [ "$EUID" -ne 0 ] && [[ "$origen" != /home/$USER* ]]; then
RSYNC_CMD="sudo rsync"
echo -e "${GROC}⚠ L'origen conté fitxers de sistema: cal contrasenya d'administrador.${NC}"
else
RSYNC_CMD="rsync"
fi
$RSYNC_CMD $RSYNC_OPTS "$origen" "$rsync_desti"
echo -e "${BLAU}Guardant informació del backup...${NC}"
if [ "$RSYNC_CMD" == "sudo rsync" ]; then ESCRIU="sudo tee"; else ESCRIU="tee"; fi
echo "ORIGEN=$origen" | $ESCRIU "${desti}/backup_info" > /dev/null
echo "DATA=$(date +%Y-%m-%d_%H:%M:%S)" | $ESCRIU -a "${desti}/backup_info" > /dev/null
echo -e "${VERD}✅ Metadades guardades a ${desti}/backup_info${NC}"
;;
2) # --- OPCIÓ 2: RESTAURAR BACKUP ---
echo ""
echo -e "${GROC}--- MODE RESTAURACIÓ ---${NC}"
detecta_discos
echo ""
echo -e "${BLAU}Unitats disponibles on cercar backups:${NC}"
mostra_discos
echo ""
if [ "$NUM_DISCS" -eq 0 ]; then
echo -e "${VERMELL}Error: no hi ha cap unitat on cercar backups.${NC}"
echo "Connecta un USB o disc extern i torna-ho a provar."
exit 1
elif [ "$NUM_DISCS" -eq 1 ]; then
if munta_disc 1; then
USB_PATH="${DISC_MUNTATGE[1]}/"
echo -e "${VERD}✓ Unitat seleccionada: ${USB_PATH}${NC}"
else
exit 1
fi
else
read -p "Tria la unitat on cercar el backup (mira el llistat de dalt): " opcio_usb
if [[ "$opcio_usb" =~ ^[0-9]+$ ]] && [ "$opcio_usb" -ge 1 ] && [ "$opcio_usb" -le "$NUM_DISCS" ]; then
if munta_disc "$opcio_usb"; then
USB_PATH="${DISC_MUNTATGE[$opcio_usb]}/"
echo -e "${VERD}✓ Unitat seleccionada: ${USB_PATH}${NC}"
else
exit 1
fi
else
echo -e "${VERMELL}Opció no vàlida.${NC}"
exit 1
fi
fi
# Cerca els backups de veritat: carpetes que contenen "backup_info"
echo -e "${BLAU}Cercant backups disponibles...${NC}"
mapfile -t backups < <(find "$USB_PATH" -maxdepth 4 -type f -name "backup_info" 2>/dev/null | sort -r)
if [ ${#backups[@]} -eq 0 ]; then
echo -e "${VERMELL}No s'han trobat backups a ${USB_PATH}.${NC}"
exit 1
fi
echo ""
echo "Backups trobats:"
for i in "${!backups[@]}"; do
info="${backups[$i]}"
carpeta=$(dirname "$info")
nom_backup=$(basename "$carpeta")
data_backup=$(grep "^DATA=" "$info" | cut -d'=' -f2-)
origen_b=$(grep "^ORIGEN=" "$info" | cut -d'=' -f2-)
echo -e " ${VERD}$((i+1))${NC}) $nom_backup"
echo -e " Data: $data_backup | Origen: $origen_b"
done
echo ""
if [ ${#backups[@]} -eq 1 ]; then
idx=0
echo -e "${VERD}✓ Backup trobat: $(basename "$(dirname "${backups[0]}")")${NC}"
else
read -p "Tria un backup per restaurar [1-${#backups[@]}]: " eleccio
if [[ "$eleccio" =~ ^[0-9]+$ ]] && [ "$eleccio" -ge 1 ] && [ "$eleccio" -le "${#backups[@]}" ]; then
idx=$((eleccio-1))
else
echo -e "${VERMELL}Opció no vàlida.${NC}"
exit 1
fi
fi
info="${backups[$idx]}"
backup_seleccionat=$(dirname "$info")
origen_original=$(grep "^ORIGEN=" "$info" | cut -d'=' -f2-)
data_backup=$(grep "^DATA=" "$info" | cut -d'=' -f2-)
echo ""
echo -e "${BLAU}Backup seleccionat: ${VERD}$backup_seleccionat${NC}"
echo ""
echo -e "${BLAU}📋 Informació del backup:${NC}"
echo -e " Origen original: ${VERD}$origen_original${NC}"
echo -e " Data del backup: ${VERD}$data_backup${NC}"
echo ""
echo -e "${BLAU}🔄 Restauració automàtica:${NC}"
echo -e " Des de: ${VERD}$backup_seleccionat${NC}"
echo -e " Cap a: ${VERD}$origen_original${NC}"
echo ""
read -p "Vols continuar? (s/n): " confirma
if [ "$confirma" != "s" ] && [ "$confirma" != "S" ]; then
echo "Operació cancel·lada."
exit 0
fi
echo ""
echo -e "${VERD}Iniciant restauració...${NC}"
if [ "$EUID" -ne 0 ] && [[ "$origen_original" != /home/$USER* ]]; then
RSYNC_CMD="sudo rsync"
echo -e "${GROC}⚠ La restauració toca fitxers de sistema: cal contrasenya d'administrador.${NC}"
else
RSYNC_CMD="rsync"
fi
$RSYNC_CMD $RSYNC_OPTS --exclude='backup_info' "$backup_seleccionat/" "$origen_original"
echo ""
echo -e "${VERD}✅ Restauració completada!${NC}"
;;
3) # --- OPCIÓ 3: SORTIR ---
echo "Adéu!"
exit 0
;;
*) # --- OPCIÓ NO VÀLIDA ---
echo -e "${VERMELL}Opció no vàlida.${NC}"
exit 1
;;
esac
echo ""
echo -e "${VERD}✅ Operació finalitzada!${NC}"
versió:17-8-2026
es salva amb Visual Code al escriptori -> backup_mut.txt abans de moure’l al seu lloc defintiu: /usr/local/bin/backup_mut
sudo cp /home/Miquel/Desktop/backup_mut.txt /usr/local/bin/backup_mut
i per pujar Grub del escriptori:
sudo cp /home/Miquel/Desktop/grub.txt /etc/default/grub
i per pujar grub.config
sudo cp /home/Miquel/Desktop/grub_config.txt /boot/grub/grub.cfg
I per esborrar directoris obsolets:
sudo rm -rf /media/Miquel/backup/backup_deepin



NOTA IMPORTANT
Per evitar interferencies amb l’arrancada es molt important eliminar el directory ROOT cuan es fa una restauració
GIMP 3.2.2 (PROGRAMA DE MANIPULACIÓ D’IMATGES GNU)
Per aconseguir una versió tan recent i de la nova branca 3.x (com la 3.2.2) a Deepin sense trencar les dependències del teu sistema, has de fer servir mètodes externs. Aquí tens les dues millors maneres de fer-ho:
Opció 1: Amb Flatpak (La més recomanada i neta)
Deepin s’integra molt bé amb Flatpak, i des del repositori de Flathub sempre tindràs l’última versió estable de GIMP 3.x disponible.
- Obre la Terminal a Deepin.
- Assegura’t de tenir Flatpak instal·lat i el repositori de Flathub afegit (copia i enganxa aquestes línies una per una, et demanarà la teva contrasenya a la primera)
sudo apt update sudo apt install flatpak flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
- :
sudo apt update sudo apt install flatpak flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo - Ara, instal·la l’última versió de GIMP disponible:
flatpak install flathub org.gimp.GIMP - Nota: Si un cop instal·lat no et surt a la teva llista d’aplicacions del menú de Deepin, tanca la sessió i torna a entrar (o reinicia l’ordinador) perquè el llançador d’aplicacions s’actualitzi i el reconegui.
💡 Consell extra per a Deepin:
De vegades, la Deepin Store (la botiga d’aplicacions visual) ja té integració amb Flatpak. Pots buscar «GIMP» directament allà, però fixa’t bé que a la informació del paquet digui que prové de «Flathub» o que és la versió 3.x. Si no ho indica, probablement estàs instal·lant la versió antiga del sistema.
Quin dels dos mètodes prefereixes provar? Si et trobes amb algun error concret a la terminal o la botiga es queda «pensant», digues-m’ho i ho solucionem al moment!
AppServ (de windows)
Amb molt de gust! 😊 Et deixo el text preparat perquè el puguis copiar i enganxar directament a una entrada de WordPress. He procurat que tingui un format de documentació, com una guia de consulta.
Instal·lació d’un entorn de desenvolupament LAMP a Deepin 25
Després d’instal·lar Apache, PHP, MariaDB i phpMyAdmin a Deepin 25, és útil saber on es troba cada component del sistema.
A diferència de Windows (AppServ, XAMPP, WAMP…), a Linux cada servei es guarda en el directori estàndard del sistema.
Equivalència amb AppServ
| Component | AppServ (Windows) | Deepin 25 |
|---|---|---|
| Servidor Web (Apache) | C:\AppServ\Apache24\ | /etc/apache2/ |
| Carpeta Web (www) | C:\AppServ\www\ | /var/www/html/ |
| PHP | C:\AppServ\php\ | /usr/bin/php + /etc/php/8.4/ |
| MariaDB | C:\AppServ\MySQL\ | /var/lib/mysql/ |
| phpMyAdmin | C:\AppServ\www\phpMyAdmin\ | /usr/share/phpmyadmin/ |
| Configuració phpMyAdmin | dins del programa | /etc/phpmyadmin/ |
ls -lh /etc/php/8.4/apache2/php*.ini
Miquel@Miquel-PC:~$ ls -lh /etc/php/8.4/apache2/php*.ini
-rw-r–r– 1 root root 68K de jul. 21 20:15 /etc/php/8.4/apache2/php.ini
-rw-r–r– 1 root root 68K de jul. 22 12:01 /etc/php/8.4/apache2/php_saved.ini
Miquel@Miquel-PC:~$
modificar php.ini amb Vs

1. Apache
Configuració
/etc/apache2/
Conté principalment:
apache2.conf ports.conf sites-available/ sites-enabled/ mods-available/ mods-enabled/ conf-available/ conf-enabled/
És el directori principal de configuració del servidor web.
Carpeta Web (DocumentRoot)
/var/www/html/
És l’equivalent al directori www d’AppServ.
Per exemple:
/var/www/html/index.php
es pot obrir des del navegador amb:
http://127.0.0.1/
o bé
http://localhost/
2. PHP
Executable:
/usr/bin/php
Per comprovar-ne la versió:
php -v
o bé
which php
Configuració
/etc/php/8.4/
Conté:
apache2/ cli/ mods-available/
Fitxers principals:
Servidor Apache
/etc/php/8.4/apache2/php.ini
Terminal (CLI)
/etc/php/8.4/cli/php.ini
3. MariaDB
Les bases de dades es guarden a:
/var/lib/mysql/
Allà hi trobarem una carpeta per cada base de dades.
Per exemple:
information_schema/ mysql/ performance_schema/ phpmyadmin/ sys/ polidic/
4. phpMyAdmin
ACCÉS-> http://127.0.0.1/phpmyadmin/

Amb Firexox hi ha alguna dificultat amb la funció Importar i es millor posar la bd al escriptori i usar:
mysql -u root -p beseit < ~/Desktop/beseit.sql
Programa:
/usr/share/phpmyadmin/
Configuració:
/etc/phpmyadmin/
5. Registres (Logs)
Els registres d’Apache es troben a:
/var/log/apache2/
Principalment:
access.log error.log
Quan alguna cosa no funciona, aquest és el primer lloc on mirar.
6. Estat dels serveis
Comprovar Apache
sudo systemctl status apache2
Comprovar MariaDB
sudo systemctl status mariadb
Reiniciar Apache
sudo systemctl restart apache2
Reiniciar MariaDB
sudo systemctl restart mariadb
7. Estructura recomanada dels projectes
Per defecte Apache utilitza:
/var/www/html/
Una bona organització consisteix a crear un directori per cada projecte:
/var/www/
html/
polidic/
wordpress/
proves/
api/
Exemple
/var/www/ ├── html/ │ index.php │ ├── polidic/ │ index.php │ css/ │ js/ │ includes/ │ BD_conexions/ │ 0imatges_polidic/ │ diccionaris_default/ │ ├── wordpress/ │ └── proves/
D’aquesta manera podem accedir als projectes mitjançant:
http://localhost/polidic/
http://localhost/wordpress/
8. Directoris més importants
| Directori | Funció |
|---|---|
/etc/apache2/ | Configuració d’Apache |
/var/www/html/ | Carpeta web principal |
/usr/bin/php | Executable PHP |
/etc/php/8.4/ | Configuració de PHP |
/var/lib/mysql/ | Bases de dades MariaDB |
/usr/share/phpmyadmin/ | Programa phpMyAdmin |
/etc/phpmyadmin/ | Configuració phpMyAdmin |
/var/log/apache2/ | Registres d’Apache |
Conclusions
Deepin (igual que Debian i Ubuntu) distribueix cada component del servidor en el seu directori corresponent. Això pot semblar menys intuïtiu que AppServ o XAMPP, però ofereix molts avantatges:
- configuració més clara i modular;
- actualitzacions independents de cada component;
- més estabilitat i seguretat;
- estructura estàndard compartida per la majoria de distribucions Linux.
Un cop coneguda aquesta organització, administrar un servidor LAMP resulta tan senzill com treballar amb AppServ a Windows, amb l’avantatge d’utilitzar l’estructura estàndard de Linux.
Espero que aquesta guia et sigui útil. Ha estat un plaer ajudar-te a deixar el teu Deepin preparat com a entorn de desenvolupament. Bon treball amb Polidic! 🚀
1. Apache
Configuració
/etc/apache2/
Conté:
apache2.conf ports.conf sites-available/ sites-enabled/ mods-available/ mods-enabled/ conf-available/ conf-enabled/
És probablement el directori que més tocaràs.
DocumentRoot (equivalent a www)
/var/www/html/
Aquí és on Apache serveix la web per defecte.
Per exemple:
/var/www/html/index.php
es veu a:
http://127.0.0.1/
2. PHP
Executable
/usr/bin/php
Comprovar:
which php
Configuració:
/etc/php/8.4/
Conté:
apache2/ cli/ mods-available/
El fitxer principal és:
/etc/php/8.4/apache2/php.ini
i pel terminal:
/etc/php/8.4/cli/php.ini
3. MariaDB
Les bases de dades estan a:
/var/lib/mysql/
Si hi entres veuràs alguna cosa semblant a:
information_schema/ mysql/ performance_schema/ sys/ nom_base_dades/
Cada base de dades és un directori.
4. phpMyAdmin
Programa
/usr/share/phpmyadmin/
Configuració
/etc/phpmyadmin/
5. Logs
Apache
/var/log/apache2/
Conté
access.log error.log
Són molt útils quan alguna cosa falla.
6. Serveis
Comprovar Apache
sudo systemctl status apache2
MariaDB
sudo systemctl status mariadb
7. Els teus projectes
Ara mateix Apache utilitza
/var/www/html/
Però pots crear-ne tants com vulguis.
Per exemple:
/var/www/
html/
polidic/
proves/
api/
wordpress/
i configurar un VirtualHost per a cadascun.
8. Si vols treballar com AppServ
Com que estàs acostumat a Windows, jo faria una estructura molt semblant:
/var/www/
html/
index.php
polidic/
index.php
css/
js/
imatges/
includes/
wordpress/
proves/
Això et resultarà molt familiar.
El meu suggeriment per al teu cas
Coneixent el projecte Polidic, jo el deixaria així:
/var/www/ │ ├── html/ │ ├── polidic/ │ ├── index.php │ ├── css/ │ ├── js/ │ ├── BD_conexions/ │ ├── includes/ │ ├── 0imatges_polidic/ │ ├── diccionaris_default/ │ └── ... │ └── wordpress/
D’aquesta manera podràs accedir-hi amb una URL com http://localhost/polidic/, molt semblant al que feies amb AppServ.
Quan vulguis, també et puc ajudar a configurar VirtualHosts perquè puguis obrir els teus projectes amb adreces encara més còmodes, per exemple:
http://polidic.localhttp://wordpress.local
És una configuració molt pràctica per treballar en desenvolupament i és la que acostumen a fer servir molts desenvolupadors Linux.
Directament, no es pot instal·lar AppServ de manera nativa a Deepin (ni a cap altra distribució Linux moderna). Tot i que algunes fonts antigues esmenten un suport teòric per a Linux, els instal·ladors actuals d’AppServ són fitxers .exe dissenyats exclusivament per a l’entorn Windows [[44]].
No et preocupis, però: com que Deepin està basat en Debian, tens alternatives molt millors, més segures i totalment integrades per aconseguir exactament el mateix resultat (un servidor web amb Apache, PHP, base de dades i phpMyAdmin).
Aquí tens les millors opcions per al teu sistema:
1. Entorn LAMP natiu (Opció més recomanada)
És l’estàndard de la indústria en entorns Linux. En lloc d’un instal·lador de tercers, utilitzes els paquets oficials de Deepin, la qual cosa garanteix major estabilitat i actualitzacions de seguretat automàtiques. Obre la terminal i executa:
- Actualitza la llista de paquets:
sudo apt update
- Instal·la el servidor web Apache:
sudo apt install apache2

Per comprovar si Apache està instal·lat a Deepin i on es troba, executa aquestes comandes a la terminal:
1. Comprovar si Apache està instal·lat
apache2 -v
o
dpkg -l | grep apache2
Si està instal·lat, veuràs la versió. Si no, dirà que no es troba la ordre.
2. Comprovar si està en execució
sudo systemctl status apache2
Si està actiu, veuràs active (running) en verd.
3. On està instal·lat
Els fitxers principals es troben a:
- Executable:
/usr/sbin/apache2 - Fitxers de configuració:
/etc/apache2/ - Carpeta web (document root):
/var/www/html/ - Logs:
/var/log/apache2/
4. Veure la configuració del document root
grep -i "documentroot" /etc/apache2/sites-available/000-default.conf
Això et dirà on estan els fitxers web (normalment /var/www/html).
5. Comprovar si el port 80 està escoltant
sudo netstat -tlnp | grep :80
o
sudo ss -tlnp | grep :80
Resum ràpid: Executa apache2 -v per saber si està instal·lat i sudo systemctl status apache2 per saber si està funcionant. Si vols veure la pàgina per defecte, ves a http://localhost al navegador.
- Instal·la el servidor de base de dades (MariaDB, el substitut directe i compatible de MySQL a Debian/Deepin):
sudo apt install mariadb-server
- Instal·la PHP i els mòduls necessaris per connectar amb la base de dades:
sudo apt install php libapache2-mod-php php-mysql
- (Opcional) Instal·la phpMyAdmin per gestionar les bases de dades des del navegador:
sudo apt install phpmyadmin
Nota: Durant la instal·lació, quan et pregunti, prem la barra espaiadora per seleccionar apache2 i després Enter. També et demanarà configurar una contrasenya per a l’administrador de la base de dades.
Un cop finalitzat, pots comprovar que tot funciona obrint el navegador i visitant http://localhost. Els teus fitxers web aniran a la carpeta /var/www/html/.
2. XAMPP per a Linux (Alternativa «tot en un»)
Si prefereixes una experiència més semblant a la d’AppServ (un sol paquet que instal·la tot de cop), XAMPP ofereix una versió oficial per a Linux. El pots descarregar des del lloc web d’Apache Friends i executar l’instal·lador .run des de la terminal. Tot i això, la comunitat de desenvolupament sol recomanar l’opció LAMP nativa, ja que XAMPP a vegades pot donar problemes de permisos o no rebre actualitzacions tan àgils com el gestor de paquets apt.
3. Docker (Per a entorns aïllats)
Com a estudiant de ciències de la computació, és molt probable que en el futur valoris tenir entorns aïllats. Pots fer servir Docker per desplegar un contenidor LAMP amb una sola ordre, sense instal·lar res directament al teu sistema operatiu Deepin, mantenint-lo net i sense conflictes entre projectes.
Resum: Descarta AppServ per a Linux. La instal·lació nativa de LAMP mitjançant la terminal de Deepin és el camí més ràpid, professional i lliure de problemes de permisos a llarg termini. Si necessites ajuda per configurar qualsevol d’aquests passos, no dubtis a dir-m’ho!