Backup VPS lên Google Drive bằng Rclone

Sau mấy lần bị lên bờ xuống ruộng vì bị hack thì trong lúc khôi phục lại web Zen cũng tìm hiểu cách backup an toàn và tối ưu nhất cho web. Với những plugin của WP thì có khá nhiều plugin làm công việc backup. Nhưng với những bạn nào xài VPS và muốn auto backup thì sao. Rclone to Google Drive là câu trả lời cho việc này.

Những dịch vụ mà Rclone hỗ trợ trong việc backup VPS: Amazon S3, Amazon Drive, Google Drive, Google Cloud Storage, Openstack Swift / Rackspace cloud files / Memset, Memstore, Dropbox, Microsoft OneDrive, Hubic, Backblaze B2, The local filesystem, Yandex Disk, SFTP. Chi tiết thêm các bạn có thể tham khảo tại rclone.org

Cài Rclone để backup VPS lên Google Drive

  • Với linux 64bit lần lượt gõ các lệnh sau:
cd /root/
wget http://downloads.rclone.org/rclone-v1.36-linux-amd64.zip
unzip rclone-v1.36-linux-amd64.zip
\cp rclone-v*-linux-amd64/rclone /usr/sbin/
rm -rf rclone-*

 

  • Với linux 32bit lần lượt gõ các lệnh sau:
cd /root/

wget http://downloads.rclone.org/rclone-v1.36-linux-386.zip

unzip rclone-v1.36-linux-386.zip

\cp rclone-v*-linux-386/rclone /usr/sbin/

rm -rf rclone-*

Sử dụng câu lệnh rclone –help để xem hết những command line

Hướng dẫn Backup toàn bộ VPS lên Google Drive bằng Rclone
Hướng dẫn Backup VPS lên Google Drive bằng Rclone

Kết nối Rclone với Google Drive

Việc kết nối này chỉ làm một lần thôi.

rclone config

Bạn sẽ nhận được thông báo như trong hình.

Hướng dẫn Backup toàn bộ VPS lên Google Drive bằng Rclone
Hướng dẫn Backup VPS lên Google Drive bằng Rclone

Các bạn chọn n – New Remote

Có một dòng mới và yêu cầu bạn nhập tên. Bạn nhập tên nào cũng được, phần này để dể nhớ thôi. Sau khi nhập xong sẽ hiện ra các cổng mà Rclone có thể kết nối. Ở đây chúng ta chọn Google Drive (số 7). Vì chúng ta cần Backup VPS lên Google Drive.

Hướng dẫn Backup toàn bộ VPS lên Google Drive bằng Rclone
Hướng dẫn Backup VPS lên Google Drive bằng Rclone

Ở phần client_id và client_secret các bạn bỏ trống và Enter bạn sẽ nhận được hộp thoại

Use auto config?
* Say Y if not sure
* Say N if you are working on a remote or headless machine or Y didn’t work
y) Yes
n) No

Các bạn chọn n sẽ xuất hiện một link, các bạn coppy link này dán vào trình duyệt

Lưu ý: các bạn nên coppy link này ra file txt để kiểm tra xem có bị khoảng trống không. Nếu có thì các bạn bỏ đi

Hướng dẫn Backup toàn bộ VPS lên Google Drive bằng Rclone
Hướng dẫn Backup  VPS lên Google Drive bằng Rclone
Hướng dẫn Backup toàn bộ VPS lên Google Drive bằng Rclone
Hướng dẫn Backup VPS lên Google Drive bằng Rclone

 

Hướng dẫn Backup toàn bộ VPS lên Google Drive bằng Rclone
Hướng dẫn Backup VPS lên Google Drive bằng Rclone

Có mã rồi thì các bạn coppy rồi dán vào Enter verification code.

Sau đó sẽ có một hộp thoại xuất hiện, bạn chọn y (Yes it is OK).

Hướng dẫn Backup toàn bộ VPS lên Google Drive bằng Rclone
Hướng dẫn Backup VPS lên Google Drive bằng Rclone

Bây giờ bạn có thể test thử kết nối với lệnh:

rclone lsd backupzenchannel:   (name lúc đầu bạn đặt là gì thì thế vào đây)

Script backup toàn bộ VPS và upload Google Drive

Mình dùng code quản lý VPSSIM nên các bạn nào dùng code khác thì edit lại cho nó phù hợp nhé.

Tạo file backup.sh ở thư mục /root/

Thường bước tạo file thì mình cứ tạo trên máy rồi upload lên vps

Nội dung file bakup.sh

SERVER_NAME=ZenChannel

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 /home/*; do
	if [ -d "${D}" ]; then #If a directory
		domain=${D##*/} # Domain name
		echo "- "$domain;
		zip -r $BACKUP_DIR/$domain.zip /home/$domain/public_html/ -q -x /home/$domain/public_html/wp-content/cache/**\* #Exclude cache
	fi
done
echo "Finished";
echo '';

echo "Starting Backup Nginx Configuration";
cp -r /etc/nginx/ $BACKUP_DIR/nginx/
echo "Finished";
echo '';

size=$(du -sh $BACKUP_DIR | awk '{ print $1}')

echo "Starting Uploading Backup";
/usr/sbin/rclone move $BACKUP_DIR "remote:$SERVER_NAME/$TIMESTAMP" >> /var/log/rclone.log 2>&1
# Clean up
rm -rf $BACKUP_DIR
/usr/sbin/rclone -q --min-age 2d delete "backupzenchannel:$SERVER_NAME" #Remove all backups older than 2 day
/usr/sbin/rclone -q --min-age 2d rmdirs "backupzenchannel:$SERVER_NAME" #Remove all empty folders older than 2 day
echo "Finished";
echo '';

duration=$SECONDS
echo "Total $size, $(($duration / 60)) minutes and $(($duration % 60)) seconds elapsed."






Màu đỏ là những từ các bạn cần phải thay nhé

Sau khi up file lên thì các bạn chạy lệnh này: chmod +x /root/backup.sh

Nếu các bạn gặp lỗi

/root/backup.sh: line 1: $’\r’: command not found

thì các bạn có thể sử dụng câu lệnh này: sed -i ‘s/\r$//’ backup.sh

Nếu không có gì thay đổi thì các bạn chạy thử bằng câu lệnh: /root/backup.sh

Có 2 trường hợp xảy ra. 1 là sẽ không có thông báo lỗi nào xảy ra. 2 là sẽ có một số dòng thông báo lỗi: zip error: Nothing to do!

Hướng dẫn Backup toàn bộ VPS lên Google Drive bằng Rclone
Hướng dẫn Backup VPS lên Google Drive bằng Rclone

Trong trường hợp này thì các bạn hãy yên tâm, cứ chờ cho code chạy xong thì vào Google Drive của mình để kiểm tra, thì sẽ vẫn thấy file bakup.

Hướng dẫn Backup toàn bộ VPS lên Google Drive bằng Rclone
Hướng dẫn Backup VPS lên Google Drive bằng Rclone

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

Các bạn dùng FTP vào thư mục /tmp tạo file crontab có nội dung như sau:

59 23 * * * /root/backup.sh > /home/vpssim.demo/logs/backup.log 2>&1

 

  • 10/10
    Nội Dung - 10/10
10.0/10
Sending
Your rating:
User Rating 2.5/10 (2 votes)
2.5/10
Comments Rating 2.5/10 (2 reviews)

Comments

comments

2 Comments

  1. Sơn Trần 23/06/2017
    • Zen 24/06/2017

Leave a Reply

Sending
Your rating: