forked from NamNT2002/linux_shell
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbackup_file_md5checksum.sh
More file actions
105 lines (102 loc) · 2.54 KB
/
backup_file_md5checksum.sh
File metadata and controls
105 lines (102 loc) · 2.54 KB
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
#!/bin/bash
#Backup file or folder
clear
#create folder log
if [ -d /var/log/logbackup ]
then
echo
else
mkdir -p /var/log/logbackup
fi
#check source backup
while true
do
read -p "Source Folder Or File: " fdbk
echo ""
#check input file available is file or folder
ab=$(find $fdbk 2>/dev/null)
if [ $? -eq 1 ]
then
echo "File or folder: $fdbk is not available"
while true; do
echo "Do you want to continue"
echo "If you input y, Y, YES to continue and n, N or NO to exit."
read -p "Please talk to me ...: " INPUT_STRING
case $INPUT_STRING in
c|C|y|Y|yes|YES|"")
break
;;
n|N|no|NO)
echo "Thanks You. You chose Exit"
exit 1
;;
esac
done
else
break
fi
done
#check source backup
read -p "You want backup to folder: " fddes
echo ""
mkdir -p $fddes
namelog="log_backup_"$(date +%m%d%Y)
tbk=$(date +%H)":"$(date +%M)" "$(date +%m)"-"$(date +%d)"-"$(date +%Y)
desf=$(echo $fdbk | tr '/' ' ' | awk '{print $NF}')
ab=$(find $fdbk | wc -l)
if [ $ab -eq 1 ]
then
if [ -f $fddes/$desf ]
then
md5s=$(md5sum $fdbk | awk '{print $1}')
md5d=$(md5sum $fddes/$desf | awk '{print $1}')
if [ "$md5s" != "$md5d" ]
then
yes | cp -f $fdbk $fddes/$desf 2>/dev/null
echo "$tbk: Backup $fdbk to $fddes/$desf"
echo "$tbk: Backup $fdbk to $fddes/$desf" >> /var/log/logbackup/$namelog
#if you want remove file old then uncomment under two line
#else
#rm -rf $fdbk
fi
else
cp -f $fdbk $fddes/$desf
echo "$tbk: Backup $fdbk to $fddes/$desf"
echo "$tbk: Backup $fdbk to $fddes/$desf" >> /var/log/logbackup/$namelog
fi
else
getfd=$(pwd)
cd $fdbk
for i in $(find * -type d)
do
mkdir -p /$fddes/$desf/$i
done
for j in $(find * -type f)
do
if [ -f $fddes/$desf/$j ]
then
md5s=$(md5sum $j | awk '{print $1}')
md5d=$(md5sum $fddes/$desf/$j | awk '{print $1}')
if [ "$md5s" != "$md5d" ]
then
yes | cp -f $j $fddes/$desf/$j 2>/dev/null
echo "$tbk: Backup $j to $fddes/$desf/$j"
echo "$tbk: Backup $j to $fddes/$desf/$j" >> /var/log/logbackup/$namelog
#if you want remove file old then uncomment under two line
#else
#rm -rf $j
fi
else
yes | cp -f $j $fddes/$desf/$j 2>/dev/null
echo "$tbk: Backup $j to $fddes/$desf/$j"
echo "$tbk: Backup $j to $fddes/$desf/$j" >> /var/log/logbackup/$namelog
fi
done
fi
cd $getfd
#if you want remove Source file backup
#You can uncomment under line
# rm -rf $fdbk
ln -sf /var/log/logbackup/$namelog /var/log/logbackup/log_backup
echo "View Log Backup is file: /var/log/logbackup/log_backup"
exit 1