Đồng bộ dữ liệu lên google drive từ linux

Chào mọi người, tiếp tục về chủ đề Linux hôm nay mình chia sẻ mọi người một công backup khá hữu ích trong việc backup và sao lưu hệ thống trên Linux đó là Rclone.

Rclone là gì?

Configure this as a Shared Drive [Team Drive]?

y] Yes
n] No [default]
y/n> n 

Chọn N để không cấu hình Drive team

--------------------
[da]
type = drive
scope = drive
token = {"access_token":"ya29.a0ARrdaM_z8fvjB4QmGeNmNyAOgjGtRj773tnXBZMa5AiT47npTjQEBXgNxv4B8HhNEO6ADh6PEX8kTjQ_J2pWdzgYpCSLpOJDxq8EJ5DNkgP3i85YyJiu476fL6ImPzmoR1LhC9A3xl6zsTqo5aYSWMBruZPW","token_type":"Bearer","refresh_token":"1//0g6QqPuoh3HBaCgYIARAAGBASNwF-L9Ir9dhX4soUISXlchHljWi1cYF2ybXySMDW19pmWemjtj7SyCXQ6uGzh4PnbJZv4pU_KP0","expiry":"2020-01-12T15:21:11.384653782+07:00"}
team_drive =
--------------------
y] Yes this is OK [default]
e] Edit this remote
d] Delete this remote
y/e/d> y

Chọn Y để đồng ý

Current remotes:

Name                 Type
====                 ====
backupdaiy           drive


e] Edit existing remote
n] New remote
d] Delete remote
r] Rename remote
c] Copy remote
s] Set configuration password
q] Quit config
e/n/d/r/c/s/q> q

Chọn q để thoát

root@vps:~#

Vậy là xong, giờ bạn có thể test với lệnh liệt kê thư mục trong kết nối remote:

rclone lsd remote:backupdaily

Tạo Script Backup lên Cloud

nano /root/backup.sh
#!/bin/bash
cwd=$[pwd]
SERVER_NAME=localhost
REMOTE_NAME=data
DATE=`date +%Y-%m-%d`
TIMESTAMP=$[date +%F]
BAK_DIR=/data-backup/
BACKUP_DIR=${BAK_DIR}/${TIMESTAMP}
MYSQL_USER="root"
MYSQL=/usr/bin/mysql
MYSQL_PASSWORD=Admin@123
Mysqldump=/usr/bin/mysqldump
rclone=/usr/sbin/rclone

SECONDS=0
exec >$BAK_DIR/logs/${DATE}.log
exec 2>&1

mkdir -p "$BACKUP_DIR/mysql"

echo "Starting Backup Database";
databases=`$MYSQL -u $MYSQL_USER -p$MYSQL_PASSWORD -e "SHOW databases;" | grep -Ev "[Database |information_schema | performance_schema | mysql | sys]" `

for db in $databases; do
echo ${db}
$Mysqldump -u $MYSQL_USER -p$MYSQL_PASSWORD --databases $db --quick --lock-tables=false | gzip> "$BACKUP_DIR/mysql/$db.gz"
done
echo "Finished";
echo '';

echo "Starting Backup Website";
mkdir -p $BACKUP_DIR/data
domain=${D##*/} # Domain name
echo "-" $domain;
zip -r -y -q $BACKUP_DIR/data/$TIMESTAMP.zip /var/www/html/  #Exclude cache
#fi
#done
echo "Finished";
echo '';

echo "Starting compress file";
size1=$[du -sh ${BACKUP_DIR} | awk '{print $1}']
cd ${BAK_DIR}
tar -czf ${TIMESTAMP}".tgz" $TIMESTAMP
cd $cwd
size2=$[du -sh ${BACKUP_DIR}".tgz"| awk '{print $1}']
rm -rf ${BACKUP_DIR}
echo "File compress from "$size1" to "$size2
echo "Finished";
echo '';

echo "Starting Backup Uploading";
$rclone copy ${BACKUP_DIR}.tgz "$REMOTE_NAME:/$SERVER_NAME/"
#$rclone -q delete --min-age 1m "$REMOTE_NAME:/$SERVER_NAME" #remove all backups older than 1 week
find ${BAK_DIR} -mindepth 1 -mtime +6 -delete
echo "Finished";
echo '';

duration=$SECONDS
echo "Total $size2, $[[$duration/60]] minutes and $[[$duration%60]] seconds elapsed."
chmod +x /root/backup.sh

Thử kiểm tra trên Cloud xem có thư mục mới với dữ liệu backup:

rclone lsl remote:backupdaily

Tạo cronjob tự động backup hàng ngày

crontab -e

0 2 * * * /root/backup.sh > /dev/null 2>&1

Lịch này là cứ đúng 2 giờ sáng hằng ngày sẽ tự động chạy Backup move Google Drive.

Tải file backup từ Cloud xuống VPS

Cách đơn giản nhất để khôi phục lại dữ liệu đó là tải file backup từ Cloud xuống máy tính của bạn, rồi tùy theo nhu cầu mà up trở lại lên VPS. Tuy nhiên, nếu muốn tải trực tiếp file backup về VPS, bạn có thể sử dụng luôn Rclone với câu lệnh copy.

rclone copy "remote:/backupdaily/2021-01-12" /var/www/html/

Lệnh trên sẽ copy folder 2021-01-12 trong thư mục backupdaily trên Cloud về thư mục /var/www/html/ của VPS

Lời kết

Công việc backup VPS/Server là vô cùng quan trọng, mình đã từng mất toàn bộ dữ liệu và không thể khôi phục được do chủ quan không backup. Hi vọng với bài viết này, các bạn sẽ có thêm sự lựa chọn cho phương pháp backup.

Tham khảo:

Rclone

Hướng dẫn dùng Rclone backup dữ liệu lên Google Drive

Bài Viết Liên Quan

Chủ Đề