Linux backup scripts, ασφάλεια με copy paste

Δεν χρειάζεται να κάτσεις να σκεφτείς τρόπους και να χάνεσαι στα documentation και στις man pages. Έκανα εγώ την βρώμικη δουλειά για ‘σένα. Δεν έχεις να κάνεις τίποτα άλλο παρά να αντιγράψεις τα παρακάτω script ή μέρη αυτών, να τα πειράξεις κατάλληλα και να απολαύσεις τα backup. Έχω σχολιάσει αρκετά τον κώδικα οπότε δε νομίζω να χρειάζεται παραπάνω εξήγηση. Δεν ξέρω αν υπάρχει άλλος, καλύτερος τρόπος ή αν έκανα κάποιο λάθος στις εντολές. Δουλεύει μια χαρά και δεν υπάρχει λόγος να το πειράξω 🙂

#!/bin/sh
# Backup script by giannoug <blog.giannoug.gr>
# Gets a copy of the databases.
# Should be executed once per day.
# * 23 * * * /root/daily-backup.sh
##

# Save the date
export d=`date +"%d-%m-%Y"`

# Go to /tmp and make a folder
cd /tmp
mkdir daily-$d
cd daily-$d

# Get the SQL backups
mysqldump -u root -pYourPasswordHere giannougs-blog > giannougs-blog.sql

# Wrap it up in a nice gzip archive
tar -czf daily-backup_$d.tar.gz *

# Bring it to /root and give read/write
# permissions ONLY to root (not the best, but...)
mv daily-backup_$d.tar.gz /root/daily
cd /root
chmod 600 daily/daily-backup_$d.tar.gz

# Delete files older than 7 days
find daily/* -mtime +7 -exec rm {} \;

# Push the new file to another server
# Uses scp with key authentication
scp -i slave-pc-key daily/daily-backup_$d.tar.gz giannoug@slave-pc.giannoug.gr:~/backups

# Delete temp folders
rm -rf /tmp/daily-$d
#!/bin/sh
# Backup script by giannoug <blog.giannoug.gr>
# Gets all the sites and their databases.
# Should be executed once per week.
# * * * * 1 /root/weekly-backup.sh
##

# Save the date
export d=`date +"%d-%m-%Y"`

# First, make sure /var/www is owned by lighttpd
chown -R www-data:www-data /var/www

# Go to /tmp and make a folder
cd /tmp
mkdir weekly-$d
cd weekly-$d

# Make a tar of /var/www
cd /var/www
tar -cf /tmp/weekly-$d/sites.tar *
cd /tmp/weekly-$d

# Get the SQL backups
mysqldump -u root -pYourPasswordHere giannougs-blog > giannougs-blog.sql

# Get some configs
cp /etc/lighttpd/conf-available/50-vhosts.conf .

# Wrap it up in a nice gzip archive
tar -czf weekly-backup_$d.tar.gz *

# Bring it to /root and give read/write
# permissions ONLY to root (not the best, but...)
mv weekly-backup_$d.tar.gz /root/weekly
cd /root
chmod 600 weekly/weekly-backup_$d.tar.gz

# Delete files older than 30 days
find weekly/* -mtime +30 -exec rm {} \;

# Push the new file to another server
# Uses scp with key authentication
scp -i slave-pc-key weekly/weekly-backup_$d.tar.gz giannoug@slave-pc.giannoug.gr:~/backups/weekly

# Delete temp folders
rm -rf /tmp/weekly-$d

Αυτά!

11 σχόλια στο “Linux backup scripts, ασφάλεια με copy paste”

  1. Καλό θα ήταν να αναφέρεις πως το βάζουμε να παίζει με crontab ή να το εκτελούσουμε απλά σαν εντολή μέσα από το /usr/bin. Πολύ καλό πάντως.

    1. Δεν χρειάζεται. Αν κάποιος θέλει να φτιάξει backup script σίγουρα ξέρει από shell scripting και σίγουρα πως να βάλει ένα απλό cron job. Παρόλα αυτά αν δεις τα σχόλια στο head των 2 script έχω σημειώσει τα cron τους.

      Γιατί να το βάλεις στο /usr/bin;;; Δεν αλλάζει κάτι στο crontab, τσάμπα γεμίζεις σαβούρα και αν πάει κάτι στραβά θα ψάχνεσαι που έχεις αποθηκεύσει τα διάφορα script. Παρόλα αυτά, ένα απλό cp είναι και chmod στα κατάλληλα permission.

      Αυτά. Ευχαριστώ για το σχόλιο 🙂

  2. fun mode on

    Η βάλτο στο boot ή πάρε mac 😛 και βάλε ένα backblaze (2010 you know?)

    fun mode off

    Ωραίο το script αλλά αφού είναι να το μοιραστείς με εμάς τους άσχετους δεν νομίζεις ότι θα ήταν πιο πρακτικό να βάλεις πάνω πάνω ένα #configure_section όπου θα κάνουμε setup, database name, username, password (hashed?), κλπ;

    Έτσι είναι πολύ customised…

    1. Δεν αξίζει να δίνω 5€ το μήνα για 2 βάσεις κάποιων χαζο-site 😛 Μια χαρά είναι τώρα! 3 χρόνια περίπου που έχω το blog δεν έχω χάσει ποτέ την βάση :Ρ

      Όσο για τα script έχεις δίκιο. Βέβαια, δεν είχα σκοπό να μοιράσω έτοιμα script για backup, απλά να δώσω κάποια ιδέα για όποιον ενδιαφέρεται! Ίσως τα σουλουπώσω λίγο όμως! 🙂

      Ευχαριστώ για το σχόλιο!

    1. Μόλις βρήκες γιατί ο server του blog έκανε DOS (denial of service) στον server σπίτι 😛

      Έχεις δίκιο και ευχαριστώ που το βρήκες, αν και δεν το έψαξα πολύ γιατί έπρεπε να φύγω διακοπές 😛

      Θα έπρεπε να είναι:
      * 23 * * 0 /root/weekly-backup.sh
      για να εκτελείται κάθε Κυριακή στις 11 το βράδυ.

Αφήστε μια απάντηση

Η ηλ. διεύθυνση σας δεν δημοσιεύεται. Τα υποχρεωτικά πεδία σημειώνονται με *