FBAK - Erstellt Sicherungskopie von Datei

Aus Laub-Home Wiki

Dieses kleine Skript namens fbak erstellt eine Sicherungskopie inkl. Timestamp und Kürzel. Dies ist hilfreich wenn man vor dem Editieren einer Konfigurationsdatei oder eines Skriptes eine Sicherungskopie der original Datei anlegen möchte. Das Kürzel sorgt auf Rechnern, auf denen mehr als ein User tätig ist, für eine gute Nachverfolgung, wer als letztes an der Datei Änderungen vorgenommen hat. Also am besten das Skript nehmen und nach /usr/local/sbin/fbak legen und immer brav vor dem editieren einer Datei, ein Kopie ziehen. Mit dem diff Befehl kann man so sehr schön sehen, wann was geändert wurde.

Script

fbak

#!/usr/bin/env bash
#########################################################################
#Name: fbak
#Subscription:
#Die folgende Funktion erstellt eine Kopie einer Datei mit aktuellem
#Zeitstempel und dem Kuerzel des jeweiligen Mitarbeiters. Genutzt
#werden kann die Funktion wie ein normales Bash-Skript.
#Usage: fbak <dateiname> <kuerzel>
#by A. Laub
#andreas[-at-]laub-home.de
#
#License:
#This program is free software: you can redistribute it and/or modify it
#under the terms of the GNU General Public License as published by the
#Free Software Foundation, either version 3 of the License, or (at your option)
#any later version.
#This program is distributed in the hope that it will be useful,
#but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
#or FITNESS FOR A PARTICULAR PURPOSE.
#########################################################################
#Set the language
export LANG="en_US.UTF-8"
#Load the Pathes
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

#do the stuff
if [ "$2" = "" ]; then
        echo 'Bitte gib ein Kuerzel an!'
        echo 'Usage: fbak <datei> <Kuerzel>'
else
        if [ -f $1.$(date +%Y-%m-%d.$2) ]; then
                COUNTER=1
                while [ -f $1.$(date +%Y-%m-%d.$2.$COUNTER) ]; do
                        COUNTER=$[$COUNTER+1]
                done
                cp -p $1 $1.$(date +%Y-%m-%d.$2.$COUNTER)
        else
                cp -p $1 $1.$(date +%Y-%m-%d.$2)
        fi
fi

Usage

Benutzt wird das Tool ganz einfach:

fbak FILENAME KÜRZEL

zum Beispiel:

fbak /etc/bash.bashrc ALA
# oder
cd /etc
fbak bash.bashrc ALA

sieht beides wie folgt aus:

-rw-r--r-- 1 root root 1994 Apr 18  2019 /etc/bash.bashrc
-rw-r--r-- 1 root root 1994 Apr 18  2019 /etc/bash.bashrc.2020-03-01.ALA

Sollte man an einem Tag mehrmals eine Kopie ziehen wird einfach eine Zahl angehängt:

-rw-r--r-- 1 root root 1994 Apr 18 2019 /etc/bash.bashrc.2020-03-01.ALA -rw-r--r-- 1 root root 1994 Apr 18 2019 /etc/bash.bashrc.2020-03-01.ALA.1 -rw-r--r-- 1 root root 1994 Apr 18 2019 /etc/bash.bashrc.2020-03-01.ALA.2 -rw-r--r-- 1 root root 1994 Apr 18 2019 /etc/bash.bashrc.2020-03-01.ALA.3

Unterschied feststellen

mit diff kann man nun schauen, was geändert wurde:

diff -u ORGINALDATEI BACKUPDATEI

# Beispiel
diff -u /etc/bash.bashrc /etc/bash.bashrc.2020-03-01.ALA