Skip to content

bak

Wdrożenie skryptu bak

Skrypt bak służy do szybkiego tworzenia kopii zapasowej pojedynczych plików konfiguracyjnych (np. przed edycją plików w /etc). Kopie są tworzone obok oryginału z dopisanym znacznikiem czasu.

Zalecenie: skrypt trzymamy w repozytorium konfiguracji i uruchamiamy go z PATH lub przez link w /usr/local/bin. Nie wkładamy logiki skryptu do ~/.bashrc.


Utworzenie pliku skryptu

Tworzymy plik skryptu w lokalizacji /srv/config/scripts/:

micro /srv/config/scripts/bak

Wklejamy treść skryptu:

bak
#!/usr/bin/env bash
set -euo pipefail

# Backup files in-place with a timestamp suffix.
# Usage: bak <file> [file2 ...]

if [ "$#" -lt 1 ]; then
  echo "Usage: bak <file> [file2 ...]" >&2
  exit 2
fi

ts="$(date +%Y%m%d-%H%M%S)"  # 20251125-091143

for f in "$@"; do
  if [ ! -e "$f" ]; then
    echo "bak: file not found: $f" >&2
    continue
  fi

  cp -a -- "$f" "$f.bak.$ts"
  echo "bak: $f -> $f.bak.$ts"
done

Nadanie uprawnień

Nadajemy prawa do uruchamiania:

chmod +x /srv/config/scripts/bak

Dodanie do PATH

Tworzymy link w /usr/local/bin, aby skrypt był dostępny dla wszystkich użytkowników:

sudo ln -sf /srv/config/scripts/bak /usr/local/bin/bak

Sprawdzamy, czy polecenie jest widoczne:

command -v bak
bak --help || true

Użycie skryptu

Backup pliku w bieżącym katalogu

bak nazwapliku.conf

Backup pliku z /etc

Jeśli plik wymaga uprawnień roota, uruchamiamy skrypt z sudo (zamiast używać sudo w środku skryptu):

sudo bak /etc/nginx/nginx.conf

Weryfikacja

Po wykonaniu backupu obok oryginału pojawi się plik w formacie:

<plik>.bak.<YYYYMMDDHH-MMSS>

Przykład:

docker.conf.bak.20251125-091143