Skip to content

Instantly share code, notes, and snippets.

@vncloudsco
Created December 7, 2018 09:02
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save vncloudsco/c6ea3b76d95f7b784b6595a87ad8b7bb to your computer and use it in GitHub Desktop.
Save vncloudsco/c6ea3b76d95f7b784b6595a87ad8b7bb to your computer and use it in GitHub Desktop.
SERVER_NAME=Backup_Vouu # thư mục sẽ lưu trữ dữ liệu
TIMESTAMP=$(date +"%F")
BACKUP_DIR="/root/backup/$TIMESTAMP"
MYSQL_USER="user"
MYSQL_PASSWORD="pass"
MYSQL=/usr/bin/mysql
MYSQLDUMP=/usr/bin/mysqldump
SECONDS=0
mkdir -p "$BACKUP_DIR/mysql"
databases=`$MYSQL --user=$MYSQL_USER -p$MYSQL_PASSWORD -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema|performance_schema|mysql)"`
echo "Starting Backup Database";
for db in $databases; do
$MYSQLDUMP --force --opt --user=$MYSQL_USER -p$MYSQL_PASSWORD --databases $db | gzip > "$BACKUP_DIR/mysql/$db.sql.gz"
done
echo "Finished";
echo '';
echo "Starting Backup Website";
# Loop through /home directory
for D in /var/www/*; do
if [ -d "${D}" ]; then #If a directory
domain=${D##*/} # Domain name
echo "- "$domain;
zip -r $BACKUP_DIR/$domain.zip /var/www/$domain/ -q -x home/$domain/wp-content/cache/**\* # Không backup cache của website
fi
done
# thay /var/www/ thành thư mục chứa dữ liệu cần backup
echo "Finished";
echo '';
echo "Starting Backup Nginx Configuration";
cp -r /etc/httpd/ $BACKUP_DIR/httpd/
cp -r /var/log $BACKUP_DIR/log
rm -rf /var/log/*
echo "Finished";
echo '';
size=$(du -sh $BACKUP_DIR | awk '{ print $1}')
echo "Starting Uploading Backup";
rclone cp $BACKUP_DIR "backupauto:$SERVER_NAME/$TIMESTAMP" >> /var/log/rclone.log 2>&1 # backup lên google drive. Thay backupauto thành remote name
rclone move $BACKUP_DIR "ondrive:$SERVER_NAME/$TIMESTAMP" >> /var/log/rclone.log 2>&1 # backup lên ondrive. Thay ondrive thành remote name
# Clean up
rm -rf $BACKUP_DIR
rclone -q --min-age 365d delete "backupauto:$SERVER_NAME" # xóa bản backup cũ quá 365 ngày
rclone -q --min-age 365d rmdirs "backupauto:$SERVER_NAME" # xóa bản thư mục backup cũ quá 365 ngày
echo "Finished";
echo '';
duration=$SECONDS
echo "Total $size, $(($duration / 60)) minutes and $(($duration % 60)) seconds elapsed."
@vncloudsco
Copy link
Author

vncloudsco commented Dec 9, 2018

SERVER_NAME="$(ifconfig | grep broadcast | awk {'print $2'})" đoạn này sẽ sửa thành như sau cho trường hợp vps có nhiều IP
=>>>
SERVER_NAME="$(ifconfig | grep broadcast | awk {'print $2'} | sed -n '1')" # muti IP

@vncloudsco
Copy link
Author

ba lệnh bên dưới có tác dụng như nhau khi các bạn muốn lấy 1 IP trong server nhiều ip

SERVER_NAME="$(ifconfig | grep broadcast | awk {'print $2'} | head -1)"
SERVER_NAME="$(ifconfig | grep broadcast | awk {'print $2'} | awk '{if(NR==1) print $0}')"
SERVER_NAME="$(ifconfig | grep broadcast | awk {'print $2'} | sed -n 1p)"

@minhpt0903
Copy link

Thank you so much!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment