Backup Script

...το μέρος για να ξεκινήσετε!

Συντονιστής: adem1

Κανόνες Δ. Συζήτησης
Παρακαλώ να επιλέξετε, με προσοχή, την άδεια που θέλετε να έχουν οι οδηγοί που συγγράφετε.
Πληροφορίες για τις άδειες μπορείτε να βρείτε εδώ.
Άμα επιθυμείτε κάποια άλλη άδεια επικοινωνήστε με κάποιο Διαχειριστή είτε Συντονιστή.

Σημαντικό είναι να χρησιμοποιήσετε την υπηρεσία http://imagebin.ubuntu-gr.org για τις εικόνες.

Backup Script

Δημοσίευσηαπό The_Mentor » 19 Αύγ 2008, 20:28

Ο sudobash έχει γράψει έναν οδηγό σχετικά με προγραμματισμένες εργασίες. Μια τέτοια εργασία είναι και η αυτόματη λήψη Backup μέσω ενός script.
Το παρακάτω script λειτουργεί πάνω απο χρόνο σε δικούς μου servers και για τις δικές σας ανάγκες πιθανόν να χρειάζεται μικροαλλαγές κυρίως στο ποιά folder χρειάζετε να πάρετε backup.
Το script σώζει σε 2ο δίσκο (/media/disk) το αρχείο backup και κρατάει 7 μέρες backup προς τα πίσω. Την όγδοη μέρα σβήνει το πρώτο και αντικαθιστά με το νεότερο (FirstIN FirstOUT = FIFO).

Κώδικας: Επιλογή όλων
#!/bin/sh
############################################
#
# (Info about)
#
############################################
#
# (Date Installed)
#
############################################
#
# (Other info about editing etc)
#
############################################
# files to backup.
backup_files="/home /var/www /etc /root /boot /opt"

# Where to backup to.
dest="/media/disk/backup"

# Create archive filename.
day=$(date +%A)
hostname=$(hostname -s)
archive_file="$hostname-$day.tgz"

# Print start status message.
echo "Backing up $backup_files to $dest/$archive_file"
date
echo

# Backup the files using tar.
tar czf $dest/$archive_file $backup_files

# Print end status message.
echo
echo "Backup finished"
date

# Long listing of files in $dest to check file sizes.
ls -lh $dest


Στα backup_files μπορείτε να βάλετε όποια folder θέλετε (=χρειάζεστε).

Σώζετε το παραπάνω σε ένα αρχείο backup.sh και το κάνετε εκτελέσιμο.

Κώδικας: Επιλογή όλων
chmod +x backup.sh


τοποθετήστε το στο /usr/local/bin και με το το crontab του Mulder το προγραμματίζετε να εκτελείτε όποτε το θέλετε...

Το δικό μου crontab είναι αυτό:

Κώδικας: Επιλογή όλων
0 0 * * * bash /usr/local/bin/backup.sh


και εκτελεί όπως βλέπετε το backup.sh κάθε μέρα στις 00.00
The_Mentor
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 990
Εγγραφή: 15 Μάιος 2008, 14:34
Εκτύπωση

Re: Backup Script

Δημοσίευσηαπό ftso » 20 Αύγ 2008, 00:05

Πολύ καλό!
Επίσης πολύ καλή ιδέα για κάποιο πιο ολοκληρωμένο project με περισσότερες επιλογές,γραφικό,restore κτλ!!!
Υπάρχει κάτι τέτοιο ή να αρχίσω το γράψιμο? :lol:
Άβαταρ μέλους
ftso
Επίτιμο μέλος
Επίτιμο μέλος
 
Δημοσιεύσεις: 6409
Εγγραφή: 12 Μάιος 2008, 13:40
Τοποθεσία: Αθήνα
IRC: ftso
Εκτύπωση

Re: Backup Script

Δημοσίευσηαπό The_Mentor » 20 Αύγ 2008, 00:19

ξεκίνα να γράφεις και αν είναι, να κάνουμε κουμάντο να μπεί σαν σύνολο στο περιοδικό
The_Mentor
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 990
Εγγραφή: 15 Μάιος 2008, 14:34
Εκτύπωση

Re: Backup Script

Δημοσίευσηαπό sudobash » 20 Αύγ 2008, 01:06

