/[dtapublic]/projs/trunk/projs/20161029_server_scripts_automaint_cron/backup_ashley_david_pers_incr_48hour
ViewVC logotype

Diff of /projs/trunk/projs/20161029_server_scripts_automaint_cron/backup_ashley_david_pers_incr_48hour

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 59 by dashley, Sat Oct 29 20:47:33 2016 UTC revision 60 by dashley, Sat Oct 29 21:06:08 2016 UTC
# Line 1  Line 1 
1  #!/bin/bash  #!/bin/bash
2  #-------------------------------------------------------------------------------------------------  #-------------------------------------------------------------------------------------------------
3  #$Header$  #$Header$
4  #-------------------------------------------------------------------------------------------------  #-------------------------------------------------------------------------------------------------
5  #This file is part of "Server Scripts, Automatic Maintenance, Cron", a set of scripts for  #This file is part of "Server Scripts, Automatic Maintenance, Cron", a set of scripts for
6  #performing automatic periodic maintenance on a Linux server.  #performing automatic periodic maintenance on a Linux server.
7  #-------------------------------------------------------------------------------------------------  #-------------------------------------------------------------------------------------------------
8  #This source code and any program in which it is compiled/used is provided under the MIT License,  #This source code and any program in which it is compiled/used is provided under the MIT License,
9  #reproduced below.  #reproduced below.
10  #-------------------------------------------------------------------------------------------------  #-------------------------------------------------------------------------------------------------
11  #Permission is hereby granted, free of charge, to any person obtaining a copy of  #Permission is hereby granted, free of charge, to any person obtaining a copy of
12  #this software and associated documentation files(the "Software"), to deal in the  #this software and associated documentation files(the "Software"), to deal in the
13  #Software without restriction, including without limitation the rights to use,  #Software without restriction, including without limitation the rights to use,
14  #copy, modify, merge, publish, distribute, sublicense, and / or sell copies of the  #copy, modify, merge, publish, distribute, sublicense, and / or sell copies of the
15  #Software, and to permit persons to whom the Software is furnished to do so,  #Software, and to permit persons to whom the Software is furnished to do so,
16  #subject to the following conditions :  #subject to the following conditions :
17  #  #
18  #The above copyright notice and this permission notice shall be included in all  #The above copyright notice and this permission notice shall be included in all
19  #copies or substantial portions of the Software.  #copies or substantial portions of the Software.
20  #  #
21  #THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR  #THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22  #IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,  #IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23  #FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE  #FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
24  #AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER  #AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25  #LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,  #LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
26  #OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE  #OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
27  #SOFTWARE.  #SOFTWARE.
28  #-------------------------------------------------------------------------------------------------  #-------------------------------------------------------------------------------------------------
29  #Incremental daily backup of Dave Ashley's server content.  The backup goes back 48 hours or changed files.  #Incremental daily backup of Dave Ashley's server content.  The backup goes back 48 hours or changed files.
30  #  #
31  echo "Performing incremental daily backup of Dave Ashley's server content.  List of directories"  echo "Performing incremental daily backup of Dave Ashley's server content.  List of directories"
32  echo "and files backed up appears below."  echo "and files backed up appears below."
33  #  #
34  #Change to a safe working directory in case something goes wrong,  #Change to a safe working directory in case something goes wrong,
35  #especially a failed cd followed by a mass delete.  #especially a failed cd followed by a mass delete.
36  cd /root/cronjob_sandbox  cd /root/cronjob_sandbox
37  #  #
38  #Make the necessary directory.  #Make the necessary directory.
39  mkdir /hl/baks/ashley_david_personal_01/incr_daily/${1}${5}${6}_${10}${13}${14}  mkdir /hl/baks/ashley_david_personal_01/incr_daily/${1}${5}${6}_${10}${13}${14}
40  #  #
41  #Tar up the content.  We use the "full_monthly" family of symlinks as well for the incrementals.  #Tar up the content.  We use the "full_monthly" family of symlinks as well for the incrementals.
42  tar -c -N "2 days ago" -v -z -h -f /hl/baks/ashley_david_personal_01/incr_daily/${1}${5}${6}_${10}${13}${14}/${1}${5}${6}_${10}${13}${14}.tar.gz /hb/ashley_david_personal_01/full_monthly &>/hl/baks/ashley_david_personal_01/incr_daily/${1}${5}${6}_${10}${13}${14}/${1}${5}${6}_${10}${13}${14}.full.log.txt  tar -c -N "2 days ago" -v -z -h -f /hl/baks/ashley_david_personal_01/incr_daily/${1}${5}${6}_${10}${13}${14}/${1}${5}${6}_${10}${13}${14}.tar.gz /hb/ashley_david_personal_01/full_monthly &>/hl/baks/ashley_david_personal_01/incr_daily/${1}${5}${6}_${10}${13}${14}/${1}${5}${6}_${10}${13}${14}.full.log.txt
43  #  #
44  #Filter the content to give only the filenames.  #Filter the content to give only the filenames.
45  cat /hl/baks/ashley_david_personal_01/incr_daily/${1}${5}${6}_${10}${13}${14}/${1}${5}${6}_${10}${13}${14}.full.log.txt | grep -v ": file is unchanged; not dumped" | grep -v "tar: Option --after-date: Treating date" | grep -v "tar: Removing leading" | sed -e '/\/$/d' >/hl/baks/ashley_david_personal_01/incr_daily/${1}${5}${6}_${10}${13}${14}/${1}${5}${6}_${10}${13}${14}.filenamesonly.log.txt  cat /hl/baks/ashley_david_personal_01/incr_daily/${1}${5}${6}_${10}${13}${14}/${1}${5}${6}_${10}${13}${14}.full.log.txt | grep -v ": file is unchanged; not dumped" | grep -v "tar: Option --after-date: Treating date" | grep -v "tar: Removing leading" | sed -e '/\/$/d' >/hl/baks/ashley_david_personal_01/incr_daily/${1}${5}${6}_${10}${13}${14}/${1}${5}${6}_${10}${13}${14}.filenamesonly.log.txt
46  #  #
47  #Announce what has been done.  #Announce what has been done.
48  echo "===== FILENAMES ONLY ====="  echo "===== FILENAMES ONLY ====="
49  cat /hl/baks/ashley_david_personal_01/incr_daily/${1}${5}${6}_${10}${13}${14}/${1}${5}${6}_${10}${13}${14}.filenamesonly.log.txt  cat /hl/baks/ashley_david_personal_01/incr_daily/${1}${5}${6}_${10}${13}${14}/${1}${5}${6}_${10}${13}${14}.filenamesonly.log.txt
50  echo "===== ALL MESSAGES FROM TAR ====="  echo "===== ALL MESSAGES FROM TAR ====="
51  cat /hl/baks/ashley_david_personal_01/incr_daily/${1}${5}${6}_${10}${13}${14}/${1}${5}${6}_${10}${13}${14}.full.log.txt  cat /hl/baks/ashley_david_personal_01/incr_daily/${1}${5}${6}_${10}${13}${14}/${1}${5}${6}_${10}${13}${14}.full.log.txt
52  #  #
53  #Change to a safe working directory in case something goes wrong,  #Change to a safe working directory in case something goes wrong,
54  #especially a failed cd followed by a mass delete.  #especially a failed cd followed by a mass delete.
55  cd /root/cronjob_sandbox  cd /root/cronjob_sandbox
56  #  #
57  #We want to be really careful with this next section because of  #We want to be really careful with this next section because of
58  #the recursive rm.  Want to be sure the directory exists.  #the recursive rm.  Want to be sure the directory exists.
59  if [ -d /hl/baks/ashley_david_personal_01/incr_daily/${1}${5}${6}_${10}${13}${14} ] ; then  if [ -d /hl/baks/ashley_david_personal_01/incr_daily/${1}${5}${6}_${10}${13}${14} ] ; then
60     cd /hl/baks/ashley_david_personal_01/incr_daily/${1}${5}${6}_${10}${13}${14}     cd /hl/baks/ashley_david_personal_01/incr_daily/${1}${5}${6}_${10}${13}${14}
61     split -b 1000m ${1}${5}${6}_${10}${13}${14}.tar.gz     split -b 1000m ${1}${5}${6}_${10}${13}${14}.tar.gz
62     XFILES=`ls -1 x*`     XFILES=`ls -1 x*`
63     for curfile in $XFILES     for curfile in $XFILES
64     do     do
65        mv ${curfile} ${curfile}.bin        mv ${curfile} ${curfile}.bin
66     done     done
67     md5sum  ${1}${5}${6}_${10}${13}${14}.* x* >md5sums.txt     md5sum  ${1}${5}${6}_${10}${13}${14}.* x* >md5sums.txt
68     sha512sum ${1}${5}${6}_${10}${13}${14}.* x* >sha512sums.txt     sha512sum ${1}${5}${6}_${10}${13}${14}.* x* >sha512sums.txt
69     rm ${1}${5}${6}_${10}${13}${14}.tar.gz     rm ${1}${5}${6}_${10}${13}${14}.tar.gz
70     #     #
71     #Emit the backup file MD5s to stdout so they go in the larger log.     #Emit the backup file MD5s to stdout so they go in the larger log.
72     echo "===== BACKUP FILE MD5 MESSAGE DIGESTS ====="     echo "===== BACKUP FILE MD5 MESSAGE DIGESTS ====="
73     cat md5sums.txt     cat md5sums.txt
74     #     #
75     #Emit the backup file SHA512s to stdout so they go in the larger log.     #Emit the backup file SHA512s to stdout so they go in the larger log.
76     echo "===== BACKUP FILE SHA512 MESSAGE DIGESTS ====="     echo "===== BACKUP FILE SHA512 MESSAGE DIGESTS ====="
77     cat sha512sums.txt     cat sha512sums.txt
78     #     #
79     #Trim down to 60 days of incremental backups.     #Trim down to 60 days of incremental backups.
80     cd ..     cd ..
81     rm -fR `ls -1t | sed -e '61,$!d'`     rm -fR `ls -1t | sed -e '61,$!d'`
82  fi  fi
83  #  #
84  #Change to a safe working directory in case something goes wrong,  #Change to a safe working directory in case something goes wrong,
85  #especially a failed cd followed by a mass delete.  #especially a failed cd followed by a mass delete.
86  cd /root/cronjob_sandbox  cd /root/cronjob_sandbox
87  #  #
88  #End of script.  #End of script.

Legend:
Removed from v.59  
changed lines
  Added in v.60

dashley@gmail.com
ViewVC Help
Powered by ViewVC 1.1.25