@@ -16,32 +16,8 @@ if [[ $DATAPATH == "" && $StoreBackupAt == "" ]]; then
1616fi
1717SCRIPT_DIR=" $( cd " $( dirname " ${BASH_SOURCE[0]} " ) " & > /dev/null && pwd ) "
1818
19- STORE_LICENCE=false
20- STORE_DEVICEDATA=false
21-
22- STORE_UNIX_PASSWORD_CHANGES=true
23- STORE_PLCnextStuff=true
24- STORE_PLCnext_UM=true
25- STORE_NETWORK=true
26- STORE_SSH_KEYs=true
27- STORE_PROJECTS=true
28- STORE_INSTALLED_APPS=true
29- STORE_CONFIG=true
30- STORE_CERTS=true
31- STORE_DATA=true
32-
33- UNIX_PASSWORD_Changes=( " upperdir/etc/shadow" " upperdir/etc/gshadow" " upperdir/etc/group" ) # created root user or admin unix pw was chaged.
34- PLCnextStuff=" upperdir/etc/plcnext" # All PCnext Stuff that has been modified. Database files for Firewall rules etc.
35- PLCnext_UM=" upperdir/etc/plcnext/device/System/Um/Roles.settings" #
36- NETWORK=" upperdir/etc/network" # Interface file
37- SSH_KEYs=" upperdir/etc/ssh" # Unix Keys / not the Cert Storage
38- PROJECTS=" upperdir/opt/plcnext/projects" # PCWE and other Project changes.
39- INSTALLED_APPS=" upperdir/opt/plcnext/appshome" #
40- CONFIG=" upperdir/opt/plcnext/config" #
41- CERTS=" upperdir/opt/plcnext/Security" #
42- DATA=" upperdir/opt/plcnext/data" #
43- INSTALLED_LICENSE_FILES=" licence" # SD card Licenses
44- DEVICEDATA=" device_data" # Production Data of PLC.
19+ # # Set the directories for the backup
20+ . ${SCRIPT_DIR} /../Backup/backupSettings.sh
4521
4622df -ha | grep rfs
4723${SCRIPT_DIR} /../Diagnostic/checkActivePartition.sh
5329
5430echo ' Choose the kind of Backup you want to create.'
5531PS3=" Select your choice: "
56- options=(" Upperdir" " PCWE Project only" " Changes done via FW Services" " Continue" " Exit" )
32+ options=(" Upperdir" \
33+ " PCWE Project only" \
34+ " Directories specified by backupSettings.sh" \
35+ " Continue" \
36+ " Exit" )
5737select opt in " ${options[@]} "
5838do
5939 case $opt in
6747 echo " STORE = $STORE "
6848 ;;
6949
70- " Changes done via FW Services" )
50+ " Directories specified by backupSettings.sh" )
51+ echo " check 'backupSettings.sh' to check or change settings"
52+ (set -o posix ; set) | grep STORE | grep true
7153 STORE=" Changes"
7254 echo " STORE = $STORE "
7355 ;;
74-
56+
57+ # "Everything")
58+ # STORE="Everything"
59+ # echo "STORE = $STORE"
60+ # ;;
61+
62+ # "Containers")
63+ # STORE="Everything"
64+ # echo "STORE = $STORE"
65+ # ;;
66+
7567 " Continue" )
7668 if [ " $STORE " == " " ]; then
7769 echo " STORE = $STORE empty Exit Script"
@@ -134,12 +126,15 @@ done
134126echo " Please check if the paths are correct."
135127echo " DataPath: '$DATAPATH ' The directory you want to backup."
136128echo " StoreBackupAt: '$StoreBackupAt ' the location you want to store your backup at."
137- echo " STORE Mode: '$STORE ' is activated."
138- echo " STORE_LICENCE: '$STORE_LICENCE ' is activated."
139- echo " STORE_DEVICEDATA: '$STORE_DEVICEDATA ' is activated."
129+ echo " Storage Mode: '$STORE ' is activated."
130+
140131
132+ echo " :"
141133read -r -p " Are you sure? [y/N] all settings are correct
142134" response
135+ # ##
136+ # ## Storage Function
137+ # ##
143138if [[ " $response " =~ ^([yY][eE][sS]| [yY])$ ]]
144139then
145140 DATE=$( date -I)
@@ -149,78 +144,93 @@ then
149144 echo " STORE = $STORE "
150145 case " $STORE " in
151146 " Upperdir" )
152- tar -rpf ${StoreBackupAt} /backup-${DATE} .tar -C ${DATAPATH} upperdir;
147+ tar -rpf ${StoreBackupAt} /backup-${DATE} .tar -C ${DATAPATH} upperdir && echo " Done "
153148 ;;
154149 " Changes" )
155- echo -e " Store specific folders only:"
156- echo " STORE_UNIX_PASSWORD_CHANGES: $STORE_UNIX_PASSWORD_CHANGES
157- | UNIX_PASSWORD_Changes: ${UNIX_PASSWORD_Changes[@]} "
158- echo " STORE_NETWORK: $STORE_NETWORK
159- | NETWORK: $NETWORK "
160- echo " STORE_SSH_KEYs: $STORE_SSH_KEYs
161- | SSH_KEYs: $SSH_KEYs "
162- echo " STORE_PROJECTS: $STORE_PROJECTS
163- | PROJECTS: $PROJECTS "
164- echo " STORE_INSTALLED_APPS: $STORE_INSTALLED_APPS
165- | INSTALLED_APPS: $INSTALLED_APPS "
166- echo " STORE_CONFIG: $STORE_CONFIG
167- | CONFIG: $CONFIG "
168- echo " STORE_CERTS: $STORE_CERTS
169- | CERTS: $CERTS "
170- echo " STORE_DATA: $STORE_DATA
171- | DATA: $DATA "
172-
150+ echo -e " Store specified folders only:"
151+ (set -o posix ; set) | grep " STORE" | grep " true"
173152 read -r -p " Proceed creating backup [y/N] : " response
174153 if [[ " $response " =~ ^([yY][eE][sS]| [yY])$ ]]
175154 then
176155 # # Add Folders to Tar.
177156 if $STORE_UNIX_PASSWORD_CHANGES ; then
178- echo " STORED UNIX_PASSWORD_CHANGES"
179- tar -rpf ${StoreBackupAt} /backup-${DATE} .tar -C ${DATAPATH} ${UNIX_PASSWORD_Changes[@]}
157+ echo " Storing UNIX_PASSWORD_CHANGES"
158+ tar -rpf ${StoreBackupAt} /backup-${DATE} .tar -C ${DATAPATH} ${UNIX_PASSWORD_Changes[@]} && echo " Done "
180159 fi
181160 if $STORE_NETWORK ; then
182- echo " STORED NETWORK "
183- tar -rpf ${StoreBackupAt} /backup-${DATE} .tar -C ${DATAPATH} ${NETWORK}
161+ echo " Storing Network Settings "
162+ tar -rpf ${StoreBackupAt} /backup-${DATE} .tar -C ${DATAPATH} ${NETWORK} && echo " Done "
184163 fi
164+
185165 if $STORE_SSH_KEYs ; then
186- echo " STORED SSH_KEYs "
187- tar -rpf ${StoreBackupAt} /backup-${DATE} .tar -C ${DATAPATH} ${SSH_KEYs}
166+ echo " Storing SSH Keys "
167+ tar -rpf ${StoreBackupAt} /backup-${DATE} .tar -C ${DATAPATH} ${SSH_KEYs} && echo " Done "
188168 fi
189- if $STORE_PROJECTS ; then
190- echo " STORED PROJECTS"
191- tar -rpf ${StoreBackupAt} /backup-${DATE} .tar -C ${DATAPATH} ${PROJECTS}
169+
170+ if $STORE_PLCnext_PROJECTS ; then
171+ echo " Storing PROJECTS"
172+ tar -rpf ${StoreBackupAt} /backup-${DATE} .tar -C ${DATAPATH} ${PROJECTS} && echo " Done"
192173 fi
193- if $STORE_INSTALLED_APPS ; then
194- echo " STORED INSTALLED_APPS"
195- tar -rpf ${StoreBackupAt} /backup-${DATE} .tar -C ${DATAPATH} ${INSTALLED_APPS}
174+
175+ if $STORE_PLCnext_SYSTEM_UM ; then
176+ echo " Storing SYSTEM UM Settings"
177+ tar -rpf ${StoreBackupAt} /backup-${DATE} .tar -C ${DATAPATH} ${PLCnext_UM} && echo " Done"
196178 fi
197- if $STORE_CONFIG ; then
198- echo " STORED CONFIG"
199- tar -rpf ${StoreBackupAt} /backup-${DATE} .tar -C ${DATAPATH} ${CONFIG}
179+
180+ if $STORE_PLCnext_SYSTEM_SCM ; then
181+ echo " Storing SYSTEM SCM Settings"
182+ tar -rpf ${StoreBackupAt} /backup-${DATE} .tar -C ${DATAPATH} ${PLCnext_SCM} && echo " Done"
200183 fi
201- if $STORE_CERTS ; then
202- echo " STORED CERTS"
203- tar -rpf ${StoreBackupAt} /backup-${DATE} .tar -C ${DATAPATH} ${CERTS}
184+
185+ if $STORE_PLCNext_SERVICES ; then
186+ echo " Storing SERVICE Settings"
187+ tar -rpf ${StoreBackupAt} /backup-${DATE} .tar -C ${DATAPATH} ${SERVICES} && echo " Done"
188+ # ## If required add keys for specific services
189+ # STORE_PLCNext_SERVICES_Ehmi
190+ # STORE_PLCNext_SERVICES_Grpc
191+ # STORE_PLCNext_SERVICES_LinuxSyslog
192+ # STORE_PLCNext_SERVICES_OpcUA
193+ # STORE_PLCNext_SERVICES_PLCnextStore
194+ # STORE_PLCNext_SERVICES_PortAuthentication
195+ # STORE_PLCNext_SERVICES_Spm
196+ # STORE_PLCNext_SERVICES_SpnsProxy
197+ # STORE_PLCNext_SERVICES_Syslog
198+ # STORE_PLCNext_SERVICES_Wcm
204199 fi
205- if $STORE_DATA ; then
206- echo " STORED DATA"
207- tar -rpf ${StoreBackupAt} /backup-${DATE} .tar -C ${DATAPATH} ${DATA}
200+ if $STORE_PLCnext_SECURITY ; then
201+ echo " Storing PLCnext_SECURITY directory"
202+ tar -rpf ${StoreBackupAt} /backup-${DATE} .tar -C ${DATAPATH} ${PLCnext_SECURITY} && echo " Done"
203+ fi
204+ if $STORE_INSTALLED_APPS ; then
205+ echo " Storing INSTALLED_APPS"
206+ tar -rpf ${StoreBackupAt} /backup-${DATE} .tar -C ${DATAPATH} ${INSTALLED_APPS} && echo " Done"
208207 fi
208+ if $STORE_ALL_CONFIG ; then
209+ echo " Storing CONFIG directory"
210+ tar -rpf ${StoreBackupAt} /backup-${DATE} .tar -C ${DATAPATH} ${CONFIG} && echo " Done"
211+ fi
212+
213+ if $STORE_ALL_DATA ; then
214+ echo " Storing DATA directory"
215+ tar -rpf ${StoreBackupAt} /backup-${DATE} .tar -C ${DATAPATH} ${DATA} && echo " Done"
216+ fi
217+
218+
209219 fi
210220 ;;
211221
212222 " PCWE" )
213- echo " STORED PCWE"
214- tar -rpf ${StoreBackupAt} /backup-${DATE} .tar -C ${DATAPATH} ${PROJECTS}
223+ echo " Storing PCWE directory "
224+ tar -rpf ${StoreBackupAt} /backup-${DATE} .tar -C ${DATAPATH} ${PROJECTS} && echo " Done "
215225 ;;
216226 esac
217227fi
218228
219229if $STORE_DEVICEDATA ; then
220230 echo " WATCH OUT!
221231 Stored DeviceData are bound to the Hardware of the PLC do not use this backup for another PLC!"
222- echo " STORED DEVICEDATA"
223- tar -rpf ${StoreBackupAt} /backup-${DATE} .tar -C " /etc" ${DEVICEDATA}
232+ echo " Storing DEVICEDATA"
233+ tar -rpf ${StoreBackupAt} /backup-${DATE} .tar -C " /etc" ${DEVICEDATA} && echo " Done "
224234fi
225235
226236if $STORE_LICENCE ; then
@@ -236,7 +246,7 @@ if $STORE_LICENCE; then
236246 then
237247 echo " Adding Licence, remember to unzip with caution!"
238248 echo " Restoring this backup might void an SD-Cards License if overwritten."
239- tar -rpf ${StoreBackupAt} /backup-${DATE} .tar -C ${DATAPATH} ${INSTALLED_LICENSE_FILES}
249+ tar -rpf ${StoreBackupAt} /backup-${DATE} .tar -C ${DATAPATH} ${INSTALLED_LICENSE_FILES} && echo " Done "
240250 else
241251 echo " Storing licence has been skipped"
242252 fi
245255if [ -f " ${StoreBackupAt} /backup-${DATE} .tar" ]; then
246256 chown admin:plcnext ${StoreBackupAt} /backup-* .tar
247257 echo " Contents of Backup:"
248- tar --exclude " */* " - tvf " ${StoreBackupAt} /backup-${DATE} .tar"
258+ tar -tvf " ${StoreBackupAt} /backup-${DATE} .tar" | grep " /$ "
249259
250260 echo " How to restore:
251- ./restoreBackup.sh /media/rfs/rw/ /media/rfs/rw/backup-2021-09-10 .tar
261+ ./restoreBackup.sh /media/rfs/rw/ /media/rfs/rw/backup-${DATE} .tar
252262 "
253263else
254264 echo " No backup created please fix your input data."
0 commit comments