Φίλε The_Mentor, πολύ καλό το script σου... απλά έχω μια παρατήρηση... επειδή κάθε μέρα παίρνει backup με το όνομα της τρέχουσας ημέρας και έτσι αντικαθιστά το αρχείο της προηγούμενης βδομάδας ίδιας μέρας, αν κάποια μέρα προκύψει το οποιοδήποτε λάθος στο backup, εσύ θα δεις κανονικά εκεί το αρχείο αλλά δε θα ξέρεις ποιας ημερομηνίας είναι. Οπότε καλό θα ήταν στο script να προσθέτει στο όνομα την ημερομηνία και όχι την ημέρα απλά. Και στο τέλος να διαγράφει ότι αρχείο βρίσκει και είναι παλαιότερο των 7 ημερών.

Οπότε μια μικρή παραλλαγή στο script σου θα μπορούσε να είναι η εξής:

Κώδικας: Επιλογή όλων
#!/bin/sh
############################################
#
# (Info about)
#
############################################
#
# (Date Installed)
#
############################################
#
# (Other info about editing etc)
#
############################################
# files to backup.
backup_files="/home /var/www /etc /root /boot /opt"

# Where to backup to.
dest="/media/disk/backup"

# Create archive filename.
day=$(date +%Y-%m-%0e)
hostname=$(hostname -s)
archive_file="$hostname-$day.tgz"

# Print start status message.
echo "Backing up $backup_files to $dest/$archive_file"
date

# Backup the files using tar.
tar czf $dest/$archive_file $backup_files

# Print end status message.
echo "Backup finished"
date

# Delete files older than <days> days
days=7
echo "Deleting files older than $days days"
find $dest -type f -name "$hostname*.tgz" -daystart -mtime +$days -exec rm -f {} \;
echo "Deleting finished"

# Long listing of files in $dest to check file sizes.
ls -lh $dest


(Φυσικά και όλα τα credits στον The_Mentor για το αρχικό script)
Ubuntu 9.10 32bit | 2 x Intel Core 2 Duo T5500 @ 1.66GHz | 2GB DDR2 RAM | Intel 950 Graphics
Richard Stallman wrote the compiler God used. The Big Bang was the Universe's first segfault.
Άβαταρ μέλους
sudobash
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 876
Εγγραφή: 13 Μάιος 2008, 20:11
Τοποθεσία: Κρήτη
Εκτύπωση

Re: Backup Script

Δημοσίευσηαπό The_Mentor » 20 Αύγ 2008, 16:17

Ορθή αλλαγή και συμπλήρωση... +1 από εμένα.

Για το restore τώρα έχουμε:

Κώδικας: Επιλογή όλων
cd /
sudo tar -xzvf /media/disk/backup/backup_file_xxx.tgz


Αυτό κάνει restore στο original path που σημαίνει πως άν έχετε πάρει και mail αρχεία συστήματος etc backup όλα αυτά θα επανεγγραφούν στην προτέρα κατάσταση.
The_Mentor
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 990
Εγγραφή: 15 Μάιος 2008, 14:34
Εκτύπωση

Re: Backup Script

Δημοσίευσηαπό ftso » 22 Αύγ 2008, 14:49

Λοιπόν αν τον παρακάτω κώδικα:
Κώδικας: Επιλογή όλων
# files to backup.
backup_files="/home /var/www /etc /root /boot /opt"

# Where to backup to.
dest="/media/disk/backup"


τον κάνουμε πχ:
Κώδικας: Επιλογή όλων
# files to backup.
backup_files="/home /var/www /etc /root /boot /opt"

# Where to backup to.
dest="/tmp/backup"

Θα υπάρχει κανένα πρόβλημα που το backup γίνετε στον ίδιο δίσκο, άσχετα αν είναι αποτελεσματικό ή όχι?

Επίσης η επαναφορά του backup υποθέτω μπορεί να γίνει απο την ίδια εγκατάσταση αν ακολουθήσει reboot? ή όχι?
Άβαταρ μέλους
ftso
Επίτιμο μέλος
Επίτιμο μέλος
 
Δημοσιεύσεις: 6409
Εγγραφή: 12 Μάιος 2008, 13:40
Τοποθεσία: Αθήνα
IRC: ftso
Εκτύπωση

Re: Backup Script

Δημοσίευσηαπό sudobash » 22 Αύγ 2008, 15:15

ftso έγραψε:Θα υπάρχει κανένα πρόβλημα που το backup γίνετε στον ίδιο δίσκο, άσχετα αν είναι αποτελεσματικό ή όχι?

