Files
@ 42155469350e
Branch filter:
Location: majic-scripts/backup/bakit.sh
42155469350e
3.3 KiB
text/x-sh
Noticket: Added a small script for creating quick backups of files before making changes to them.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 | #!/bin/bash
#
# bakit.sh
#
# Copyright (C) 2010, Branko Majic <branko@majic.rs>
#
# 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. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
program="bakit.sh"
version="0.1"
function usage() {
cat <<EOF
$program $version, a non-interactive utility for creating local on-system
backups of files.
Usage: $program [OPTIONS] file
$program is a non-interactive utility for creating local on-system backups of
files. Its primary use is for the various configuration files found on most of
the systems. It allows you to easily create a timestamped backup of files
specified as input arguments.
$program accepts the following options:
-v show script version and licensing information
-h show usage help
Please report bugs and send feature requests to <branko@majic.rs>.
EOF
}
function version() {
cat <<EOF
$program, version $version
+-----------------------------------------------------------------------+
| Copyright (C) 2010, Branko Majic <branko@majic.rs> |
| |
| 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. See the |
| GNU General Public License for more details. |
| |
| You should have received a copy of the GNU General Public License |
| along with this program. If not, see <http://www.gnu.org/licenses/>. |
+-----------------------------------------------------------------------+
EOF
}
# If no arguments were given, just show usage help.
if [[ -z $1 ]]; then
usage
exit 0
fi
# Parse the arguments
while getopts "vh" opt; do
case "$opt" in
v) version
exit 0;;
h) usage
exit 0;;
*) usage
exit 1;;
esac
done
i=$OPTIND
shift $(($i-1))
# Create a backup of each provided file
while [[ -n $1 ]]; do
source="$(echo "$1" | sed -e 's#/\+$##' )"
bakFile="${source}.bak.$(date +%Y%m%d)"
# Generate a new name for the backup, making sure the old ones do not get
# overwritten
let i=1
while [[ -e "$bakFile" ]]; do
bakFile="${source}.bak.$(date +%Y%m%d).$i"
let i=i+1
done
cp -pr "$source" "$bakFile"
shift
done
|