Allegato "script-backup-dar.txt"
Scarica 1 #/bin/sh
2
3 #########################
4 # SCRIPT BACKUP CON DAR #
5 #########################
6
7 # Questo script vi permette di creare dei backup
8 # personalizzati utilizzando il comando dar, più
9 # versatile rispetto a tar per quanto riguarda il
10 # backup su disco invece che su nastro.
11 # Lo script è creato in maniera non-interattiva, per
12 # permetterne l'integrazione con cron.
13 #
14 # Lo script crea, nella cartella in cui si effettua il
15 # backup, varie sottocartelle, ognuna contenente un backup,
16 # sia esso differenziale o completo. Questo perchè ogni backup
17 # può essere formato da diversi files, e questo ne aumenta
18 # l'organizzazione, anche se ci fermiano ad un livello per non
19 # complicare troppo le cose.
20
21 ### CONFIGURAZIONE ###
22
23 # Cartella di cui effettuare il backup
24 HOME_DIR=/home/daniele/daBackuppare
25
26 # Percorso in cui andremo ad effettuare il backup
27 BACKUP_DIR=/media/disco_backup/cartella_backup
28
29 # Nome base del file di backup
30 BACKUP_NAME=dar_backup
31
32 # Dimensione massima di uno slice
33 BACKUP_SLICE_SIZE=600M
34
35 # Suffisso per il backup completo
36 BACKUP_COMPLETE_SUF="_comp"
37
38 # Suffisso per il backup differenziale
39 BACKUP_DIFFERENTIAL_SUF="_diff"
40
41 # Numero di backup (totale+differenziali), prima della
42 # creazione del successivo backup completo
43 BACKUP_INTERVAL=3
44
45 # Testare il backup
46 BACKUP_TEST="yes"
47
48 # Lista di path da escludere dal backup
49 EXCLUDED_PATH[0]=Temp
50 EXCLUDED_PATH[1]=Compilare
51 EXCLUDED_PATH[2]=Download
52
53 # Conservare i percorsi delle directory escluse dal backup
54 # L'array precedente specifica che non deve essere effettuato
55 # il backup dei file contenuti in queste directory, ma a volte
56 # è utile conservare la gerarchia, per evitare di doverle rifare
57 # a mano
58 INCLUDE_EXCLUDED_PATH="no"
59
60 # Lista dei pattern di file da escludere
61 EXCLUDED_FILE_PATTERN[0]="*.tmp"
62 EXLUDED_FILE_PATTERN[1]="~*"
63
64 # Utilizzare la compressione durante il backup
65 USE_COMPRESSION="yes"
66
67 # Tipo di compressione: scegliere fra gzip oppure bzip2
68 COMPRESSION_TYPE="bzip2"
69
70 # Livello di compressione: 0-9
71 COMPRESSION_LEVEL=6
72
73 # Dimensione minima di un file per dover essere compresso
74 COMPRESSION_MINIMUM_FILE_SIZE=512
75
76 # Modalità verbose
77 VERBOSE="yes"
78
79 # Pattern dei files da non comprimere
80 NOT_COMPRESSED_FILES[0]="*.mp3"
81 NOT_COMPRESSED_FILES[1]="*.jpg"
82 NOT_COMPRESSED_FILES[2]="*.zip"
83 NOT_COMPRESSED_FILES[3]="*.rar"
84 NOT_COMPRESSED_FILES[4]="*.png"
85 NOT_COMPRESSED_FILES[5]="*.gz"
86 NOT_COMPRESSED_FILES[6]="*.gzip"
87
88
89 ### ESECUZIONE DELLO SCRIPT ###
90
91 # Analizziamo il contenuto della cartella di backup, per
92 # contare il numero di backup differenziali, se ce ne sono,
93 # e decidere se creare un backup completo o differenziale.
94
95 # Contiamo il numero di directory di backup
96 NUM_DIR=`ls -F ${BACKUP_DIR} | grep -c ${BACKUP_NAME}.*./`
97
98 # Calcoliamo il modulo fra il numero di directory di backup
99 # e quelle necessarie al prossimo backup completo
100 let "MOD=$NUM_DIR % BACKUP_INTERVAL"
101
102 # Se questo valore è pari a 0, o non esiste il backup
103 # oppure abbiamo raggiunto il limite dei backup differenziali
104 # per cui dobbiamo creare un backup completo
105 # altrimenti creiamo il suffisso del backup differenziale
106 # con il numero associato
107
108 if [[ $MOD = "0" ]]
109 then
110 SUF=${BACKUP_COMPLETE_SUF}
111 else
112 SUF=${BACKUP_DIFFERENTIAL_SUF}_${MOD}
113 DIFF_OPTION=`ls ${BACKUP_DIR} | grep ${BACKUP_NAME}.*.${BACKUP_COMPLETE_SUF} | tail --lines=1`
114 fi
115
116
117 # Path completo della directory di backup
118 BACKUP_COMPLETE_PATH=$BACKUP_DIR/${BACKUP_NAME}_`date -I`${SUF}
119
120 # creazione della directory di backup
121 mkdir $BACKUP_COMPLETE_PATH
122
123 # Esecuzione del backup con tutte le opzioni del caso
124 dar \
125 -R ${HOME_DIR} \
126 -c ${BACKUP_COMPLETE_PATH}/${BACKUP_NAME}_`date -I`${SUF} \
127 -s ${BACKUP_SLICE_SIZE} \
128 `if [[ ${USE_COMPRESSION} = "yes" ]]
129 then
130 if [[ ${COMPRESSION_TYPE} = "bzip2" ]]
131 then
132 echo -y${COMPRESSION_LEVEL}
133 else
134 echo -z${COMPRESSION_LEVEL}
135 fi
136 for i in "${NOT_COMPRESSED_FILES[@]}"
137 do
138 echo -Z $i
139 done
140 fi` \
141 `if [[ ${VERBOSE} = "yes" ]]
142 then
143 echo -v
144 fi` \
145 `if [[ ${INCLUDE_EXCLUDED_PATH} = "yes" ]]
146 then
147 echo -D
148 fi` \
149 `for i in "${EXLUDED_PATH[@]}"
150 do
151 echo -P $i
152 done` \
153 `for i in "${EXCLUDED_FILE_PATTERN[@]}"
154 do
155 echo -X $i
156 done` \
157 `if [[ ${MOD} -ne "0" ]]
158 then
159 echo -A ${BACKUP_DIR}/${DIFF_OPTION}/${DIFF_OPTION}
160
161 fi`
162
163 # Test del backup
164 if [[ $BACKUP_TEST="yes" ]]
165 then
166 dar -t ${BACKUP_COMPLETE_PATH}/${BACKUP_NAME}_`date -I`${SUF}
167 fi
Allegati
Per riferirsi agli allegati di una pagina, usare attachment:NOME_FILE, come mostrato qui sotto nell'elenco degli allegati. NON usare l'URL che si trova in corrispondenza del collegamento [scarica], potrebbe cambiare in futuro.Non è consentito inserire allegati su questa pagina.