Trước đây mình vẫn dùng VPS để chứa các bản backup sử dụng công cụ Duplicity hoặc Rsync. Tuy nhiên, hiện giờ đã có một phương pháp mới hiệu quả hơn, tiết kiệm hơn (Free), đó là sao lưu lên Cloud với Rclone.

backup-server-google-drive

Rclone là một công cụ đồng bộ hóa dữ liệu tương tự Rsync nhưng lại được tập trung phát triển chức năng kết nối với các dịch vụ lưu trữ đám mây.

Ưu điểm của việc sử dụng dịch vụ lưu trữ đám mây đó là tốc độ cao (do có server được đặt trên khắp thế giới), an toàn dữ liệu (không lo ngại các vấn đề phần cứng, network) và nhất là hầu hết đều Free. Mình đặc biệt thích những thứ Free!

Rclone hỗ trợ rất nhiều dịch vụ Cloud thông dụng như:

  • Google Drive
  • Amazon S3
  • Openstack Swift / Rackspace cloud files / Memset Memstore
  • Dropbox
  • Google Cloud Storage
  • Amazon Drive
  • Microsoft OneDrive
  • Hubic
  • Backblaze B2
  • Yandex Disk
  • SFTP
  • The local filesystem

Xem thêm test tốc độ upload Rclone.

Giờ thay vì backup đưa lên VPS khác để lưu trữ, mình chuyển sang sử dụng Google Drive, dung lượng miễn phí 15GB, mua thêm cũng khá rẻ, chỉ 45k/tháng là được 100GB rồi. Bạn nào có tài khoản Google Apps miễn phí nữa thì càng tuyệt vời.

Trong bài viết này sẽ có 2 phần chính, 1 là cài đặt Rclone trên VPS, 2 là sử dụng Rclone để upload backup lên Google Drive. Với những cloud service khác các bạn làm tương tự.

Việc tạo file backup toàn bộ dữ liệu VPS mình đã hướng dẫn chi tiết trong bài viết Hướng dẫn tự động sao lưu toàn bộ VPS, bài viết này sẽ chỉ tập trung vào việc cài đặt tự động upload file nén lên Google Drive. Xem thêm hướng dẫn sử dụng Rclone với Google Drive và các dịch vụ cloud khác tại Rclone Docs.

Kịch bản tự động backup như sau:

  • Sao lưu toàn bộ database MySQL, mỗi database một file .gz
  • Sao lưu toàn bộ code trong thư mục /home/domain.com/public_html/
  • Sao lưu toàn bộ cấu hình Nginx trong thư mục /etc/nginx/conf.d/
  • Tổng hợp tất cả dữ liệu vào 1 folder
  • Upload file backup lên Google Drive vào lúc 2h00 sáng
  • Tự động xóa file backup trên VPS sau khi upload xong, xóa file backup trên Cloud nếu quá 2 tuần

Giờ bắt đầu vào việc nhé.

I. Hướng dẫn cài đặt Rclone

1. Cài đặt Rclone

Rclone là một chương trình dòng lệnh nên mình sẽ down xuống rồi di chuyển file chạy đến thư mục /usr/sbin/ của VPS để sử dụng sau này.

Chú ý : Nếu bạn đã cài đặt phiên bản cũ, cũng chỉ cần chạy chuỗi lệnh dưới để update. Tham khảo Changelog các phiên bản.

– Cài đặt bản mới nhất với hệ điều hành Linux 64bit

cd /root/
wget https://downloads.rclone.org/rclone-current-linux-amd64.zip
unzip rclone-current-linux-amd64.zip
\cp rclone-v*-linux-amd64/rclone /usr/sbin/
rm -rf rclone-*

– Cài đặt bản mới nhất với hệ điều hành Linux 32bit

cd /root/
wget https://downloads.rclone.org/rclone-current-linux-386.zip
unzip rclone-current-linux-386.zip
\cp rclone-v*-linux-386/rclone /usr/sbin/
rm -rf rclone-*

Link download trực tiếp các phiên bản Rclone.

Giờ bạn có thể sử dụng lệnh rclone để xem thêm thông tin sử dụng.

2. Một số câu lệnh thông dụng

Các câu lệnh sử dụng Rclone thường có dạng như sau:

rclone command <parameters> <parameters...>

Trong đó command là câu lệnh, parameters là các tham số.

Một số lệnh thông dụng khi dùng Rclone:

  • rclone config – Cấu hình kết nối đến dịch vụ cloud.
  • rclone copy – Copy files từ server đến cloud, skip nếu đã tồn tại dữ liệu.
  • rclone sync – Synchronize giữa server và cloud, chỉ update dữ liệu trên cloud mà thôi.
  • rclone move – Move files từ server lên cloud.
  • rclone delete – Xóa dữ liệu của folder.
  • rclone purge – Xóa dữ liệu của folder và toàn bộ nội dung bên trong.
  • rclone mkdir – Tạo folder.
  • rclone rmdir – Xóa folder trống tại đường dẫn.
  • rclone rmdirs – Xóa toàn bộ folder trống tại đường dẫn. Bộ đếm thời gian bao gồm:
    • ms – Milliseconds
    • s – Seconds
    • m – Minutes
    • h – Hours
    • d – Days
    • w – Weeks
    • M – Months
    • y – Years
  • rclone check – Kiểm tra dữ liệu server và cloud có đồng bộ hay không.
  • rclone ls – Liệt kê toàn bộ dữ liệu gồm size và path.
  • rclone lsd – Liệt kê toàn bộ thư mục.
  • rclone lsl – Liệt kê toàn bộ dữ liệu gồm modification time, size và path.
  • rclone size – Trả về kích thước thư mục.

Thông tin chi tiết từng lệnh bạn xem thêm ở đây.

II. Backup VPS lên Cloud với Rclone

1. Tạo kết nối với Google Drive

Đầu tiên chúng ta sẽ cấu hình kết nối Rclone với Google Drive, việc này chỉ phải làm 1 lần duy nhất. Kết nối được tạo tên remote

Kết nối SSH với VPS rồi chạy lệnh:

rclone config

Bạn sẽ nhận được thông báo: No remotes found - make a new one, nhập n rồi nhấn Enter để tạo kết nối mới.

Ở dòng name bạn nhập remote để đặt tên cho kết nối, bạn có thể chọn tên nào cũng được.

Một danh sách các dịch vụ cloud xuất hiện, hãy chọn số 11, Google Drive rồi nhấn Enter.

Ở 2 dòng tiếp theo Client IDClient Secret bạn hãy để trống nhấn Enter.

Mục Scope that rclone should use when requesting access from drive chọn 1 – drive

Tiếp theo, để trống với ID of the root folderService Account Credentials JSON file path

Khi được hỏi Use auto config? hãy nhập n rồi nhấn Enter. Ngay lập tức, Rclone sẽ đưa ra một đường link, bạn có thể click thẳng vào đó hoặc copy rồi paste vào trình duyệt.

tao-ket-noi-google-drive-2

Giao diện sẽ xuất hiện như sau:

cap-quyen-cho-rclone-truy-cap-google-drive

Nhấn nút Allow để đồng ý, sau đó bạn sẽ nhận được đoạn mã verification code như hình dưới:

ma-verification-code

