1c1
- Problembeschreibung siehe [[Archiv]]. Derzeit ziehe ich täglich ein Back-Up dieses Wikis hier, bewahre die täglichen Back-Ups der letzten zehn Tage auf, frühere Backups in zehn Zehn-Tage-Abständen, noch frühere in zehn Hundert-Tage-Abständen, usw. Hier das Shell-Skript, das ich dafür auf meinem Heimserver täglich per Cronjob aufrufe:
+ Problembeschreibung siehe [[Archiv]]. Derzeit ziehe ich täglich ein Snapshot dieses Wikis hier. Ich bewahre die Tages-Snapshots des gegenwärtigen und des letzten Monats vollständig auf; frühere Monate werden auf einen Schnappschuss vom Monats-Ersten reduziert. Hier das Shell-Skript, das ich dafür auf meinem SheevaPlug täglich per Cronjob aufrufe:
4,10c4
- cd /media/PUBLIC/plomlompom-wiki.d-backup/
- if [ -f daycount ]
- then
- daycount=`cat daycount`
- else
- daycount=0
- fi
+ #!/bin/bash -e
12,80c6,7
- if [ `expr $daycount %25 1000` -eq 0 ]
- then
- rm -rf 10-onethousandday-steps-ago/
- mv 9-onethousandday-steps-ago/ 10-onethousandday-steps-ago/
- rm -rf 9-onethousandday-steps-ago/
- mv 8-onethousandday-steps-ago/ 9-onethousandday-steps-ago/
- rm -rf 8-onethousandday-steps-ago/
- mv 7-onethousandday-steps-ago/ 8-onethousandday-steps-ago/
- rm -rf 7-onethousandday-steps-ago/
- mv 6-onethousandday-steps-ago/ 7-onethousandday-steps-ago/
- rm -rf 6-onethousandday-steps-ago/
- mv 5-onethousandday-steps-ago/ 6-onethousandday-steps-ago/
- rm -rf 5-onethousandday-steps-ago/
- mv 4-onethousandday-steps-ago/ 5-onethousandday-steps-ago/
- rm -rf 4-onethousandday-steps-ago/
- mv 3-onethousandday-steps-ago/ 4-onethousandday-steps-ago/
- rm -rf 3-onethousandday-steps-ago/
- mv 2-onethousandday-steps-ago/ 3-onethousandday-steps-ago/
- rm -rf 2-onethousandday-steps-ago/
- mv 1-onethousandday-steps-ago/ 2-onethousandday-steps-ago/
- rm -rf 1-onethousandday-steps-earlier/
- mv 10-onehundredday-steps-earlier/ 1-onethousandday-steps-earlier/
- fi
- if [ `expr $daycount %25 100` -eq 0 ]
- then
- rm -rf 10-onehundredday-steps-earlier/
- mv 9-onehundredday-steps-earlier/ 10-onehundredday-steps-earlier/
- rm -rf 10-onehundredday-steps-earlier/
- mv 8-onehundredday-steps-earlier/ 9-onehundredday-steps-earlier/
- rm -rf 8-onehundredday-steps-earlier/
- mv 7-onehundredday-steps-earlier/ 8-onehundredday-steps-earlier/
- rm -rf 7-onehundredday-steps-earlier/
- mv 6-onehundredday-steps-earlier/ 7-onehundredday-steps-earlier/
- rm -rf 6-onehundredday-steps-earlier/
- mv 5-onehundredday-steps-earlier/ 6-onehundredday-steps-earlier/
- rm -rf 5-onehundredday-steps-earlier/
- mv 4-onehundredday-steps-earlier/ 5-onehundredday-steps-earlier/
- rm -rf 4-onehundredday-steps-earlier/
- mv 3-onehundredday-steps-earlier/ 4-onehundredday-steps-earlier/
- rm -rf 3-onehundredday-steps-earlier/
- mv 2-onehundredday-steps-earlier/ 3-onehundredday-steps-earlier/
- rm -rf 2-onehundredday-steps-earlier/
- mv 1-onehundredday-steps-earlier/ 2-onehundredday-steps-earlier/
- rm -rf 1-onehundredday-steps-earlier/
- mv 10-tenday-steps-earlier/ 1-onehundredday-steps-earlier/
- fi
- if [ `expr $daycount %25 10` -eq 0 ]
- then
- rm -rf 10-tenday-steps-earlier/
- mv 9-tenday-steps-earlier/ 10-tenday-steps-earlier/
- rm -rf 9-tenday-steps-earlier/
- mv 8-tenday-steps-earlier/ 9-tenday-steps-earlier/
- rm -rf 8-tenday-steps-earlier/
- mv 7-tenday-steps-earlier/ 8-tenday-steps-earlier/
- rm -rf 7-tenday-steps-earlier/
- mv 6-tenday-steps-earlier/ 7-tenday-steps-earlier/
- rm -rf 6-tenday-steps-earlier/
- mv 5-tenday-steps-earlier/ 6-tenday-steps-earlier/
- rm -rf 5-tenday-steps-earlier/
- mv 4-tenday-steps-earlier/ 5-tenday-steps-earlier/
- rm -rf 4-tenday-steps-earlier/
- mv 3-tenday-steps-earlier/ 4-tenday-steps-earlier/
- rm -rf 3-tenday-steps-earlier/
- mv 2-tenday-steps-earlier/ 3-tenday-steps-earlier/
- rm -rf 2-tenday-steps-earlier/
- mv 1-tenday-steps-earlier/ 2-tenday-steps-earlier/
- rm -rf 1-tenday-steps-earlier/
- mv 10-oneday-steps-earlier/ 1-tenday-steps-earlier/
- fi
+ WikiBackupDir='/mnt/usbstick/wiki_backups'
+ cd $WikiBackupDir
82,100c9,11
- rm -rf 10-oneday-steps-earlier/
- mv 9-oneday-steps-earlier/ 10-oneday-steps-earlier/
- rm -rf 9-oneday-steps-earlier/
- mv 8-oneday-steps-earlier/ 9-oneday-steps-earlier/
- rm -rf 8-oneday-steps-earlier/
- mv 7-oneday-steps-earlier/ 8-oneday-steps-earlier/
- rm -rf 7-oneday-steps-earlier/
- mv 6-oneday-steps-earlier/ 7-oneday-steps-earlier/
- rm -rf 6-oneday-steps-earlier/
- mv 5-oneday-steps-earlier/ 6-oneday-steps-earlier/
- rm -rf 5-oneday-steps-earlier/
- mv 4-oneday-steps-earlier/ 5-oneday-steps-earlier/
- rm -rf 4-oneday-steps-earlier/
- mv 3-oneday-steps-earlier/ 4-oneday-steps-earlier/
- rm -rf 3-oneday-steps-earlier/
- mv 2-oneday-steps-earlier/ 3-oneday-steps-earlier/
- rm -rf 2-oneday-steps-earlier/
- mv 1-oneday-steps-earlier/ 2-oneday-steps-earlier/
- rm -rf 1-oneday-steps-earlier/
+ today=`date -u +"%25Y-%25m"-%25d`
+ echo 'Error log '$today':' >> error_log.txt
+ echo 'FTP log '$today':' >> ftp_log.txt
102,104c13,18
- mv today/ 1-oneday-steps-earlier/
- mkdir today/
- cd today/
+ # Download wiki snapshot into a directory named after the current date.
+ today=`date -u +"%25Y-%25m-%25d"`
+ mkdir $today
+ cd $today
+ username=GEHEIM
+ password=GEHEIM
106c20
- user USERNAME PASSWORT
+ user $username $password
111d24
- echo `date` > plomlompom-wiki.d-backup-TIMESTAMP
114,115c27,42
- daycount=`expr $daycount + 1`
- echo $daycount > daycount
+ # If new month started, delete all but first snapshot from next-to-last month.
+ month_today=`date -u +"%25Y-%25m"`
+ if [ ! -f this_month ]; then
+ echo $month_today > this_month; fi
+ month_yesterday=`cat this_month`
+ if [ ! $month_today = $month_yesterday ]; then
+ if [ -f last_month ]; then
+ next_to_last_month=`cat last_month`
+ mv $next_to_last_month'-01' $next_to_last_month
+ rm -rf $next_to_last_month'-'*; fi
+ echo $month_today > this_month
+ echo $month_yesterday > last_month; fi
+
+ echo '' >> error_log.txt
+ echo '' >> ftp_log.txt
+
117,118d43
-
- Verbesserungsvorschläge willkommen; wie man sicher sieht, bin ich kein sehr erfahrener Shell-Skripter, und bestimmt ließe sich das alles noch etwas eleganter lösen.
122c47
- 0 12 * * * sh /media/PUBLIC/plomlompom-wiki.d-backup/plomlompom-wiki.d-backup.sh
+ 0 9 * * * plomlompom /home/plomlompom/wikibackup.sh 2>> /mnt/usbstick/wiki_backups/error_log.txt >> /mnt/usbstick/wiki_backups/ftp_log.txt
1c1,123
- Prozedere derzeit beschrieben unter [[Archiv]].
+ Problembeschreibung siehe [[Archiv]]. Derzeit ziehe ich täglich ein Back-Up dieses Wikis hier, bewahre die täglichen Back-Ups der letzten zehn Tage auf, frühere Backups in zehn Zehn-Tage-Abständen, noch frühere in zehn Hundert-Tage-Abständen, usw. Hier das Shell-Skript, das ich dafür auf meinem Heimserver täglich per Cronjob aufrufe:
+
+ @@
+ cd /media/PUBLIC/plomlompom-wiki.d-backup/
+ if [ -f daycount ]
+ then
+ daycount=`cat daycount`
+ else
+ daycount=0
+ fi
+
+ if [ `expr $daycount %25 1000` -eq 0 ]
+ then
+ rm -rf 10-onethousandday-steps-ago/
+ mv 9-onethousandday-steps-ago/ 10-onethousandday-steps-ago/
+ rm -rf 9-onethousandday-steps-ago/
+ mv 8-onethousandday-steps-ago/ 9-onethousandday-steps-ago/
+ rm -rf 8-onethousandday-steps-ago/
+ mv 7-onethousandday-steps-ago/ 8-onethousandday-steps-ago/
+ rm -rf 7-onethousandday-steps-ago/
+ mv 6-onethousandday-steps-ago/ 7-onethousandday-steps-ago/
+ rm -rf 6-onethousandday-steps-ago/
+ mv 5-onethousandday-steps-ago/ 6-onethousandday-steps-ago/
+ rm -rf 5-onethousandday-steps-ago/
+ mv 4-onethousandday-steps-ago/ 5-onethousandday-steps-ago/
+ rm -rf 4-onethousandday-steps-ago/
+ mv 3-onethousandday-steps-ago/ 4-onethousandday-steps-ago/
+ rm -rf 3-onethousandday-steps-ago/
+ mv 2-onethousandday-steps-ago/ 3-onethousandday-steps-ago/
+ rm -rf 2-onethousandday-steps-ago/
+ mv 1-onethousandday-steps-ago/ 2-onethousandday-steps-ago/
+ rm -rf 1-onethousandday-steps-earlier/
+ mv 10-onehundredday-steps-earlier/ 1-onethousandday-steps-earlier/
+ fi
+ if [ `expr $daycount %25 100` -eq 0 ]
+ then
+ rm -rf 10-onehundredday-steps-earlier/
+ mv 9-onehundredday-steps-earlier/ 10-onehundredday-steps-earlier/
+ rm -rf 10-onehundredday-steps-earlier/
+ mv 8-onehundredday-steps-earlier/ 9-onehundredday-steps-earlier/
+ rm -rf 8-onehundredday-steps-earlier/
+ mv 7-onehundredday-steps-earlier/ 8-onehundredday-steps-earlier/
+ rm -rf 7-onehundredday-steps-earlier/
+ mv 6-onehundredday-steps-earlier/ 7-onehundredday-steps-earlier/
+ rm -rf 6-onehundredday-steps-earlier/
+ mv 5-onehundredday-steps-earlier/ 6-onehundredday-steps-earlier/
+ rm -rf 5-onehundredday-steps-earlier/
+ mv 4-onehundredday-steps-earlier/ 5-onehundredday-steps-earlier/
+ rm -rf 4-onehundredday-steps-earlier/
+ mv 3-onehundredday-steps-earlier/ 4-onehundredday-steps-earlier/
+ rm -rf 3-onehundredday-steps-earlier/
+ mv 2-onehundredday-steps-earlier/ 3-onehundredday-steps-earlier/
+ rm -rf 2-onehundredday-steps-earlier/
+ mv 1-onehundredday-steps-earlier/ 2-onehundredday-steps-earlier/
+ rm -rf 1-onehundredday-steps-earlier/
+ mv 10-tenday-steps-earlier/ 1-onehundredday-steps-earlier/
+ fi
+ if [ `expr $daycount %25 10` -eq 0 ]
+ then
+ rm -rf 10-tenday-steps-earlier/
+ mv 9-tenday-steps-earlier/ 10-tenday-steps-earlier/
+ rm -rf 9-tenday-steps-earlier/
+ mv 8-tenday-steps-earlier/ 9-tenday-steps-earlier/
+ rm -rf 8-tenday-steps-earlier/
+ mv 7-tenday-steps-earlier/ 8-tenday-steps-earlier/
+ rm -rf 7-tenday-steps-earlier/
+ mv 6-tenday-steps-earlier/ 7-tenday-steps-earlier/
+ rm -rf 6-tenday-steps-earlier/
+ mv 5-tenday-steps-earlier/ 6-tenday-steps-earlier/
+ rm -rf 5-tenday-steps-earlier/
+ mv 4-tenday-steps-earlier/ 5-tenday-steps-earlier/
+ rm -rf 4-tenday-steps-earlier/
+ mv 3-tenday-steps-earlier/ 4-tenday-steps-earlier/
+ rm -rf 3-tenday-steps-earlier/
+ mv 2-tenday-steps-earlier/ 3-tenday-steps-earlier/
+ rm -rf 2-tenday-steps-earlier/
+ mv 1-tenday-steps-earlier/ 2-tenday-steps-earlier/
+ rm -rf 1-tenday-steps-earlier/
+ mv 10-oneday-steps-earlier/ 1-tenday-steps-earlier/
+ fi
+
+ rm -rf 10-oneday-steps-earlier/
+ mv 9-oneday-steps-earlier/ 10-oneday-steps-earlier/
+ rm -rf 9-oneday-steps-earlier/
+ mv 8-oneday-steps-earlier/ 9-oneday-steps-earlier/
+ rm -rf 8-oneday-steps-earlier/
+ mv 7-oneday-steps-earlier/ 8-oneday-steps-earlier/
+ rm -rf 7-oneday-steps-earlier/
+ mv 6-oneday-steps-earlier/ 7-oneday-steps-earlier/
+ rm -rf 6-oneday-steps-earlier/
+ mv 5-oneday-steps-earlier/ 6-oneday-steps-earlier/
+ rm -rf 5-oneday-steps-earlier/
+ mv 4-oneday-steps-earlier/ 5-oneday-steps-earlier/
+ rm -rf 4-oneday-steps-earlier/
+ mv 3-oneday-steps-earlier/ 4-oneday-steps-earlier/
+ rm -rf 3-oneday-steps-earlier/
+ mv 2-oneday-steps-earlier/ 3-oneday-steps-earlier/
+ rm -rf 2-oneday-steps-earlier/
+ mv 1-oneday-steps-earlier/ 2-oneday-steps-earlier/
+ rm -rf 1-oneday-steps-earlier/
+
+ mv today/ 1-oneday-steps-earlier/
+ mkdir today/
+ cd today/
+ ftp -inv ftp.plomlompom.de%3c%3cEND
+ user USERNAME PASSWORT
+ cd www.plomlompom.de/wiki/wiki.d/
+ mget *
+ mget .*
+ END
+ echo `date` > plomlompom-wiki.d-backup-TIMESTAMP
+ cd ..
+
+ daycount=`expr $daycount + 1`
+ echo $daycount > daycount
+ @@
+
+ Verbesserungsvorschläge willkommen; wie man sicher sieht, bin ich kein sehr erfahrener Shell-Skripter, und bestimt ließe sich das alles noch etwas eleganter lösen.
+
+ Hier noch der dazugehörige cronjob:
+
+ @@
+ @@