• 02-09-2016, 09:52:50
    #1
    Bildiğiniz gibi http://www.mega.nz sitesi ücretsiz 50GB alan vermekte. Bu hizmeti sunucunuzun günlük yedeklerini almak için kullanabilirsiniz. Vereceğim script web sitenizin klasörünü ve tüm mysql veritabanını zipleyip mega.nz ye yükleyecektir. mega.nz ye yükleme için MegaTools isimli aracı kullanacağız. Kurulum işlemleri ubuntu 14.04'te test edilmiştir. Şimdi kuruluma geçelim.

    Sırayla komut satırında bunları çalıştırın.
    apt-get install -y build-essential pkg-config libglib2.0-dev libssl-dev libcurl4-openssl-dev libfuse-dev glib-networking
    wget http://megatools.megous.com/builds/megatools-1.9.97.tar.gz
    tar xzf megatools-1.9.97.tar.gz
    cd megatools-1.9.97
    ./configure && make && make install && ldconfig
    MegaTools /usr/local/bin klasörüne yüklenmiş olacaktır. Bu araç için ayar dosyası oluşturalım.
    nano /root/.megarc
    içerisine mega.nz ye giriş bilgilerimizi yazalım.
    [Login]
    Username = kayıtolunanmailadresi
    Password = şifre
    ctrl+o, enter ve ctrl+x e basarak text editörden çıkalım. komut satırından ayar dosyasının haklarını ayarlayalım.

    chmod 640 /root/.megarc
    megals yazdığınızda aşağıdaki şekilde gözüküyorsa sorun yok demektir.

    root@debian:~# megals 
    /Contacts
    /Inbox
    /Root
    /Trash
    şimdi yedekleme scriptimizi hazırlayalım. root klasörümüzün içine megabackup.sh dosyası oluşturalım ve içine bu kodları yapıştıralım.

    #!/bin/bash
    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/root
    SERVER="servername" #yedek alinacak domain adi
    DAYS_TO_BACKUP=7 #kaç gunluk yedek tutulacak
    WORKING_DIR="/root/backup_tmp_dir" #gecici dosyalarin konulacagi klasor
    
    BACKUP_MYSQL="true" #mysql yedeklenecekmi
    MYSQL_USER="root"
    MYSQL_PASSWORD="MyRootPassword"
    
    DOMAINS_FOLDER="/var/www" #site dosyalarinizin bulundugu klasor
    
    ##################################
    # Create local working directory and collect all data
    rm -rf ${WORKING_DIR}
    mkdir ${WORKING_DIR}
    cd ${WORKING_DIR}
    
    # Backup /etc folder
    cd /
    tar cJf ${WORKING_DIR}/etc.tar.gx etc
    cd - > /dev/null
    
    # Backup MySQL
    if [ "${BACKUP_MYSQL}" = "true" ]
    then
            mkdir ${WORKING_DIR}/mysql
            for db in $(mysql -u${MYSQL_USER} -p${MYSQL_PASSWORD} -e 'show databases;' | grep -Ev "^(Database|mysql|information_schema|performance_schema|phpmyadmin)$")
            do
                    #echo "processing ${db}"
                    mysqldump --opt -u${MYSQL_USER} -p${MYSQL_PASSWORD} "${db}" | gzip > ${WORKING_DIR}/mysql/${db}_$(date +%F_%T).sql.gz
            done
            #echo "all db now"
            mysqldump --opt -u${MYSQL_USER} -p${MYSQL_PASSWORD} --events --ignore-table=mysql.event --all-databases | gzip > ${WORKING_DIR}/mysql/ALL_DATABASES_$(date +%F_%T).sql.gz
    fi
    
    # Backup domains
    mkdir ${WORKING_DIR}/domains
    for folder in $(find ${DOMAINS_FOLDER} -mindepth 1 -maxdepth 1 -type d)
    do
            cd $(dirname ${folder})
            tar cJf ${WORKING_DIR}/domains/$(basename ${folder}).tar.xz $(basename ${folder})
            cd - > /dev/null
    done
    ##################################
    # Workaround to prevent dbus error messages
    export $(dbus-launch)
    
    # Create base backup folder
    [ -z "$(megals --reload /Root/backup_${SERVER})" ] && megamkdir /Root/backup_${SERVER}
    
    # Remove old logs
    while [ $(megals --reload /Root/backup_${SERVER} | grep -E "/Root/backup_${SERVER}/[0-9]{4}-[0-9]{2}-[0-9]{2}$" | wc -l) -gt ${DAYS_TO_BACKUP} ]
    do
            TO_REMOVE=$(megals --reload /Root/backup_${SERVER} | grep -E "/Root/backup_${SERVER}/[0-9]{4}-[0-9]{2}-[0-9]{2}$" | sort | head -n 1)
            megarm ${TO_REMOVE}
    done
    
    # Create remote folder
    curday=$(date +%F)
    megamkdir /Root/backup_${SERVER}/${curday} 2> /dev/null
    
    # Backup now!!!
    megacopy --reload --no-progress -l ${WORKING_DIR} -r /Root/backup_${SERVER}/${curday} > /dev/null
    
    # Kill DBUS session daemon (workaround)
    kill ${DBUS_SESSION_BUS_PID}
    rm -f ${DBUS_SESSION_BUS_ADDRESS}
    
    # Clean local environment
    rm -rf ${WORKING_DIR}
    exit 0
    sadece root kullanıcısı erişmesi için komut

    chmod 750 /root/megabackup.sh
    işlemler bitmiştir. crontaba da aşağıdaki şekilde ekleyebilirsiniz bunun için komut satırında "crontab -e" yazıp aşağıdaki kodu en alta yapıştırın

    04 04 * * * /root/megabackup.sh
    ubuntularda satır 47 de hata verebilir. Bunu çözmek için aşağıdaki paketi indirin.

    apt-get install dbus-x11
  • 02-09-2016, 11:04:16
    #2
    @letreset;

    Yararlı bi paylaşım olmuş bir çok kişinin işine yarayacaktır.
  • 08-09-2017, 16:18:24
    #3
    Üyeliği durduruldu
    @letreset; Peki Panelin almış olduğu tar.gz yedekleri nasıl yollayabiliriz?
  • 08-09-2017, 16:48:36
    #4
    Güzel bir paylaşım teşekkürler. Whm panelden ayar yaparak yandex’in sunmuş olduğu Ücretsiz yandex.disk bulut depolama alanınada yedek alabilirsiniz. Yandex daha fazla güven veriyor bana açıkcası.

    Whm panelden yandex diske yedek alma makalesini inceleyebilirsiniz.