Quay trở lại cửa sổ SSH, copy rồi paste code này vào dòng Enter verification code> rồi nhấn Enter.

Chọn n tức no đối với Configure this as a team drive?

Rclone cần xác nhận thông tin một lần nữa, bạn nhấn y để đồng ý rồi nhấn q để thoát khỏi giao diện cấu hình kết nối.

Toàn bộ quá trình cài đặt sẽ tương tự như sau (bôi đỏ là cần nhập input):

rclone config
No remotes found - make a new one
n) New remote
s) Set configuration password
q) Quit config
n/s/q> n
name> remote
Type of storage to configure.
Choose a number from below, or type in your own value
 1 / Alias for a existing remote
   \ "alias"
 2 / Amazon Drive
   \ "amazon cloud drive"
 3 / Amazon S3 Compliant Storage Providers (AWS, Ceph, Dreamhost, IBM COS, Minio)
   \ "s3"
 4 / Backblaze B2
   \ "b2"
 5 / Box
   \ "box"
 6 / Cache a remote
   \ "cache"
 7 / Dropbox
   \ "dropbox"
 8 / Encrypt/Decrypt a remote
   \ "crypt"
 9 / FTP Connection
   \ "ftp"
10 / Google Cloud Storage (this is not Google Drive)
   \ "google cloud storage"
11 / Google Drive
   \ "drive"
12 / Hubic
   \ "hubic"
13 / Local Disk
   \ "local"
14 / Mega
   \ "mega"
15 / Microsoft Azure Blob Storage
   \ "azureblob"
16 / Microsoft OneDrive
   \ "onedrive"
17 / OpenDrive
   \ "opendrive"
18 / Openstack Swift (Rackspace Cloud Files, Memset Memstore, OVH)
   \ "swift"
19 / Pcloud
   \ "pcloud"
20 / QingCloud Object Storage
   \ "qingstor"
21 / SSH/SFTP Connection
   \ "sftp"
22 / Webdav
   \ "webdav"
23 / Yandex Disk
   \ "yandex"
24 / http Connection
   \ "http"
Storage> 11
Google Application Client Id - leave blank normally.
client_id>
Google Application Client Secret - leave blank normally.
client_secret>
Scope that rclone should use when requesting access from drive.
Choose a number from below, or type in your own value
 1 / Full access all files, excluding Application Data Folder.
   \ "drive"
 2 / Read-only access to file metadata and file contents.
   \ "drive.readonly"
   / Access to files created by rclone only.
 3 | These are visible in the drive website.
   | File authorization is revoked when the user deauthorizes the app.
   \ "drive.file"
   / Allows read and write access to the Application Data folder.
 4 | This is not visible in the drive website.
   \ "drive.appfolder"
   / Allows read-only access to file metadata but
 5 | does not allow any access to read or download file content.
   \ "drive.metadata.readonly"
scope> 1
ID of the root folder - leave blank normally.  Fill in to access "Computers" folders. (see docs).
root_folder_id>
Service Account Credentials JSON file path  - leave blank normally.
Needed only if you want use SA instead of interactive login.
service_account_file>
Remote config
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
y/n> n
If your browser doesn't open automatically go to the following link: https://accounts.google.com/o/oauth2/auth?access_type=offlinexxxx
Log in and authorize rclone for access
Enter verification code> 4/AABw8gMKPxxxxxxxxxx
Configure this as a team drive?
y) Yes
n) No
y/n> n
--------------------
[remote]
type = drive
client_id =
client_secret =
scope = drive
root_folder_id =
service_account_file =
token = {"access_token":"xxx","token_type":"Bearer","refresh_token":"1/xxx","expiry":"2018-05-16T10:55:03.488381196+07:00"}
--------------------
y) Yes this is OK
e) Edit this remote
d) Delete this remote
y/e/d> y
Current remotes:

Name                 Type
====                 ====
remote               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

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:

2. Tạo kết nối với Amazon Drive/One Drive/Yandex

Hiện nay, bên cạnh GG Drive, các Cloud khác cũng dần trở nên phổ biến và có nhiều ưu đãi cho người dùng. Việc tạo kết nối tới Amazon Drive/OneDrive/Yandex tương tự GG Drive, chỉ khác biệt bước lấy access_token.
Lưu ý: Đối với OneDrive cần chọn đúng loại tài khoản cá nhân Personal/doanh nghiệp Bussiness.

Việc xác thực được thực hiện qua remote machine có trình duyệt (ví dụ máy tính của bạn) với lệnh rclone authorize "tên_cloud".

Ví dụ cụ thể OneDrive, đến bước xác thực:

Microsoft App Client Id - leave blank normally.
client_id>
Microsoft App Client Secret - leave blank normally.
client_secret>
Remote config
Choose OneDrive account type?
 * Say b for a OneDrive business account
 * Say p for a personal OneDrive account
b) Business
p) Personal
b/p> p
Use auto config?
 * Say Y if not sure
 * Say N if you are working on a remote or headless machine
y) Yes
n) No
y/n> n
For this to work, you will need rclone available on a machine that has a web browser available.
Execute the following on your machine:
        rclone authorize "onedrive"

Chạy lệnh rclone authorize "onedrive" tại máy đang sử dụng để lấy access_token.

  1. Tải Rclone về máy cá nhân (bản cho Windows/OSX) tại Rclone Downloads. Cụ thể, WindowsAMD64 – 64 Bit được rclone-v1.42-windows-amd64. Bên trong có file rclone.exe để chạy trên cửa sổ lệnh. Ví dụ đường dẫn file D:\Rclone/rclone.exe
  2.  Mở ứng dụng CMD của Windows (Run – CMD) rồi chạy lệnh trên với đường dẫn file. Ví dụ, D:\Rclone\rclone.exe authorize "onedrive"
  3. Browser bật ra yêu cầu bạn đăng nhập để xác thực. Thành công sẽ hiện thông báo Success. Go back to rclone to continue trên trình duyệt. Quay lại ứng dụng CMD bạn copy access_token để xác thực bên VPS.
C:\Users\HocVPS>D:\Rclone\rclone.exe authorize "onedrive"

Choose OneDrive account type?
* Say b for a OneDrive business account
* Say p for a personal OneDrive account
b) Business
p) Personal
b/p> p
If your browser doesn't open automatically go to the following link: http://127.0.0.1:53682/auth
Log in and authorize rclone for access
Waiting for code...
Got code
Paste the following into your remote machine --->
{"access_token":"EwD4Aq1DBAAUcSSzoTJJxxx","expiry":"2018-05-16T11:43:25.3184173+07:00""}
<---End paste

Chú ý,  access_token là một chuỗi kí tự liền mạch nên khi copy từ CMD bạn paste qua trình chỉnh sửa như EmEditor hay Notepad++ để loại bỏ hoàn toàn các kí tự thừa gây cách dòng.

3. Script backup toàn bộ VPS và upload lên Cloud

Trong bài Hướng dẫn tự động sao lưu toàn bộ VPS mình đã chia sẻ script tự động backup VPS, tuy nhiên trong bài này mình sẽ chỉnh sửa lại một chút, để script tự động upload lên Cloud sau khi tạo xong file nén.

– Script hoạt động với Rclone phiên bản 1.35 trở lên.
– Kết nối Rclone với Cloud tên remote, nếu bạn sử dụng kết nối khác thì thay đổi tên trong script
– Nếu bạn sử dụng hệ quản trị khác HocVPS thì sử dụng script 2 và sửa thông tin đăng nhập MySQL, đường dẫn thư mục source code và thư mục Nginx Conf

Script này mình viết theo cấu trúc folder trên server do HocVPS Script quản lý.

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

nano /root/backup.sh

– Copy toàn bộ nội dung script bên dưới rồi paste vào (áp dụng với HocVPS Script 2.0 trở lên)

# HocVPS Script Plugin - Backup Server and Upload to Cloud

#!/bin/bash

SERVER_NAME=HOCVPS_BACKUP

TIMESTAMP=$(date +"%F")
BACKUP_DIR="/root/backup/$TIMESTAMP"
MYSQL=/usr/bin/mysql
MYSQLDUMP=/usr/bin/mysqldump
SECONDS=0

mkdir -p "$BACKUP_DIR/mysql"

echo "Starting Backup Database";
databases=`$MYSQL -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema|performance_schema|mysql)"`

for db in $databases; do
	$MYSQLDUMP --force --opt $db | gzip > "$BACKUP_DIR/mysql/$db.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/conf.d/ $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 2w delete "remote:$SERVER_NAME" #Remove all backups older than 2 week
/usr/sbin/rclone -q --min-age 2w rmdirs "remote:$SERVER_NAME" #Remove all empty folders older than 2 week
/usr/sbin/rclone cleanup "remote:" #Cleanup Trash
echo "Finished";
echo '';

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

# HocVPS Script Plugin - Backup Server and Upload to Cloud
# Version: 1.1
#!/bin/bash

. /etc/hocvps/scripts.conf

SERVER_NAME=HOCVPS_BACKUP

TIMESTAMP=$(date +"%F")
BACKUP_DIR="/root/backup/$TIMESTAMP"
MYSQL_USER="root"
MYSQL=/usr/bin/mysql
MYSQL_PASSWORD=$mariadbpass
MYSQLDUMP=/usr/bin/mysqldump
SECONDS=0

mkdir -p "$BACKUP_DIR/mysql"

echo "Starting Backup Database";
databases=`$MYSQL --user=$MYSQL_USER -p$MYSQL_PASSWORD -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema|performance_schema|mysql)"`

for db in $databases; do
	$MYSQLDUMP --force --opt --user=$MYSQL_USER -p$MYSQL_PASSWORD $db | gzip > "$BACKUP_DIR/mysql/$db.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/conf.d/ $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 2w delete "remote:$SERVER_NAME" #Remove all backups older than 2 week
/usr/sbin/rclone -q --min-age 2w rmdirs "remote:$SERVER_NAME" #Remove all empty folders older than 2 week
/usr/sbin/rclone cleanup "remote:" #Cleanup Trash
echo "Finished";
echo '';

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


Lưu ý:

  • Script trên sẽ back up toàn bộ database, mỗi database nén thành một file .gz, lưu trong thư mục mysql
  • Mỗi thư mục chứa website được nén lại thành 1 file .zip
  • Toàn bộ cấu hình Nginx của các website được lưu trong thư mục nginx
  • SERVER_NAME mặc định là HOCVPS_BACKUP, nếu muốn thay đổi folder trên Cloud bạn hãy thay đổi tham số này.
  • Muốn điều chỉnh thời gian xóa file backup, bạn sửa thông số ở dòng deletermdirs. Hiện tại, tự động xóa file/folder cũ hơn 2 tuần.

– Nhấn Ctrl+O, Enter để lưu và Ctrl+X để thoát.

– Phân quyền cho script

chmod +x /root/backup.sh

– Vậy là xong rồi đó, giờ bạn có thể test lại bằng cách chạy lệnh:

/root/backup.sh

Thử kiểm tra trên Cloud xem có thư mục mới với dữ liệu backup chưa nhé, hoặc test với lệnh:

rclone lsl remote:HOCVPS_BACKUP

Nếu không có vấn đề gì sẽ thấy kết quả trả về có một thư mục là ngày hiện tại, bên trong có chứa file nén website (.zip), cấu hình Nginx (.conf) và database (.gz).

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

Giờ mình sẽ cho script tự động chạy lúc 2h00 sáng.

EDITOR=nano crontab -e

Dán nội dung sau vào cửa sổ Terminal

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

Nhấn Ctrl+O, Enter để lưu và Ctrl+X để thoát

Vậy là xong, cứ 2h sáng hàng ngày script sẽ tự động chạy, backup toàn bộ dữ liệu của VPS rồi upload lên Cloud. Đồng thời, dữ liệu backup trên VPS sẽ được xóa luôn sau khi upload xong.

Xem thêm hướng dẫn sử dụng cronjob.

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

Cách đơn giản nhất để bạn khôi phục lại dữ liệu đó là tải file backup từ Cloud xuống máy tính, 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.

Ví dụ tham khảo:

rclone copy "remote:/HOCVPS_BACKUP/2017-11-01" /root/

Lệnh trên sẽ copy folder 2017-11-01 trong thư mục HOCVPS_BACKUP trên Cloud về thư mục /root/ của VPS. Tốc độ upload và download từ Cloud đều rất nhanh.
Sau khi copy dữ liệu backup về VPS, bạn tiến hành giải nén file zip, copy thư mục web và nginx về đúng vị trí đồng thời tiến hành import database.

IV. Tổng kết

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

Giờ đến lượt các bạn làm theo đó, cần hỗ trợ gì thêm hoặc góp ý gì cứ comment bên dưới nhé.

Tagged:

Comment của bạn

Lưu ý: tất cả comment đều được kiểm duyệt cẩn thận! Nếu có code bạn hãy up lên pastebin.com rồi để lại link trong comment.

965 Comments

  1. Quan 11 comment

    mình làm theo và bị lỗi này: Failed to save new token in config file
    đã thử nhiều lân mà vẫn bị. Trên vps khác thì ko sao. Vậy phải làm sao ạ

        1. Việt Phương Moderator

          copy toàn bộ log quá trình thực hiện của bạn qua mình xem cho

          1. Việt Phương Moderator

            Bạn thử view thư mục, upload/download qua kết nối remote đã thiết lập coi. Đồng thời bạn xem file /root/.config/rclone/rclone.conf có nội dung không

          2. Việt Phương Moderator

            Trong bài viết đó bạn. Liệt kê thư mục, copy thư mục rclone lsd và rclone copy
            Còn xem nội dung file thì cat /root/.config/rclone/rclone.conf

          3. Quan 11 comment

            cảm ơn bạn, mình biết chổ sai rồi. Do mình làm sai bươc “Script backup toàn bộ VPS và upload lên Cloud”.

  2. Huy 3 comment

    Cho mình hỏi sử dụng cái này không thể backup website phải wordpress được ạ.? Sử dụng cứ báo lỗi còn website wordpress thì bình thường

    1. Việt Phương Moderator

      Thông báo lỗi gì vậy bạn. Đây là backup thư mục nên website nào cũng backup đc. Script sẽ backup thư mục /home/domain/public_html thôi, đâu quan tâm nội dung bên trong là gì

  3. NAM 21 comment

    admin ơi cho mình hỏi ngu câu này xíu ? mình tạo thêm gói VPS mới trên Vultr để test

    Ở trên admin có nói là: “Sau khi copy dữ liệu backup về VPS, bạn tiến hành giải nén file zip, copy thư mục web và nginx về đúng vị trí đồng thời tiến hành import database.”

    Mình down tất cả từ google driver về sau đó up lên VPS mới thì mình chỉ cần up “code thư mục web” và “import database” là web chạy okie rồi ! mình check kiểm tra không thiếu thứ gì ?
    Vậy có cần up file nginx vào đè lên cái file đang có sẵn ở /etc/nginx/conf.d nữa không admin ???

    Mình rất băn khoăn mong admin giải đáp ? admin có thể cho mình biết thêm file nginx chắc năng cụ thể là làm gì không ? Cảm ơn admin !

    1. Việt Phương Moderator

      File Nginx Conf dùng để cấu hình riêng cho domain của webserver Nginx. Bạn copy đè nếu cấu hình cũ bạn cần dùng
      Vì vốn dĩ khi tạo website bằng HocVPS thì đã tự động tạo Nginx Conf của website đó rồi

      1. NAM 21 comment

        Cảm ơn admin ! cho mình hỏi thêm xíu !

        Mình hiểu là cài HocVPS stript là cài MariaDB. Vậy có cách nào chuyển đổi file database từ MariaDB –> về mySQL không admin ???

        Tức là mình muốn thử test lấy dữ liệu từ Cloud về up lên sharehost chạy apache – control panel mà mình up thì tất nhiên là file SQL nó ko tương thích !

        1. Việt Phương Moderator

          MariaDB là một nhánh của MySQL( một trong những CSDL phổ biến trên thế giới ), là máy chủ cơ sở dữ liệu cung cấp các chức năng thay thế cho MySQL. Nên bạn dùng được tương thích ok nhé

        2. NAM 21 comment

          Mình mới đọc tài liệu thấy MariaDB và MySQL khá tương thích với nhau và chính mình cũng import database từ sharehost cũ lên VPS mới cài hocVPS cũng thấy không bị lỗi gì cả !

          Mà sao giờ mình chuyển ngược lại bị lỗi vậy admin ? Hình ảnh lỗi: http://i.imgur.com/mpfHN7D.png

          1. Việt Phương Moderator

            Bạn import trên user gốc ban đầu nhé chứ k import vào database khác. Nếu bạn import vào 1 database thì phải là database cùng tên với database ban đầu

          2. NAM 21 comment

            admin có thể nói rõ hơn được ko ạ ? Sorry mình vẫn chưa hiểu lắm ‘:(

            Vì khi tạo user mới với database mới thì ko thể lấy tên giống như trong file wp-config.php được vì cái gói hosting khi mình mua như bên A2hosting chẳng hạn thì cái tên mình lấy ban đầu nó sẽ lấy những kí tự đầu tiên để mặc định là “tiền tố” luôn.
            Mình chỉ có thể thêm vào đằng sau “tiền tố” thôi chứ ko chỉnh sửa tên user theo ý muốn được !
            Hình ảnh: http://i.imgur.com/53wIhTI.png

          3. Việt Phương Moderator

            Tức có thể trong thiết lập database chỉ cho import database cùng tên. Ví dụ database bạn tên A, backup lại thì sau này restore chỉ đc restore vào database tên A, không thể restore vào database tên khác
            Nên thường lúc restore bằng PHPMyADmin bạn không chọn cụ thể 1 database nào cả mà ấn thẳng vào import luôn
            Quá trình import database không cần quan tâm user, do database A chúng ta có thể phân cho user A/B/C/D quản lý đều được

  4. Nam 21 comment

    Mình có 2 câu hỏi mong muốn admin giải đáp với :
    — “Thử kiểm tra trên Cloud xem có thư mục mới với dữ liệu backup chưa nhé” : Mình vào phần filemanager và kiểm tra chỉ thấy code ở phần public_html còn không thấy file backup hay root gì ở đâu cả ! Nhưng đến hôm sau mình check trên google driver thì đã backup ngon lành ! Vậy admin có thể nói rõ cho mình hiểu là file backup là file ẩn chỉ dùng lệnh mới thấy phải không ?
    — Mình muốn làm thủ công đưa dữ liệu từ google driver lên một host hoặc VPS khác admin có thể chỉ chi tiết giúp mình được ko ? hoặc admin có link bài viết nào chi tiết cho mình xin với ?
    p/s: Do mình trước đây sài apache nên khi backup dữ liệu chỉ là file dữ liệu web và file sql ko có file nginx ! giờ mình mới cài và sử dụng HOCVPS Script ạ !

    Cảm ơn admin !

    1. Việt Phương Moderator

      1. Cloud là GG Driver nhé bạn. Script move backup nên sẽ không còn trên VPS
      2. Bạn cài Rclone lên VPS mới để copy từ Cloud về hoặc tải backup lên bằng sFTP/FTP.

  5. Nam 21 comment

    admin cho mình hỏi nhiều VPS backup về cùng một tài khoản google driver được ko nhỉ ?

    1. Việt Phương Moderator

      Được bạn nhé. Bạn để auto backup khác giờ ra. VPS này 2h thì VPs kia 4h chẳng hạn

  6. Tan Hoang 38 comment

    cài Crontab là cài cái nào vậy bạn, mình chưa hiểu, còn mình cài ý như hướng dẫn trên và nó cũng đã kết nối ok với drive của mình rồi, mình xem trong root/backup nó cũng tự động tạo backup lúc 2h sáng như theo hướng dẫn bài tạo backup tự động rồi. vấn đề là không thấy có bản backup được lưu trên drive thôi. bạn xem kết nối như này là ok rồi đúng không? https://www.flickr.com/gp/124129762@N08/2PSAgc

    1. Việt Phương Moderator

      Chưa rồi. Bạn backup thủ công ra kết quả gì
      Và bạn đã thực hiện phần 4. Tạo cronjob tự động backup hàng ngày chưa?

      1. Tan Hoang 38 comment

        Mình tạo tự động backup hàng ngày rồi mà, trong thư mục root/backup của mình đã có file zip backup hàng ngày rồi, vấn đề mình đã kết nối rclone với google drive nhưng nó vẫn không tự động copy từ mục backup lên Drive.

      2. Tan Hoang 38 comment

        Mình thử chạy backup thủ công thấy ok rồi bạn à, kiểm tra trên drive đã có file backup giờ chỉ đợi xem nó có backup như theo lịch đã đặt lúc 2h sáng hay không thôi, cảm ơn bạn nhé.

  7. Tan Hoang 38 comment

    Mình kết nối hết như hướng dẫn rồi sao ko thấy nó tự động backup lên Drive nhỉ?

  8. Nguyễn Công 17 comment

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

    A cho e hỏi nếu e muốn để nó 7 ngày mới backup 1 lần thì như nào ạ.

    1. Việt Phương Moderator

      0 2 * * 1 /root/backup.sh > /dev/null 2>&1 Backup vào 2h00 thứ Hai hàng tuần

      1. Nguyễn Công 17 comment

        Mấy cái * kia là ứng với những thông số nào vậy a. cảm ơn anh đã hỗ trợ e

    1. Việt Phương Moderator

      Không truy cập được tài khoản root vào MySQL. Bạn đổi pass tk root gần đây à? Bạn thử dùng HocVPS menu xem có tạo được database không

          1. SvenSeaGal 36 comment

            hôm trước bạn chỉ mình cập nhật lại pass ở /etc/hocvps/scripts.conf
            xong tạo được databases rồi mà giờ nó ko backup được mysql

  9. Tung 43 comment

    Khi em thực hiện lệnh move thì thấy file không bị xoá tại VPS và trên Hubic không thấy file nào cả:
    /usr/sbin/rclone move /home/backup/ “remote:/Backup/” >> /var/log/rclone.log 2>&1

    Em xem log thì thấy như sau
    2017/06/22 15:47:51 ERROR : Attempt 1/3 failed with 1 errors and: Bad Header ‘X-Container-Bytes-Used’: ”: strconv.ParseInt: parsing “”: invalid syntax
    2017/06/22 15:47:52 ERROR : Attempt 2/3 failed with 1 errors and: Bad Header ‘X-Container-Bytes-Used’: ”: strconv.ParseInt: parsing “”: invalid syntax
    2017/06/22 15:47:53 ERROR : Attempt 3/3 failed with 1 errors and: Bad Header ‘X-Container-Bytes-Used’: ”: strconv.ParseInt: parsing “”: invalid syntax
    2017/06/22 15:47:53 Failed to copy: Bad Header ‘X-Container-Bytes-Used’: ”: strconv.ParseInt: parsing “”: invalid syntax
    2017/06/22 15:48:40 ERROR : Attempt 1/3 failed with 1 errors and: Bad Header ‘X-Container-Bytes-Used’: ”: strconv.ParseInt: parsing “”: invalid syntax
    2017/06/22 15:48:41 ERROR : Attempt 2/3 failed with 1 errors and: Bad Header ‘X-Container-Bytes-Used’: ”: strconv.ParseInt: parsing “”: invalid syntax
    2017/06/22 15:48:42 ERROR : Attempt 3/3 failed with 1 errors and: Bad Header ‘X-Container-Bytes-Used’: ”: strconv.ParseInt: parsing “”: invalid syntax

    Mong bác chỉ giúp

  10. Tung 43 comment

    Bác Luân cho em hỏi chút
    Em thực hiện với HubiC nhưng khi gõ lệnh: rclone lsd remote:

    Thì ra như sau

    5835555412 0001-01-01 00:00:00 3691 default
    2823588386 0001-01-01 00:00:00 32 default_segments

    Thông báo vậy có bị lỗi gì không bác

  11. Nguyen Hieu 2 comment

    Loay hoay mãi mới được. tất cả là tại lúc đặt tên của kết nối không như hướng dẫn là “remote”
    Đâm ra lúc chạy lệnh toàn bị lỗi không upload được.

    Ad nên chú thích về đoạn Bash backup.sh là thay ‘remote’ bằng tên đặt cho kết nối ấy.

    1. Việt Phương Moderator

      Mình có lưu ý mà 🙂
      Script hoạt động với Rclone phiên bản 1.35 trở lên. Kết nối Rclone với Cloud tên remote.

  12. Vi Nguyen 13 comment

    admin cho hỏi
    mình đã backup thành công, đã thấy file trên GDrive nhưng không thấy trong /root/backup.
    vậy nó nằm ở đâu ta?

    1. Việt Phương Moderator

      Script dùng câu lệnh move nhé bạn, nên file không còn trong /root/backup đâu

  13. Bạc Đỏ 67 comment

    File nén website tạo thành nhiều cấp thư mục quá. Mình chỉ muốn tạo 1 cấp thư mục, rồi bên trong chứa các file của website luôn thì có được ko nhỉ

    1. Việt Phương Moderator

      Không được bạn à. Cấu trúc gốc của HocVPS cũng là trong thư mục web là public_html sau đó mới là data web.

  14. DO DINH TUAN 56 comment

    Xin chào Admin! Mình xin có chút góp ý kiến này. Đó là mong admin giành chút thời gian rảnh viết một bài hứng dẫn chi tiết cho anh/em newbie cách tải các site đã backup xuống và chuyển sang 1 vps mới. Rất nhiều website của mình đã cài và sử dụng hocvps và cũng backup site lên GG drive..và sắp tới mình có nhu cầu muốn chuyển sang 1 vps mới hoàn toàn mà đang băn khoăn vốn kiến thức di chuyển vps sao cho an toàn nhất! Mong admin sớm có phản hồi.Thanks all!

    1. Luân Trần Admin

      Hi, mình có phần III. Tải file backup từ Google Drive xuống VPS rồi, bạn có thể dùng để down toàn bộ dữ liệu xuống VPS, sau đó unzip, import db để cài đặt website.

      1. DO DINH TUAN 56 comment

        bạn hướng dẫn giúp mình khâu “unzip, import db để cài đặt website.” giúp mình với mình ko biết nhiều về ssh lắm. 🙂

          1. DO DINH TUAN 56 comment

            Mình dùng PHPMyAdmin và filemanager úp lên trực tiếp được không bạn. vì các site của mình dung lượng cũng ko nhiều 🙂

          2. Việt Phương Moderator

            PHPMyadmin cho database thì ok chứ Filemanager cho cả data site thì không nên. Bạn down trực tiếp từ drive về VPS cho đỡ mất công cũng như thất thoát dữ liệu do quá trình tải

  15. Tung 43 comment

    May quá cảm ơn bác đã hồi âm
    Tuy nhiên khi em làm theo bác chỉ thì vẫn không được ạ
    Hiện ra thông báo sau

    NOTICE: Config file “/root/.config/rclone/rclone.conf” not found – using defaults
    If your browser doesn’t open automatically go to the following link: http://127.0.0.1:53682/auth
    Log in and authorize rclone for access
    Waiting for code…

    Mong bác giúp đỡ

  16. NguyenTung 43 comment

    Bác Luân cho em hỏi với
    Khi em chọn Yandex 13
    Nếu chon N thì không ra link xác thực gì cả
    Nếu chọn Y thì nó ra như thế này

    If your browser doesn’t open automatically go to the following link: http://127.0.0.1:53682/auth
    Log in and authorize rclone for access
    Waiting for code…

    Mong bác giúp đỡ

    1. Việt Phương Moderator

      Yandex bạn xác thực giống cách của OneDrive nhé, chạy lệnh rclone authorize "yandex" trên máy bạn

      1. Tung 43 comment

        Em làm xong các bước nhưng đến khi chạy lệnh

        rclone lsd remote:

        Thì bị như thế này ạ

        Failed to create file system for “remote:”: didn’t find section in config file

        Mong bác chỉ giúp

  17. Văn Minh 44 comment

    Của mình chạy “rclone lsd remote:” ra lỗi này fix sao mod ơi?

    NOTICE: Time may be set wrong – time from “www.googleapis.com” is -7h0m0 .844599329s different from this computer

    1. Việt Phương Moderator

      Không có vấn đề gì đâu bạn. Chỉ là thông báo về việc lệch time thôi

          1. Văn Minh 44 comment

            Mỗi ngày nó vẫn backup ra 1 file bác ạ, chỉ là nó ko up lên google drive thôi 🙁

          2. Việt Phương Moderator

            Trc gặp case này thì chỉ cảnh báo mà vẫn chạy lệnh mà nhỉ. Bạn check date ra múi giờ ntn, lệch với bên GG không.
            Mình suggest bạn delete kết nối rồi chạy cài đặt lại rclone xem sao.

          3. Văn Minh 44 comment

            Ko được rồi mod ơi, mình đã xóa kết nối, reset time zoin trên VPS và hết và tao kết nối mới thì hết báo lỗi rồi, nhưng mấy ngày nay vẫn ko thấy backup lên gì cả??? :((

          4. Việt Phương Moderator

            Bạn check kết nối vẫn ok chứ? rclone lsd remote: Rồi check backup thủ công thì ntn?

          5. Văn Minh 44 comment

            Mỗi ngày vẫn tự động Backup mod ạ, chạy bk thủ công theo lệnh trên vẫn ok. Check thì kết nối ok rồi, nó list ra thư mục trên drive luôn. Vậy mà vẫn ko tự động đưa lên.

          6. Việt Phương Moderator

            Kì lạ nhỉ. Bạn thử move thủ công 1 thư mục trong VPs lên cloud được không? Vấn đề hiện giờ chỉ ở việc upload?
            /usr/sbin/rclone move thư_mục_vps "remote:thư_mục_trong_cloud"

  18. DO DINH TUAN 56 comment

    “Starting Backup Nginx Configuration
    Finished

    Starting Uploading Backup
    Error: unknown command “rmdirs” for “rclone”

    Did you mean this?
    rmdir

    Run ‘rclone –help’ for usage.
    unknown command “rmdirs” for “rclone”

    Did you mean this?
    rmdir

    Finished”

    Mình nhận được lỗi này giúp mình giải quyết vs ad?

    1. Việt Phương Moderator

      Script thông báo không thấy lệnh rmdirs của Rclone. Gặp phải nếu Rclone phiên bản thấp
      Phiên bản rclone của bạn là bn ? Bạn check bằng rclone -V
      Nếu dưới 1.35 thì bạn chạy lại phần cài đặt để upgrade nhé.

      1. DO DINH TUAN 56 comment

        Chào Ad, mình chạy lại cài đặt Rclone để update bản mới nhất xong rồi có cần làm lại bước “Tạo kết nối với Google Drive” ko vậy..hay cứ như vậy rồi chạy backup là xong admin??

        1. Việt Phương Moderator

          Bạn check rclone config thấy còn kết nối không. Mình nghĩ là còn

  19. Huynh Minh Chi 10 comment

    Mình đã làm các bước giống như hình, không báo lỗi gì cã, nhưng không thấy thư mục backup tên Drive. không biết nó lưu lên drive chỗ nào nữa ?

    1. Việt Phương Moderator

      Bạn check rclone lsd remote: ra kết quả không? Thư mục backup tên HocVPS_BACKUP

        1. Việt Phương Moderator

          Kết nối thành công rồi mà. Hệ thống bạn là HocVPS? Chạy /root/backup.sh kết quả ntn bạn?

  20. Nam Thanh 36 comment

    Mình thắc mắc là không biết cài vụ này có làm hao tài nguyên của vps nhiều không nhỉ?

  21. Luu 4 comment

    Anh em thắc mắc chỗ này trong cripts:

    MYSQL_PASSWORD=$mariadb_root_password ( vậy pass mình để là vậy luôn hay mình sửa lại theo pass của mình)
    MYSQL_PASSWORD=”MyPassword”

    VỚi cripts như vầy là mình backup tất cả file trong thư mục /Home phải ko ạ?

    # 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 ”;

    1. Việt Phương Moderator

      1. Nếu bạn dùng HocVPS thì không cần sửa gì cả, nếu bạn dùng hệ thống khác thì điền thẳng pass user root của MySQL vào
      2. Backup tất cả file thuộc thư mục đáp ứng /home/*/public_html

  22. Duc 2 comment

    Admin cho mình hỏi cái nhé, mình có chạy 4 con VPS cùng backup vào 1 tài khoản google driver, vậy có nên đặt lệnh cronjob cùng chạy vào lúc 2h sáng hàng ngày cho tất cả 4 VPS hay không? hay là nên sửa lại 1 VPS vào 1 giờ khác nhau thì hợp lý hơn? và lệnh cronjob này tính giờ theo giờ của máy chủ VPS đang hoạt động đúng ko Admin ? hay là giờ được báo như trong HocVps-Script ?

    1. Việt Phương Moderator

      1. OK bạn nhé. Tuy vậy, bạn nên sửa script cho 4 VPS backup vào 4 thư mục khác nhau trên Drive. Như HOCVPS_BACKUP1, HOCVPS_BACKUP2, HOCVPS_BACKUP3, HOCVPS_BACKUP4
      2. Giờ hệ thống của VPS bạn nhé, # date để check

  23. MrDuc 14 comment

    Cảm ơn bạn đã chia sẻ một tut quá hay, đúng vấn đề mình đang cần. Chỉ có điều cấu trúc vps của mình lại khác một chút. Thư mục của mình là /home/nginx/username/domain/public_html/* hơn nữa mình lại sử dụng nhiều cms khác nhau wp, drupal, prestashop nên trong cùng một vòng for không biết làm thế nào để có thể loại bỏ được hết các thư mục cache cho các cms khác nhau. Nếu có thể gợi ý chỗ này giúp mình? Hiện tại thì mình chỉ có thể backup cả đống lên thôi không loại bỏ được các file cache hix hix

    1. Việt Phương Moderator

      1. Bạn sửa cấu trúc thư mục web trong script.
      2. -x /home/$domain/public_html/wp-content/cache/**\* giúp loại thư mục cache. Các CMS khác nhau thư mục cache có thể khác nhau nên bạn cấu hình thủ công định danh từng thư mục thôi, ví dụ website WP thì /wp-content/cache/

  24. Thinh 4 comment

    Bạn ơi cho mình hỏi.
    VD: mình có 2 thư mục chứ web là
    web 1 và web 2 trong home => /home/web1
    => /home/web2
    Thì mình sửa cripts sao cho backup tất cả thư mục đó trong /hone vậy?
    Thanks bro…!!!

    1. Việt Phương Moderator

      Bạn không cần sửa gì cả. Vì script mình cấu hình thế mà. Backup các thư mục website trong /home/
      # Loop through /home directory
      for D in /home/*; do

  25. Long 3 comment

    Mình làm đến bước gõ lệnh:
    rclone lsd remote:

    Thì nhận được thông báo:
    Failed to create file system for “remote:”: didn’t find section in config file

    Xin hòi mình tiếp tục như thế nào ạ?
    Cảm ơn mod và admin

    1. Việt Phương Moderator

      Hình như bạn chưa tạo config nào là remote. Bạn rclone config ra kết quả gì?

      1. Long 3 comment

        À, mình làm được rồi, cảm ơn Phương. Nguyên do là mình quen tay gõ “Remote” :-s
        Cảm ơn bạn nhiều

        1. Huy 1 comment

          Hi bạn. mình cũng bị lỗi này.. bạn khắc phục như nào vậy. cảm ơn bạn

          1. Việt Phương Moderator

            Lỗi thường do gõ chính tả trong quá trình lệnh. Tên config cần đúng là remote
            Bạn rclone config ra thông báo gì

  26. Khoa 11 comment

    Khi chạy lệnh /root/backup.sh, em bị báo cái lỗi này là sao nhỉ ?
    /root/backup.sh: line 5: /etc/hocvps/scripts.conf: No such file or directory
    Starting Backup Database
    Enter password:
    ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: YES)
    Và để 2-3 hôm nay nó không tự động backup luôn
    Mong các anh chỉ giúp !

    1. Việt Phương Moderator

      Hệ thống bạn không phải HocVPS Script. Nếu thế, bạn thay thủ công các đường dẫn web, mật khẩu user root MariaDB.
      Script không thấy file lưu thông tin HocVPS script để lấy các thông tin đăng nhập MariaDB

  27. sinhle 71 comment

    chào ae.
    Mình cài hocvps và làm theo cái này điều ok.
    Hôm nay web có lỗi nên khôi phục lại. Vào drive google tải file về. Trong đó có file data của web ( filename.gz ) Mình có vào phphadmin import vào. Nó báo thành công. Tuy nhiên không hề thấy hiện ra bảng data nào. Xin ae giúp đỡ. Hoặc có các nào khôi phục dữ liệu web từ ngay file backup trên driver được không?? Trong bài có đoạn này “Tải file backup từ Google Drive xuống VPS”. tuy nhiên mình không hiểu lắm vì có vẻ chỉ là tải code về vps rồi nằm chung ở đâu đó

    1. Việt Phương Moderator

      Mục Backup Website, bạn chỉnh sửa cho đúng đường dẫn thư mục của site bạn.
      Còn nếu thư mục Zimbra của bạn chỉ là thư mục bình thường, không thay đổi hàng ngày thì bạn có thể chạy lệnh rclone copy thư_mục_trong_vps remote:thư_mục_trong_drive để copy từ VPS lên Driver

  28. thịnh 4 comment

    Cho mình hỏi mình cài đặt xong cấu hình rclone config và sau đó chạy lệnh kết nối với google drive : rclone lsd remote:
    thì không thấy thông báo kết nối với drive.
    cho mình xin ý kiến tks nhìu.

    1. Việt Phương Moderator

      Bạn chạy lệnh # rclone lsd remote:? Nó sẽ liệt kê các thư mục của kết nối remote Bạn kiểm tra đúng kết nối chứ?
      rclone config xem có liệt kê kết nối đó không?

      1. thinh 4 comment

        mình muốn backup folder /home/ntbao/www/
        thì e điền đoạn cript này đúng chưa vậy

        # 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/ntbao/www/* -q -x /home/$domain/public_html/wp-content/cache/**\* #Exclude cache
        fi
        done
        echo “Finished”;
        echo ”;

  29. Đức nghĩa 6 comment

    Sao của mình chạy backup DB nó hỏi password là sao vậy A, và pass ở đây là pass của root hay pass của DB ạ, nếu nhiều user thì nhập thế nào dc ạ.

    Demo : http://prntscr.com/ejryyw

    1. Việt Phương Moderator

      Hệ thống bạn có phải HocVPS không? Nếu không thì bạn phải điền trước pass vào trong script.
      Pass đây là user root của MySQL, có quyền truy cập toàn bộ các Database

      1. đức nghĩa 6 comment

        ah, của mình dùng bên khác, mình đã xử được rồi, nhưng dùng acc da_admin và pass của nó, Bạn có guide nào tạo 1 acc khác chỉ có mỗi quyền backup ko, vì mình cũng đang nghiên cứu vps nên cái biết cái không…
        Cám ơn bạn

  30. lê minh duong 3 comment

    Chào luân! mình có dùng cách này nhưng file mysql không định dạng file kiểu gì hết . nó chỉ là tên database.gz trong database.gz có tên file nhưng không định dạng SQL. cái này có phải do lỗi VPS mình k bạn

    1. Lê Minh Dương 3 comment

      mình có thử đổi qua .sql phpadmin import vào thành công nhưng vẫn k ra bảng. mình sài vpssim.

        1. Việt Phương Moderator

          Mình test hê thống HocVPS import thẳng file gz qua PhpMyAdmin vẫn được mà. Không biết hệ thống VPSSIM cấu hình khác đoạn nào không. Bạn kiểm tra lại xem
          Không cần giải nén gì cả vì PhpMyadmin chấp nhận tất
          File may be compressed (gzip, bzip2) or uncompressed.

        2. Việt Phương Moderator

          Hình như bạn import vào 1 database có sẵn nhưng khác tên đúng không?

          File database chỉ có thể import vào database đúng tên hoặc bạn import thẳng vào server (Không chọn database nào mà chọn luôn Import, hiển thị Importing into the current server là OK)

          Bản chất do dòng 24 trong file database có dòng USE `tên_database`;. Nếu bạn muốn import vào database khác tên thì xóa dòng đó đi rồi import lại

      1. Việt Phương Moderator

        Mình test hê thống HocVPS import thẳng file gz qua PhpMyAdmin vẫn được mà. Không biết hệ thống VPSSIM cấu hình khác đoạn nào không. Bạn kiểm tra lại xem
        Không cần giải nén gì cả vì PhpMyadmin chấp nhận tất
        File may be compressed (gzip, bzip2) or uncompressed.

      2. Việt Phương Moderator

        Hình như bạn import vào 1 database có sẵn nhưng khác tên đúng không?
        Bạn import qua PHPMyAdmin
        File database chỉ có thể import vào database đúng tên hoặc bạn import thẳng vào server (Không chọn database nào mà chọn luôn Import, hiển thị Importing into the current server là OK)

        Bản chất do dòng 24 trong file database có dòng USE `tên_database`;. Nếu bạn muốn import vào database khác tên thì xóa dòng đó đi rồi import lại

  31. Lemon 21 comment

    Em có 2 trường hợp muốn hỏi? (em dùng VPSSIM)

    TH1: Em dùng vpssim đã có chức năng auto backup all data + mysql hết rồi, và nó sẽ lưu data+mysql trong thư mục như này: /home/vpssim.demo/private_html/backup

    ==> Có cách nào để tạo script tự động upload 1 folder backup kia lên GoogleDrive k?

    TH2: (Nếu TH1 không được) Em k dùng chức năng auto backup của VPSSIM mà sẽ sử dụng script auto backup all VPS này của anh, thì phải chĩnh sữa những phần nào để phù hợp có thể áp dụng với cấu trúc VPSSIM.

    Mong A hoặc mọi người ai biết hướng dẫn giúp với ạ!

    1. Việt Phương Moderator

      1. Bạn chỉ cần tạo crontab cho mỗi công đoạn upload thôi. Mình không rõ lắm file backup được tạo ra cấu trúc như thế nào. Về ý tưởng, bạn chỉ cần chạy lệnh
      #rclone move file/directory "remote:thư mục trên drive" là sẽ move thư mục backup từ VPS lên Drive
      2. Bạn cần chỉ đúng các thông số sau:
      _Xóa dòng thứ 2 . /etc/hocvps/scripts.conf
      _Điền đúng pass user root của MySQL, đoạn MYSQL_PASSWORD=$mariadbpass
      _Back up data: đường dẫn thư mục web, ở VPSSIM cũng là /home/... nên vẫn thế.
      _Back up Nginx Conf: chỉ đúng đường dẫn thư mục lưu Nginx conf, ở VPSSIM cũng là /etc/nginx/conf.d/ nên vẫn thế

      1. Lemon 21 comment

        Hi bạn,

        Cấu trúc file backup thì đã đc nén .zip & .gz hết rồi, và nó đc lưu toàn bộ ở bên trong Folder Backup đó ok rồi, nên k cần qtam cái đó nữa.

        Mình chỉ cần là làm sao để auto upload (copy) 1 folder Backup đó lên Drive thôi (mình backup nhiều VPS khác nữa nên muốn đổi tên folder Backup ==> IP VPS cho dễ nhận biết ở trên Drive).

        Mình có ý tưởng như vầy:

        Sau khi cài Rclone, thì mình tạo script (code như ở dưới) để nó tự copy folder Backup lên Drive và lưu ở folder tên IPVPS rồi tạo cron cho nó auto chạy vào lúc 2h sáng và tự xóa sau 2w. K biết code ở dưới có đúng k nhỉ. Mong bạn hướng dẫn!

        #!/bin/bash

        /usr/sbin/rclone copy /home/vpssim.demo/private_html/backup “remote: 123.321.321.321”
        # Clean up

        /usr/sbin/rclone -q –min-age 2w delete “remote:123.321.321.321” #Remove all backups older than 2 week
        /usr/sbin/rclone -q –min-age 2w rmdirs “remote:123.321.321.321” #Remove all empty folders older than 2 week

        1. Việt Phương Moderator

          OK. Bạn để /home/vpssim.demo/private_html/backup/. Code backup có tự xóa file ở server không bạn? Script sẽ copy lặp cả file của ngày hôm trước đó

          1. Lemon 21 comment

            k biết lỗi gì mà lúc đầu mình test theo lệnh này rclone copy /home/vpssim.demo/private_html/backup “remote: 123.321.321.321” thì ok hết. Mà xóa data backup đi, chạy lại thì nó k hoạt động nữa… (trên SSH thì vẫn báo transfered file ok, mà trên Drive nó k có data nữa).

            Nên mình chuyển sang dùng Script trên ok rồi 🙂 Cảm ơn bạn Phương nhiều nhé!

          2. Duong Le 3 comment

            Lemon mình nghĩ là do /usr/sbin/rclone copy /home/vpssim.demo/private_html/backup “remote: 123.321.321.321” lần 1 nó thành công lần 2 trùng thư mục nên nó dừng đấy . bạn thử như thế này thử xem !

            # HocVPS Script Plugin – Backup Server and Upload to Google Drive

            #!/bin/bash

            SERVER_NAME=tên muốn tạo trong driver
            BACKUP_DIR=/home/vpssim.demo/private_html/backup
            TIMESTAMP=$(date +”%F”)
            /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 2w delete “remote:$SERVER_NAME” #Remove all backups older than 2 week
            /usr/sbin/rclone -q –min-age 2w rmdirs “remote:$SERVER_NAME” #Remove all empty folders older than 2 week

    1. Việt Phương Moderator

      Directory not found. Bạn chưa kết nối được với GDrive rồi. Bạn chạy lại # rclone config để edit lại remote vừa tạo nhé

      1. sinhle 71 comment

        Sau ki chạy lệnh /root/backup.sh
        Thì mình chạy tiếp lệnh rclone lsd remote:
        Và kết quả trả về là : -1 2017-03-03 04:53:23 -1 HOCVPS_BACKUP
        ( thiếu mất mấy dòng không giống demo của admin ở trên)
        Mình lên GDriver thì có file backup web trên đó luôn.
        Như vậy là thành công rồi phải không bạn?
        Cảm ơn.

  32. Văn Phong 1 comment

    Admin, giúp mình với!!
    Mình muốn backup tất cả TRỪ 1 website thì mình nên chỉnh file backup lại thế nào nhỉ. Vì có 1 website database khoảng 1gb dữ liệu khoảng 20 GB. backup thường không ổn định lắm, hay bị lỗi down server. !!
    Cám ơn rất nhiều. @@

    1. Việt Phương Moderator

      Bạn sửa các phần sau trong script backup:
      _Backup Database: databases=`$MYSQL --user=$MYSQL_USER -p$MYSQL_PASSWORD -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema|performance_schema|mysql|tên_database_loại_trừ)"`
      -Backup Website: zip -r $BACKUP_DIR/$domain.zip /home/$domain/public_html/ -q -x /home/$domain/public_html/wp-content/cache/**\* -x /home/website_của_bạn/\*

      1. Bạc Đỏ 67 comment

        Nếu mình chỉ muốn backup 1 db & 1 website thì sửa chỗ đoạn nào bạn Phương nhỉ

        1. Việt Phương Moderator

          Bạn chỉ trực tiếp database và thư mục
          Database thì sửa phần dưới, để luôn tên database
          for db in $databases; do
          $MYSQLDUMP --force --opt --databases $db | gzip > "$BACKUP_DIR/mysql/$db.gz"

          Data web thì sửa phần dưới, để luôn tên web
          zip -r $BACKUP_DIR/$domain.zip /home/$domain/public_html/ -q -x /home/$domain/public_html/wp-content/cache/**\*
          Nginx thì khỏi sửa cho đỡ mất công, do dung lượng cũng chẳng bao nhiêu

          1. Bạc Đỏ 67 comment

            chỗ $db thay bằng $tên_db
            tất cả các chỗ $domain thay bằng tên $tên_web

            phải ko bạn P nhỉ

            Cảm ơn nhiều bạn đã reply 🙂

      2. Bạc Đỏ 67 comment

        Nếu mình chỉ backup 2 website & 2 db trong số nhiều website & db thì nên làm thế nào nhỉ

  33. đạotrần 5 comment

    Hi bạn,
    Mình đặt vấn đề thế này
    1. sau khi nén dữ liệu thành file zip và đưuọc up lên drive thì ngay lập tức file zip đó trên server sẽ bị xóa
    2. cứ mỗi ngày trêm drive lại co 1 file mới được up lên thì mình chỉ muốn giữ lại 7 file được úp lên gần đây nhất. file thứ 8 up lên sẽ ngay lập tức xóa file thứ 1, file thứ 9 úp lên sẽ xóa file thứ 2 như vậy trên rive của mình luôn duy trì việc giữ lại có 7 file gần nhất mà thôi.
    Như vậy, bạn chỉ mình hướng giải quyết được ko

    Thanks,

    1. Việt Phương Moderator

      1. Phần “Starting Uploading Backup”, bạn thiết lập zip $BACKUP_DIR rồi câu lệnh sau là move như trong script.
      Phần “Clean up” rm -rf $BACKUP_DIR của script đã đảm bảo xóa backup folder trên server rồi.
      2. Bạn sửa thời gian trong script 2w thành 8d. Do mỗi ngày đều backup 1 file nên việc xóa file cũ hơn 8 ngày là đáp ứng yêu cầu