#!/usr/bin/env bash # ZION TERMINAL - Backup e restauracao das configuracoes # Cyberdeck criado por Pablo Murad em 2026 export LC_ALL=C . /opt/zion-terminal/bin/zion-lib.sh 2>/dev/null DEST=/opt/zion-terminal/backups uso() { cat < "$tmp/pacotes.txt" 2>/dev/null local arq="$DEST/zion-backup-$ts.tar.gz" if tar czf "$arq" --ignore-failed-read -C / "${inc[@]}" -C "$tmp" pacotes.txt 2>/dev/null; then chmod 600 "$arq" printf '%b Backup criado:%b %s (%s)\n' "$ZOK" "$ZR" "$arq" "$(du -h "$arq" | cut -f1)" else printf '%b Falha ao criar backup.%b\n' "$ZCRIT" "$ZR"; rm -f "$arq"; rm -rf "$tmp"; return 1 fi rm -rf "$tmp" } case "${1:-}" in ""|--com-chaves) criar "${1:-}" ;; --restaurar) arq="${2:-}"; [ -r "$arq" ] || { echo "Arquivo invalido: $arq"; exit 1; } read -r -p "Restaurar $arq sobre o sistema atual? [s/N]: " r; [ "$r" = s ] || exit 0 sudo tar xzf "$arq" -C / && echo "Restaurado. Revise e reinicie sessao se necessario." ;; --para) peer="${2:-}"; [ -z "$peer" ] && { echo "Informe o peer."; exit 1; } ultimo=$(sudo ls -t "$DEST"/zion-backup-*.tar.gz 2>/dev/null | head -1) [ -z "$ultimo" ] && { echo "Nenhum backup ainda. Rode 'zion backup' antes."; exit 1; } echo "Enviando $ultimo -> $peer:~/"; rsync -av --progress "$ultimo" "$peer:~/" ;; --help|-h) uso ;; *) uso; exit 2 ;; esac