Δε θα υπάρχει κανένα πρόβλημα.. όμως δεν είναι καλή ιδέα να είναι το backup στον ίδιο δίσκο (κυρίως γι'αυτό άλλωστε παίρνουμε backup, σε περίπτωση που πάθει κάτι ο δίσκος...). Όπως επίσης δεν είναι καλή ιδέα να βάζεις χρήσιμα δεδομένα στον φάκελο /tmp...

ftso έγραψε:Επίσης η επαναφορά του backup υποθέτω μπορεί να γίνει απο την ίδια εγκατάσταση αν ακολουθήσει reboot? ή όχι?

Ναι, μπορεί να γίνει επαναφορά και μετά από reboot.
Ubuntu 9.10 32bit | 2 x Intel Core 2 Duo T5500 @ 1.66GHz | 2GB DDR2 RAM | Intel 950 Graphics
Richard Stallman wrote the compiler God used. The Big Bang was the Universe's first segfault.
Άβαταρ μέλους
sudobash
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 876
Εγγραφή: 13 Μάιος 2008, 20:11
Τοποθεσία: Κρήτη
Εκτύπωση

Re: Backup Script

Δημοσίευσηαπό The_Mentor » 22 Αύγ 2008, 17:31

Βασικά πρέπει να αναφερθεί και το εξής:

Πολλά συστήματα ΔΕΝ κάνουν automount τους δίσκους που είναι συνδεδεμένοι πάνω τους με αποτέλεσμα το path στο script να βγάζει error.
Μετά λοιπόν το boot το σύστημα ΠΡΕΠΕΙ να κάνει mount τους δίσκους (ιδιαίτερα αυτόν που αφορά το backup).

Και επειδή σε λίγο καιρό θα γίνουμε windows :o ο πιο απλός τρόπος είναι με την εγκατάσταση του pysdm ο οποίος είνα GUI storage device manager και μπορείτε να κάνετε automount, modify και τα λοιπά σε δίσκους / partitions. Το πρόγραμμα αυτό τροποποιεί το fstab επομένως χρειάζεται ΠΡΟΣΟΧΗ!!!
Mετά την εγκατάσταση θα το βρείτε στο System > Administration > Storage Device Manager

Το να κάνεις backup στον ίδιο δίσκο που έχεις και το λειτουργικό είναι ρώσικη ρουλέτα.
The_Mentor
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 990
Εγγραφή: 15 Μάιος 2008, 14:34
Εκτύπωση

Re: Backup Script

Δημοσίευσηαπό ftso » 22 Αύγ 2008, 17:50

Ετοιμάζω ένα script το οποίο θα εκτελείτε με τις εξής παραμέτρους:
Κώδικας: Επιλογή όλων
-n , --new       Give the parameters and start backup using cron
-h , --help      This screen
-j , --job       Make a backup now
-l , --log       View and-or clear logs
-r , --resrore   Restore a back file
-d , --delete    View and-or Delete backups or jobs or log or all
-v , --view      View backups and jobs that exists


Το script έχει περιορισμούς στην εισαγωγή παραμέτρων για την αποφυγή λάθους και έλεγχο πριν εκτελεστεί οτι όλα είναι OK.
Σε περίπτωση σφάλματος τυπώνει μήνυμα και αν εκτελείτε απο τον cron βάζει το σφάλμα στα logs.
Επίσης σκέφτομαι να βάλω και κώδικα που θα πετάει μήνυμα με k(dialog) κάθε φορά που ξεκινάει απο τον cron ή υπάρχει σφάλμα την ώρα που πάει να εκτελεστεί.

Επιτρέπει δυνατότητα πχ να κάνεις backup τον κατάλογο /home/user στο /home αλλά όχι το αντίθετο.
Το μόνο πλεονέκτημα εδώ είναι οτι μπορείς να κάνεις "επαναφορά συστήματος" κατα κάποιο τρόπο.

Μόλις το τελειώσω θα το ανεβάζω για debug και μετάφραση.
Αν δείτε τα αγγλικά μου θα πέσετε κάτω απο τα γέλια :lol: .

Μελλοντικά αν δουλέψει καλά, σκέφτομαι για μια πιο user friendly εφαρμογή βασισμένη σε αυτό που θα τρέχει πχ στο tray και θα έχει αρκετές ρυθμίσεις.


Πως σας φαίνεται?

Αυτά :)
Άβαταρ μέλους
ftso
Επίτιμο μέλος
Επίτιμο μέλος
 
Δημοσιεύσεις: 6409
Εγγραφή: 12 Μάιος 2008, 13:40
Τοποθεσία: Αθήνα
IRC: ftso
Εκτύπωση

Re: Backup Script

Δημοσίευσηαπό The_Mentor » 23 Αύγ 2008, 00:41

ftso εξήγησε μου λίγο με την -n τί εννοείς; Ποιά παράμετρο περνάς;
The_Mentor
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 990
Εγγραφή: 15 Μάιος 2008, 14:34
Εκτύπωση

Επόμενο

Επιστροφή στο Οδηγοί - How to - Tutorials

cron