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
PATHlub 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:
#!/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