forked from LondheShubham153/Shell-Scripting-For-DevOps
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path19_backup.sh
More file actions
36 lines (29 loc) · 998 Bytes
/
19_backup.sh
File metadata and controls
36 lines (29 loc) · 998 Bytes
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
#!/bin/bash
# Capstone: backup practice-scripts with tar + gzip, timestamped.
# Combines: set -e, variables, $(date), functions, if checks, conditionals.
set -e
SOURCE_DIR="$(cd "$(dirname "$0")" && pwd)"
BACKUP_DIR="${BACKUP_DIR:-$HOME/shell-backups}"
TIMESTAMP=$(date +%Y-%m-%d_%H-%M-%S)
ARCHIVE="$BACKUP_DIR/practice-scripts_${TIMESTAMP}.tar.gz"
prepare_backup_dir() {
if [[ ! -d $BACKUP_DIR ]]; then
mkdir -p "$BACKUP_DIR"
echo "Backup folder bana diya: $BACKUP_DIR"
fi
}
take_backup() {
tar -czf "$ARCHIVE" -C "$(dirname "$SOURCE_DIR")" "$(basename "$SOURCE_DIR")"
echo "Backup ban gaya: $ARCHIVE"
echo "Size: $(du -h "$ARCHIVE" | awk '{print $1}')"
}
cleanup_old_backups() {
# rakho sirf last 7 backups, baaki delete
cd "$BACKUP_DIR"
ls -1t practice-scripts_*.tar.gz 2>/dev/null | tail -n +8 | xargs -r rm -f
}
prepare_backup_dir
take_backup
cleanup_old_backups
echo "Done. Saare backups:"
ls -lh "$BACKUP_DIR"/practice-scripts_*.tar.gz