Bildiğiniz gibi mega 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 16’da 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ş oluyor. Bu yazılım için ayar dosyası Oluşturuyoruz.
nano /root/.megarc
içerisine mega.nz ye giriş bilgilerimizi yazalım.
[Login]
Username = email adresi
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
şimdi yedekleme yazılımızı 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 tamamdır. 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
İşlemimiz Tamamdır
Alıntı hasan atilan kardeşinden yapilmistir