slogan3

Ontwikkel een Bash of PowerShell Script voor Automatische Server Back-up en Herstel

description

Met deze prompt kun je een betrouwbaar script ontwikkelen dat ervoor zorgt dat je serverdata regelmatig veilig wordt opgeslagen en snel hersteld kan worden bij problemen. Dit voorkomt dataverlies en minimaliseert downtime, wat essentieel is voor continuïteit van je IT-infrastructuur. Het script is volledig aanpasbaar aan je eigen back-up strategie en serveromgeving, waardoor het beter aansluit dan generieke oplossingen.

prompt

Help me een Bash of PowerShell script te maken dat automatisch back-ups van mijn serverdata maakt en indien nodig herstelt. Back-up locaties: <voer de back-up locaties in> Frequentie ...

try_prompt

generate_helper
disclaimerOnPageApi

ai_answers

provider: openai
model: gpt-4.1-nano
Hier is een eenvoudig Bash-script dat automatisch back-ups maakt van je serverdata, deze opslaat in /backups, en bij een crash herstelt. Het script logt alle acties in /var/log/backup.log. ```bash #!/bin/bash # Configuratie BACKUP_DIR="/backups" LOG_FILE="/var/log/backup.log" DATA_DIR="/path/naar/serverdata" # Pas dit aan naar de daadwerkelijke data directory CRASH_FLAG="/tmp/server_crash.flag" # Flagbestand om crash te detecteren # Functie om te loggen log() { echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> "$LOG_FILE" } # Back-up maken maak_backup() { timestamp=$(date '+%Y%m%d_%H%M%S') backup_file="$BACKUP_DIR/server_backup_$timestamp.tar.gz" tar -czf "$backup_file" -C "$DATA_DIR" . if [ $? -eq 0 ]; then log "Back-up gemaakt: $backup_file" else log "Fout bij maken back-up" fi } # Herstellen van back-up herstel_backup() { # Selecteer de nieuwste back-up latest_backup=$(ls -t "$BACKUP_DIR"/server_backup_*.tar.gz | head -n 1) if [ -f "$latest_backup" ]; then rm -rf "$DATA_DIR"/* tar -xzf "$latest_backup" -C "$DATA_DIR" if [ $? -eq 0 ]; then log "Herstel voltooid uit: $latest_backup" else log "Fout tijdens herstel uit: $latest_backup" fi else log "Geen back-up gevonden voor herstel" fi } # Detectie van crash detecteer_crash() { if [ -f "$CRASH_FLAG" ]; then log "Servercrash gedetecteerd, herstel wordt gestart" herstel_backup rm -f "$CRASH_FLAG" fi } # Simulatie van servercrash (bijvoorbeeld door een fout of handmatig) # In praktijk moet je deze flag zetten bij een crash # touch "$CRASH_FLAG" # Main script detecteer_crash maak_backup ``` **Gebruik:** - Pas de variabele `DATA_DIR` aan naar jouw serverdata locatie. - Plaats dit script bijvoorbeeld als `/usr/local/bin/backup_script.sh`. - Maak het uitvoerbaar met: `chmod +x /usr/local/bin/backup_script.sh`. - Plan het bijvoorbeeld via cron voor frequente back-ups, bijvoorbeeld dagelijks: ``` 0 2 * * * /usr/local/bin/backup_script.sh ``` **Herstel bij crash:** - Zet handmatig het bestand `/tmp/server_crash.flag` om een crash te simuleren of te signaleren, of integreer je detectie in je servermonitoringsysteem. **Logboek:** - Alle acties worden gelogd in `/var/log/backup.log`. --- Wil je het script uitbreiden of aanpassen?
provider: deepseek
model: deepseek-chat
Ik zal je helpen een Bash-script te maken voor back-ups. Hier is een uitgebreide oplossing: ```bash #!/bin/bash # Backup script voor serverdata # Auteur: Backup Systeem # Datum: $(date +%Y-%m-%d) # Configuratie BACKUP_DIR="/backups" LOG_FILE="/var/log/backup.log" SOURCE_DIRS=("/etc" "/home" "/var/www") # Pas aan naar je eigen mappen RETENTION_DAYS=30 # Back-ups bewaren voor 30 dagen # Functie voor logging log_message() { echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" | tee -a "$LOG_FILE" } # Functie om back-up te maken create_backup() { local timestamp=$(date +%Y%m%d_%H%M%S) local backup_file="${BACKUP_DIR}/backup_${timestamp}.tar.gz" log_message "Back-up gestart: $backup_file" # Maak back-up directory aan als deze niet bestaat mkdir -p "$BACKUP_DIR" # Maak tar archive met compressie tar -czf "$backup_file" "${SOURCE_DIRS[@]}" 2>/dev/null if [ $? -eq 0 ]; then log_message "Back-up succesvol voltooid: $backup_file" # Update laatste back-up symlink ln -sf "$backup_file" "${BACKUP_DIR}/latest_backup.tar.gz" else log_message "FOUT: Back-up mislukt" exit 1 fi } # Functie om oude back-ups op te ruimen clean_old_backups() { log_message "Opruimen oude back-ups (ouder dan $RETENTION_DAYS dagen)" find "$BACKUP_DIR" -name "backup_*.tar.gz" -mtime +$RETENTION_DAYS -delete -print | while read file; do log_message "Verwijderd: $file" done } # Functie om back-up te herstellen restore_backup() { local backup_file="$1" if [ ! -f "$backup_file" ]; then log_message "FOUT: Back-up bestand niet gevonden: $backup_file" exit 1 fi log_message "Herstel gestart vanaf: $backup_file" # Extract back-up (pas op: overschrijft bestaande bestanden!) tar -xzf "$backup_file" -C / if [ $? -eq 0 ]; then log_message "Herstel succesvol voltooid vanaf: $backup_file" else log_message "FOUT: Herstel mislukt" exit 1 fi } # Hoofdscript case "$1" in "backup") create_backup clean_old_backups ;; "restore") if [ -z "$2" ]; then echo "Gebruik: $0 restore <backup-bestand>" echo "Voor laatste back-up: $0 restore latest" exit 1 fi if [ "$2" = "latest" ]; then restore_backup "${BACKUP_DIR}/latest_backup.tar.gz" else restore_backup "$2" fi ;; "list") echo "Beschikbare back-ups:" ls -la "$BACKUP_DIR"/backup_*.tar.gz 2>/dev/null || echo "Geen back-ups gevonden" ;; *) echo "Gebruik:" echo " $0 backup - Maak nieuwe back-up" echo " $0 restore <file> - Herstel vanaf back-up" echo " $0 restore latest - Herstel vanaf laatste back-up" echo " $0 list - Toon beschikbare back-ups" exit 1 ;; esac ``` **Installatie en gebruik:** 1. **Script opslaan:** ```bash sudo nano /usr/local/bin/backup-system.sh sudo chmod +x /usr/local/bin/backup-system.sh ``` 2. **Cronjob voor automatische back-ups:** ```bash sudo crontab -e # Voeg toe: 0 2 * * * /usr/local/bin/backup-system.sh backup ``` 3. **Gebruik:** ```bash # Maak back-up sudo ./backup-system.sh backup # Toon back-ups sudo ./backup-system.sh list # Herstel vanaf laatste back-up sudo ./backup-system.sh restore latest # Herstel vanaf specifieke back-up sudo ./backup-system.sh restore /backups/backup_20231201_0200.tar.gz ``` **Belangrijke opmerkingen:** - Pas `SOURCE_DIRS` aan naar je eigen belangrijke mappen - Test het herstelproces regelmatig - Zorg voor voldoende schijfruimte in /backups - Overweeg encryptie voor gevoelige data - Monitor de logfile: `/var/log/backup.log` Voor een servercrash scenario zou je dit script kunnen combineren met een opstartscript dat automatisch de laatste back-up herstelt.