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. Việt Phương Moderator

      Bạn dùng menu s rồi u
      rclone config – s) Set configuration password – u) Unencrypt configuration

  1. Quang Tuấn 21 comment

    Cho mình hỏi bị lỗi này là như thế nào vậy ad. Thanks
    [root@localhost home]# rclone lsl dulieu:
    2017/12/28 12:33:16 Failed to create file system for “dulieu:”: failed to get root: unauthenticated: Must be authenticated to use ‘/drive’ syntax
    [root@localhost home]# rclone config
    Current remotes:

    Name Type
    ==== ====
    dulieu onedrive

    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>

    1. Việt Phương Moderator

      Bạn dùng OneDrive for Business à? Cho mình nội dung /root/.config/rclone/rclone.conf của bạn. Xóa phần access token trc khi paste lên nhé

        1. Việt Phương Moderator

          1. Bạn cung cấp đúng nội dung mình yêu cầu đi. File ý còn mấy dòng nữa cơ
          2. Bạn config lại chọn Onedrive for Business xem. Mình nghi là lúc config bạn chọn Personal

          1. Việt Phương Moderator

            Spam Filter. File trên VPS cơ bạn ơi /root/.config/rclone/rclone.conf

          2. Việt Phương Moderator

            Không. Nội dung đúng của nó sẽ như thế này cơ mà
            [onedrive]
            type = onedrive
            client_id =
            client_secret =
            token = XXX
            resource_url = https://XXX-my.sharepoint.com/

            Bạn đang cung cấp nội dung nào vậy?

          3. Việt Phương Moderator

            Ok Mình xem rồi. Đoạn code ý thì khá lạ so với thông thường. Bạn xóa remote tạo lại xem. Post full log lúc tạo remote cho mình xem

          4. Việt Phương Moderator

            Và đảm bảo rằng bạn chọn Business cả lúc config và authorize

          5. Việt Phương Moderator

            Ok. Ra vấn đề rồi. Bạn update lên phiên bản mới nhất 1.39 để sử dụng được OneDrive for Business nhé
            cd /root/
            wget https://downloads.rclone.org/rclone-v1.39-linux-amd64.zip
            unzip rclone-v1.39-linux-amd64.zip
            \cp rclone-v*-linux-amd64/rclone /usr/sbin/
            rm -rf rclone-*

            Xong bạn config lại từ đầu để chọn đc OneDrive for Business

          6. Quang Tuấn 21 comment

            được rồi nhé ad thì ra chưa nâng cấp bản mới

            [root@localhost ~]# rclone lsd remote:
            Enter configuration password:
            password:
            -1 2017-12-28 08:29:31 0 Attachments
            -1 2017-12-28 06:57:12 1 Hinh anh
            [root@localhost ~]#

            Xin cảm ơn nhiều

      1. Việt Phương Moderator

        Như trong cuối bài ghi đó bạn. Database thì import, Sourcecode và Nginx Conf thì đặt vào đúng thư mục

          1. Việt Phương Moderator

            Cannot Connect là cấu hình Database của bạn không đúng hoặc MySQL chưa khởi động.
            Đối với 1, bạn kiểm tra lại trong source code, ví dụ wp-config.php. Ví dụ database X thuộc user X pass X trên VPS A. Sang VPS B bạn import vẫn database X nhưng user Y pass Y mà wp-config lại không sửa
            Đối với 2, bạn kiểm tra MySQL services xem vấn đề do đâu

          2. DO DINH TUAN 56 comment

            mình import nguyên y database và sourecode vs cấu hình nigx vào đúng vị trí của từng file. User, pass mình ko thay đổi. bạn có thể giúp mình sửa lỗi này được ko???

  2. Quyết 1 comment

    “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/”

    Phần path này mình có thể edit trong đâu vậy anh?

    Em cám ơn!!

    1. Việt Phương Moderator

      Trong nội dung script mình có ghi đó, Starting Backup Website và Starting Uploading Backup

  3. Datecom 20 comment

    Hiện tại em đang dùng vestacp để quản lý host vì nó đơn giản với những người không chuyên như em, nên bác có thể làm 1 bài về backup bằng rclone cho vestacp không?
    Em không biết sửa file bash kia như nào để phù hợp với vestacp vì nó backup hằng ngày ra file rồi

    1. Việt Phương Moderator

      VestaCP có backup ra file hàng ngày rồi thì bạn chỉ cần upload mỗi file đó lên Cloud là xong mà

  4. Nguyễn Văn An 16 comment

    Chào Anh! Mong anh giúp đỡ
    Trong thư mục root/backupdata/ có các thư mục đó là
    2017-11-22,
    2017-11-23,
    2017-11-24,
    2017-11-25.

    E muốn xóa các thư mục cũ hơn 2 ngày cho nên em sử dụng lệnh

    find /root/backupdata/ -mindepth 1 -mtime +2 -delete
    Hoặc là lệnh
    find /root/backupdata/* -mtime +2 -exec rm {} \;

    Nhưng 2 lệnh e gõ trên đều không xóa được. Vậy cho em hỏi lệnh nào để xóa những thư mục cũ hơn 2 ngày thì sử dụng như nào ạ? Em tìm Google nhưng chưa được Mong anh chị biết chỉ giúp. Em cám ơn

          1. Nguyễn Văn An 16 comment

            Trong cửa sổ dòng lệnh e dùng lệnh này thì xóa được
            find /root/backupdata/* -mtime 7 -print -exec rm -rf {} \;

          2. Việt Phương Moderator

            Bạn xem script thế nào chứ mình bình thường mà, test 2 ngày thấy ok. Toàn bộ trong này https://pastebin.com/tB4WsgCb
            mv $BACKUP_DIR /root/copybackup
            find /root/copybackup/ -mindepth 1 -maxdepth 1 -ctime 1 | xargs rm -rf

  5. Ngô Văn Cương 142 comment

    Sau khi mình up code của wordpress đã sao lưu lên host, Import data, update nginx, chỉnh config thì vào web nó bắt lại wordpress là sao ad nhỉ ?

    1. Việt Phương Moderator

      1. Bạn chỉnh lại cronjob theo nhu cầu nhé.
      2. Chỉnh trong script để thay đổi việc xóa file (hiện cũ hơn 2 tuần xóa)

  6. Vũ Văn Tiền 16 comment

    Hiện tại trên Google Drive e chỉ muốn mỗi ngày lưu một bản thôi. Ngày hôm sau xóa luôn bản cũ. Em sử dụng lệnh này thì không chịu, Có cách nào khả thi hơn khác không ạ?
    /usr/sbin/rclone -q –min-age 1d delete “remote:$SERVER_NAME”
    /usr/sbin/rclone -q –min-age 1d rmdirs “remote:$SERVER_NAME”

    1. Việt Phương Moderator

      1. Hệ thống Rclone nó thế. Bạn xóa thủ công các bản backup có từ trước khi sửa script. Các bản backup được tạo từ sau sẽ được xóa theo 1 ngày.
      2. Hoặc bạn không muốn lưu thế thì để lệnh xóa trên drive trước rồi lệnh up sau. Khi đó thì không cần xét thời gian làm gì vì nó sẽ tự độgn xóa all trên Drive rồi mới up lên

        1. Vũ Văn Tiền 16 comment

          Nếu xóa luôn trước khi update thì sẽ viết như này đúng không ạ?

          /usr/sbin/rclone delete “remote:$SERVER_NAME”
          /usr/sbin/rclone rmdirs “remote:$SERVER_NAME”

          Rồi mới upl nên

          /usr/sbin/rclone copy $BACKUP_DIR “remote:$SERVER_NAME/$TIMESTAMP” >> /var/log/rclone.log 2>&1

  7. Vũ Văn Tiền 16 comment

    Chào Admin. Cám ơn đoạn mã của bạn hoạt động rất tốt. Mình có một câu hỏi mong bạn hồi âm.

    Mình bây giờ muốn lưu cả trên VPS ở đó luôn sẽ không xóa. Ví dụ lưu 5 bản khi lưu bản thứ 6 thì xóa bản thứ 1 đi (Mỗi ngày backup một lần). Thì phải làm như nào ạ. Vẫn backup nên Google Drive bình thường.
    Rất mong Admin hồi âm. Và xin hậu tạ!

    1. Việt Phương Moderator

      Để lưu trên VPS thì
      1. thay vì dùng move lên Drive thì bạn dùng copy
      2. sau khi copy lên drive thì move vào 1 thư mục X trên VPS
      3. Chạy lệnh xóa trong thư mục X những thư mục lớn hơn 6 ngày find /some/dir -type f -mtime +6 -delete

      1. Vũ Văn Tiền 16 comment

        Chào Admin. Cám ơn Anh đã phản hồi.
        Em thực hiện lệnh như này có khác gì của a không nhỉ?

        mv /root/backup /root/backupdata
        find /root/backupdata/ -mindepth 1 -mtime +2 -delete
        Em di chuyển thư mục backup sang thư mục backupdata, Và sử dụng lệnh xóa +2 sau 2 ngày có khác gì lệnh a ghi là find /some/dir -type f -mtime +6 -delete không anh???

        Và e muốn trên google driver mỗi ngày up nên sẽ xóa bản cũ luôn lên dùng lệnh này không biết đúng không?

        /usr/sbin/rclone -q –min-age 1d delete “remote:$SERVER_NAME”
        /usr/sbin/rclone -q –min-age 1d rmdirs “remote:$SERVER_NAME”

        Mong anh hồi âm! Cám ơn anh

        1. Việt Phương Moderator

          Cần move cái bên trong backup chứ không phải cả backup. Ngoài ra đã khá ổn rồi. Bạn test là rõ

          1. Việt Phương Moderator

            Bạn tận dụng script ý mv $BACKUP_DIR. Và đã tạo thư mục /root/bakcupdata chưa

          2. Việt Phương Moderator

            Nếu bạn đã move lên drive thì không còn gì để move vào backupdata. Thế nên lúc đầu mình mới bảo là copy lên drive

          3. Vũ Văn Tiền 16 comment

            Vâng em sử dụng lệnh copy mà a. Đây là toàn bộ mã nguồn e sửa đổi

            # HocVPS Script Plugin – Backup Server and Upload to Cloud

            #!/bin/bash

            SERVER_NAME=VUTIENIT_BACKUP_VPS

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

            mkdir -p “$BACKUP_DIR/mysql”

            echo “1. Bat Dau Sao Luu Database”;
            databases=`$MYSQL -e “SHOW DATABASES;” | grep -Ev “(Database|information_schema|performance_schema|mysql)”`

            for db in $databases; do
            if [ $db != “performance_schema” ]&&[ $db != “mysql” ];then
            echo -e “Backing up: ‘$db’ to $BACKUP_DIR/mysql/$db.sql n”
            $MYSQLDUMP –force –opt –user=$MYSQL_USER -p$MYSQL_PASSWORD –databases $db > “$BACKUP_DIR/mysql/$db.sql”
            fi
            done
            echo “— Hoan Thanh —“;
            echo ”;

            echo “2. Bat Dau Sao Luu 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 “— Hoan Thanh —“;
            echo ”;

            echo “3. Bat Dau Sao Luu Nginx Configuration”;
            cp -r /etc/nginx/conf.d/ $BACKUP_DIR/nginx/
            echo “— Hoan Thanh —“;
            echo ”;

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

            echo “4. Bat Dau Sao Luu Nen Google Drive”;
            /usr/sbin/rclone copy $BACKUP_DIR “remote:$SERVER_NAME/$TIMESTAMP” >> /var/log/rclone.log 2>&1
            # Clean up
            /usr/sbin/rclone -q –min-age 1d delete “remote:$SERVER_NAME” #Remove all backups older than 2 week
            /usr/sbin/rclone -q –min-age 1d rmdirs “remote:$SERVER_NAME” #Remove all empty folders older than 2 week
            echo “— Hoan Thanh —“;
            echo ”;

            echo “5. Bat Dau Sao Luu Tai VPS”;
            #Remove older backups (2 days)
            mv /root/backup /root/backupdata
            find /root/backupdata/ -mindepth 1 -mtime +2 -delete

            echo “— Hoan Thanh —“;
            echo ”;

            duration=$SECONDS
            echo “Tong dung luong sao luu $size”
            echo “Thoi gian sao luu $(($duration / 60)) phut va $(($duration % 60)) giay.”

  8. Thao Hoang 26 comment

    Mình cài xong thì hệ thống báo ntn là sao admin ơi
    [root@vultr ~]# rclone lsd remote:
    2017/11/15 16:38:32 Failed to create file system for “remote:”: didn’t find section in config file

    1. Thao Hoang 26 comment

      Mình mới xóa đi cài lại đến bước này

      Vậy là xong, giờ bạn có thể test thử kết nối với lệnh: rclone lsd remote:

      thì kết quả ntn

      [root@vultr ~]# rclone lsd remote:
      [root@vultr ~]#

      nó không hiện giống như hướng dẫn 🙁

      1. Việt Phương Moderator

        Câu hỏi 1: Chưa có kết nối nào tên là remote
        Câu hỏi 2: Hình như Cloud ý bên trong không có thư mục nào để hiển thị?

          1. Việt Phương Moderator

            Như lần cài 2 là bạn thành công rồi mà. Chỉ là bây giờ rclone nó thay đổi chỉ hiển thị thư mục. Nên mình mới bảo bạn check trên cloud ý có thư mục gì không
            Không có gì thì rclone không hiện gì là đúng rồi
            Bạn chạy được lệnh rclone --version là cũng thành công rồi

          2. Thảo H 26 comment

            cảm ơn admin nhiều. MÌnh làm được rồi. Admin ơi có cách nào restore nhanh không
            hay phải tải file backup về máy rồi up lên server

          3. Việt Phương Moderator

            Chỉ có cách đó thôi bạn à. Còn backup restore nhanh thì bạn dùng Duplicator nhưng khi đó bạn không có lựa chọn backup hàng ngày hay là tải lên Drive

  9. Vũ Văn Tiền 16 comment

    Chào Admin!
    Trước tiên xin cám ơn bài viết này của Admin.
    Mình có câu hỏi là:
    Trong file backup.sh mình muốn lưu trữ mã nguồn cả trên VPS và trên Google Driver thì sao ạ.

    Hiện tại trong backup.sh chỉ upload nên Google Driver lưu trong 14 ngày và xóa bản cũ đi. Mình cũng muốn nó làm tương tự như vậy lưu trong VPS thì cần sửa đoạn mã nào ạ. Mong Admin hồi âm sớm.

    1. Việt Phương Moderator

      Bạn thay vì move thì chọn copy. Đồng thời sau khi copy lên Drive thì move nó sang 1 thư mục khác (để đảm bảo thư mục backup trống cho lần backup sau)

  10. Mạnh Cường 3 comment

    – Các thư mục public_html của các website trong subdomain không tự động backup bạn ơi.

    – Mình muốn auto zip thêm 1 thư mục khoảng 30gb và auto upload lên google driver mình đã mua 1Tb thì phải thêm code nào vào ạ.

    1. Việt Phương Moderator

      1. Cấu trúc thư mục của subdomain như thế nào? Chứ nếu subdomain tương đương như 1 website thì script sẽ auto backup thôi.
      Ví dụ đều là /home/abc/public_html với /home/sub1.abc/public_html và /home/sub2.abc/public_html
      2. Bạn không cần upload thường xuyên thư mục đó thì zip và up thủ công không thì bạn sửa script bỏ hết phần database và nginx đi, để phần nén thư mục thôi. Nén thư mục thì điền thẳng luôn tên thư mục. Up lên đâu thì tùy cài đặt remote của bạn

      1. Mạnh Cường 3 comment

        – Cấu trúc web ở subdomain giống hệt domain nhưng vẫn không backup được. Chỉ backup được web ở domain thôi.

        – Mình tạo mới 1 file backup_2.sh rồi chèn code để nén folder 30Gb:
        TIMESTAMP=$(date +”%F”)
        BACKUP_DIR=”/home/cuong123/backup/$TIMESTAMP”
        MYSQL=/usr/bin/mysql
        MYSQLDUMP=/usr/bin/mysqldump
        SECONDS=0

        echo “Starting Backup Website”;
        zip -r $BACKUP_DIR/$data.zip /home/cuong123/domains/folder_can_nen -q
        done
        echo “Finished”;
        echo ”;

        echo “Starting Uploading Backup”;
        /usr/sbin/rclone $BACKUP_DIR/$TIMESTAMP “remotegoogledrive:$SERVER_NAME/$TIMESTAMP” >> /var/log/rclone.log 2>&1
        # Clean up
        rm -rf $BACKUP_DIR
        /usr/sbin/rclone -q –min-age 2w delete “remotegoogledrive:$SERVER_NAME/$TIMESTAMP”
        /usr/sbin/rclone -q –min-age 2w rmdirs “remotegoogledrive:$SERVER_NAME/$TIMESTAMP”
        echo “Finished”;
        echo ”;

        Nhưng bị lỗi:
        zip I/O error: No such file or directory
        zip error: Could not create output file (/home/cuong123/backup/2017-11-07/.zip)
        /root/backup_moodledata.sh: line 11: syntax error near unexpected token `done’
        /root/backup_moodledata.sh: line 11: `done’

        1. Việt Phương Moderator

          1. Mình không đề cập cấu trúc web, vì bash script này backup theo thư mục thôi, k quan tâm mã nguồn gì cả. Cứ có thư mục /home/domain/public_html là nó zip. Mình test rồi, hoàn toàn ok nên bạn xem lại script và cấu trúc thư mục nhé
          2.
          a. Chưa khai báo mà đột ngột có biến $data
          b. Xem lại phần Starting Uploading Backup
          3. Nếu có mỗi 1 thư mục thế thì bạn không cần bash script làm gì, add thẳng rclone. Cũng chỉ 2 dòng lệnh. Dùng bashscript chẳng qua vì nhiều lệnh và có cả thư mục. Bạn nén ntn thì đâu cần vứt nó vào thư mục làm gì nữa
          a. Zip file lại theo tên lựa chọn kèm biến ngày tháng
          b. Up cái file đó lên ggdrive bằng rclone
          Ví dụ zip -r abc.zip /home/abc -q && /usr/sbin/rclone move abc.zip "remote://Backup"

          1. Mạnh Cường 3 comment

            Mình không biết về lập trình nên chỉ lấy đoạn code của bạn rồi chỉnh sửa thêm.

            Riêng chỗ biến ngày tháng thì mình không biết khai báo như thế nào.
            Vào SSH chạy /root/backup.sh thì chỉ được lần đầu tiên, lần thứ 2 trở đi toàn bị báo lỗi No such file or directory.

            Chắc là tại cái biến $date không đúng nên nó không tạo được tên thư mục theo ngày tháng vì vậy bị trùng lặp.

            Bạn chỉ giúp mình cách khai báo biến $date với.

            Cảm ơn bạn nhiều.

          2. Việt Phương Moderator

            date có sẵn trong hệ thống rồi nên không phải khai báo gì cả. Đuôi thời gian tùy biến theo date TIMESTAMP=$(date +"%F") rồi.
            Còn ở đây bạn nén 1 thư mục cố định rồi thì bạn điền luôn tên thôi, không phải biến $data làm gì cả
            zip -r $BACKUP_DIR/abc.zip /home/cuong123/domains/folder_can_nen -q

  11. Duy 6 comment

    Hiện tại Google drive lỗi gì thì phải. Mình add OneDrive thử thì lại được. Các bạn có bị thế không ạ ?

      1. Duy 6 comment

        Cảm ơn bạn, nó lại được rồi. Do cái chỗ đặt tên là remote thì phải sửa lại hết ở file script.

        1. Việt Phương Moderator

          Uhm. Mình có note mà. Kết nối Rclone với Cloud tên remote.. Nếu bạn dùng tên khác thì sửa trong script backup

  12. Nguyễn Hùng 9 comment

    Bác Luân cho e hỏi chút nhé.
    VPS của e đang cài backup lên Google Drive giờ e có tài khoản OneDrive với dung lượng lớn hơn e muốn cài thêm backup lên OneDriver có được không. Để cả 2 cái cùng chạy song song nó có chạy ko bác. Thanks

    1. Việt Phương Moderator

      Được bạn nhé. Bạn để 2 script. 1 cái chạy 1h 1 cái chạy 2h chẳng hạn

  13. Ha 37 comment

    Mình backup giờ phục hồi dala thì gặp lỗi này là sao mọi người
    Error

    — Current Database: `data`

    CREATE DATABASE /*!32312 IF NOT EXISTS*/ `data` /*!40100 DEFAULT CHARACTER SET utf8 */

    MySQL said:
    #1044 – Access denied for user ‘abc’@’localhost’ to database ‘data’

    mình backup bằng hocvps thì không bị lỗi này.

    1. Việt Phương Moderator

      Được bạn nhé, bạn chỉnh sửa mật khẩu MySQL, đường dẫn source code và đường dẫn thư mục Nginx Vhost phù hợp là được

  14. Khôi 1 comment

    Xin chào Luân,
    Mình đang dùng script này theo huớng dẫn của bạn, hoạt động rất tốt trên Googl Drive/ GSuite for Business. Nhưng hôm nay mình test mãi nó chẳng work với thằng OneDrive Business, cứ báo lỗi này:
    Failed to create file system for “remote:”: failed to get root: unauthenticated: Must be authenticated to use ‘/drive’ syntax

    Token_access mình lấy trên macOS hoàn toàn chính xác. Không biết bạn có kinh nghiệm vụ này ko?

    1. Việt Phương Moderator

      Bạn test upload thủ công qua remote OneDrive hiện thông báo full như thế nào. Mình nghi do cấu trúc thư mục quy định trong script của bạn

  15. Binh Nguyen 86 comment

    Mình đã tải file bằng rclone từ drive về VPS xong, Cho mình hỏi “copy thư mục web và nginx” không bít Thư mục nginx nó nằm ở vị trí nào ạ 🙁

    1. Việt Phương Moderator

      Tùy hệ thống. HocVPS và nhiều hệ thống khác thường là ở /etc/nginx/conf.d

  16. Toàn 6 comment

    Hiện tại mình cài script này bị lỗi, mình mới cài phiên bản script hocvps 2.0.3 php 7.1 rồi cài bản này. Mình copy y nguyên nó báo lỗi tùm lum. Đầu tiên là cách dòng cũng bị báo lỗi, dấu ; ở cuối bị báo lỗi, phải xóa cách dòng , xóa ;, nhưng sau đó vẫn bị lỗi ở đoạn for in do, hình như ko được để dấu ;, mà bỏ ra cũng lỗi. Luân kiểm tra lại giúp được không.

    1. Việt Phương Moderator

      Bạn copy y nguyên trên SSH Terminal nhé, không sửa trên trình text rồi upload file lên VPS.
      Ngoài ra, một số trường hợp bạn cần convert lại file script vừa tạo
      Bạn cần convert file sang định dạng UNIX thì sau đó dùng # /root/backup.sh bình thường.

      # yum install dos2unix
      # dos2unix /root/backup.sh
      1. Toàn 6 comment

        à ok bạn, được rồi, mình copy vào file text rồi up lên lại ko được. Sửa trực tiếp lại được @@

        1. Việt Phương Moderator

          Do khác biệt về môi trường editor thôi. Nên mình mới bảo vấn đề của copy paste là thế

  17. Huy Duong 5 comment

    “- 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”

    Do site mình nội dung cập nhật ít nên mình muốn 1 tuần backup 1 lần và xóa file trên google cloud nếu quá 1 tháng thì chỉnh ở đâu
    Xin cảm ơn!

    1. Việt Phương Moderator

      1. Số lần backup: bạn sửa trên crontab, hiện là 0 2 * * *
      2. Xóa : Bạn sửa tham số 2w trong script

  18. Ngô Văn Cương 142 comment

    Phiên bản mới của hocvps không xài được rclone à mấy chế 🙁

    1. Việt Phương Moderator

      Rclone liên quan đến VPS thôi, không liên quan đến hệ quản trị. Và mình vẫn thấy dùng bình thường nhé

      1. Ngô Văn Cương 142 comment

        Mình dùng Linode nếu có thể mình gửi thông tin bạn kiểm tra hộ mình với.

          1. Việt Phương Moderator

            Bạn copy lại script nhé. Lỗi này thường liên quan đến việc copy – paste gây ra kí tự đặc biệt, có thể do bạn sửa trên PC rồi up lên VPS

          2. Toàn 6 comment

            đúng rồi mình cũng bị lỗi y vậy, mình cài trên centos, lỗi này ko phải copy lỗi đâu, ví như lỗi coment not found 10 là lỗi để cách dòng trống, xóa đi thì ko bị, rồi lỗi để dấu ; ở cuối nữa….

  19. Trí 22 comment

    Mình bị lỗi chổ backup database, password phải điền vô ở chổ nào vậy Admin ơi?

    Starting Backup Database
    ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: NO)

    1. Việt Phương Moderator

      Hiện không thể truy cập vào MySQL bằng tài khoản root của HocVPS. Bạn thử menu 8 của hocvps có tạo được Database không?
      Không thì bản dùng bản script backup 1.8 và điền trực tiếp user và pass của admin vào trong nội dung script

      1. Trí 22 comment

        Mình đã lấy được password và add thành công. Cám ơn Luân nhé.
        Còn cái ngnix thì hình như nó cứ báo sai đường dẫn.
        Mình dùng directadmin. Cái backup ngnix có quan trọng không Luân?

        1. Việt Phương Moderator

          Nó là cấu hình Webserver Nginx cho từng site. Bạn xem DirectAdmin để cấu hình ở đâu thì bạn quy định lại trong script nhé

          1. Việt Phương Moderator

            Trong ảnh có thư mục nào đâu bạn, toàn file. Bạn chỉ có mở toàn bộ các conf lên đọc xem cái nào quy định về server_name của site bạn thì bạn copy lại.
            Mà nếu bạn không chỉnh sửa Webserver thì cũng k cần thiết cho nó vào trong backup thường xuyên của script. Backup nó 1 lần là được rồi

          2. Việt Phương Moderator

            Uhm, thì như ý mình đó, có thể DirectAdmin đặt ở thư mục khác hoặc là trong 1 file conf nào đó chứa toàn bộ cấu hình các site luôn

          3. Trí 22 comment

            Cám ơn mod, mình đã làm được, bỏ qua phần lưu nginx. Mình có đọc bài cấu hình http2, mình bị kẹt ở chổ không thấy thư mục conf.d đâu cả, và cũng không biết kiếm nó ở đâu. Mình có post bên đó.

  20. sinhle 54 comment

    chào ad.
    mình đang gặp lỗi backup file dung lượng lớn.
    có 1 trang gần 4GB. nên mỗi lần backup thì nó điều chừa cái web 4GB ra không backup được.
    mong cách fix
    tks

    1. Việt Phương Moderator

      Mình từng dùng rclone chuyển ISO toàn trên 4GB nên vấn đề chắc không ở dung lượng rồi. Bạn xem nó có tạo được file nén không, rồi nếu tạo file nén rồi thì up lên thông báo gì
      Bạn test thủ công cho chuẩn nhé. HocVPs có menu nén riêng từng site đó
      Và check cả log của Rclone xem vấn đề ntn

  21. NAM 21 comment

    ADMIN ơi cho mình hỏi giờ mình muốn xóa gỡ hết rclone và các câu lệnh để thao tác cài lại từ đầu làm sao vậy ?
    Thanks

  22. Hải 4 comment

    Mình dùng hocvps 2.0.2, lúc chạy thử script backup.sh thì bị lỗi này

    Starting Backup Database
    ./backup.sh: line 10: $’\r’: command not found
    : No such file or directorybin/mysql
    ./backup.sh: line 12: syntax error near unexpected token `$’do\r”
    ‘/backup.sh: line 12: `for db in $databases; do

    1. Việt Phương Moderator

      Bạn copy lại nhé, hình như bạn copy vào trình Edit trên PC rồi upload file back lên VPS à

  23. Binh Nguyen 86 comment

    dùng lệnh j để xóa remote củ vậy mn? khi mình tạo 1 remote mới thì backup nó có trùng k hay phải sửa lại nhỉ?

    1. Binh Nguyen 86 comment

      mình tạo thêm remote mới (remote củ vs mới mình dùng google drive) nhưng khi mình gõ lệnh: “rclone config” để kiểm tra thì chỉ thấy Current remotes: chỉ có 1 thui?

      1. Việt Phương Moderator

        1. rclone config để xóa
        2. Mỗi kết nối bạn setup như thế nào tùy bạn nên không ảnh hưởng. Vì bản chất kết nối chỉ liên kết Cloud vs VPS. Còn backup ntn là backup script quy định
        3. Tức là bạn tạo remote mới chưa thành công hoặc trùng tên remote cũ

          1. Việt Phương Moderator

            Thế thì vấn đề ở script backup thôi k liên quan đến rclone. Bạn sửa tên remote trong script chưa?

  24. Vi nguyen 2 comment

    Code chạy rất trơn tru, rất tuyệt vời. Nhưng mình vào thư mục trên Cloud kiểm tra thì không thấy nó backup database bạn nhỉ?

    1. Việt Phương Moderator

      Bạn dùng code bản nào và hệ thống bạn cài quản trị gì? Lúc backup thủ công bạn hiện thông báo ntn?

  25. SvenSeaGal 36 comment

    nếu mình muốn backup domain trong file nén có mỗi phần public_html chứ ko phải là home/domain/public_html thì sửa đoạn nào vậy.. thanks

      1. Việt Phương Moderator

        Thì bạn sửa thủ công phần start backup website, cấu hình đường dẫn phù hợp với yêu cầu của bạn

        1. SvenSeaGal 36 comment

          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 /$domain/public_html/ -q -x /$domain/public_html/wp-content/cache/**\* #Exclude cache
          fi
          done
          echo “Finished”;
          echo ”;
          vậy đúng chưa nhỉ

          1. Việt Phương Moderator

            Phần này thủ công theo ý bạn nên bạn tự test cho chắc nhé

  26. SvenSeaGal 36 comment

    cho mình hỏi với lúc mình back up lại thì cái site chính ko thấy phần mysql để vào php my admin đâu thì làm sao để làm lại giờ T_T

      1. Việt Phương Moderator

        1. Trong thư mục mysql trên BACKUP có các database nhé. Nếu không có gì tức bạn chưa backup đc database rồi.
        2. Log backup để làm gì bạn

          1. Việt Phương Moderator

            Code không backup phần đó nhé bạn. Bạn cần thì backup thủ công. Vì nó không phải dữ liệu của website

          2. Việt Phương Moderator

            Không có phần đó thì bạn vào kiểu gì? Và các tool là 1 cá thể độc lập, đâu liên quan gì đến web bạn?

          1. Việt Phương Moderator

            Mà bạn backup sang VPS mới thì cài HocVPS vào VPS mới là xài đc các tool cần gì backup?

          2. SvenSeaGal 36 comment

            lúc sáng mình xóa nhầm cái file home xong backup lại giờ nó bị lỗi 502 bad gate way chả biết sao với cả ko vào được phpmyadmin T_T

          3. Việt Phương Moderator

            Vậy bạn chuyển toàn bộ site sang VPS mới cài lại thôi. Dùng hocvps menu 4,5 cũng backup đc nhé

          4. SvenSeaGal 36 comment

            cho mình hỏi tí nếu cài lại thì ngoài import database trong phpmyadmin thì trong root mình import vào đường dẫn nào thế

  27. lâm chương 2 comment

    Em chạy mọi thứ oke hết, đến khi test lại thì bị lỗi này ạ
    Failed to create file system for “remote:”: didn’t find section in config file
    làm sao bây giờ ạ

    1. Việt Phương Moderator

      Tức là nó không tìm thấy kết nối nào tên là remote cả. Bạn kiểm tra rclone config ra kết quả gì

      1. Việt Phương Moderator

        Bạn dùng bản script dành cho HocVPS 1.8. Trong đó bạn nhập thẳng giá trị user và password của MySQL
        Còn đường dẫn website bạn sửa cho phù hợp hệ thống mình, trong HocVPS là /home/
        Bạn đọc code phần Starting Backup Website là quy định thư mục website

          1. Phan Khánh 13 comment

            chạy web chính thì ok rồi nhưng biết sao cái cdn nó lại k zip

            Starting Backup Website
            – cdn-proxy.noixxxx.com

            zip error: Nothing to do! (/root/backup/2017-08-16/cdn-proxy.noixxxx.com.zip)

          2. Việt Phương Moderator

            Vì script backup thư mục /home/$domain/public_html nên bạn có sửa thành /var/www/ thì bên trong vẫn không có public_html để nó tìm và nén. Nên bạn tự sửa phần đường dẫn cho phù hợp hệ thống nhé

        1. Phan Khánh 13 comment

          bạn giúp mình vơi, mình hạy thì file zip của web khi zip xong, đã thấy trên server, một lúc sau file file đó bị xóa trong khi chưa up lên driver, thế là ntn bạn??

          1. Việt Phương Moderator

            Có thể tiến trình move có vấn đề. Câu lệnh trong script là move nhé bạn, không phải copy rồi xóa nên chỉ tồn tại ở VPS/Driver thôi

          2. Việt Phương Moderator

            Thì như mình đã nói, quá trình move có thể có vấn đề. Bạn kiểm tra log xem.
            Bên cạnh đó, bạn xem move được 1 file bất kì lên drive không rclone move file "remote:thư mục"

          3. Việt Phương Moderator

            Có thể script không zip đc code web. bạn bỏ phần Upload và Cleanup trong script rồi test xem có đầy đủ mọi thứ trong $BACKUP_DIR không. Vì hệ thống bạn khác HocVPS Script nên Script bạn cũng đã tự sửa cho phù hợp nên chỉ có tự bạn check thôi

          4. Việt Phương Moderator

            Ý mình là check nó có zip đc codeweb không mà, bạn hiểu ý không?

          5. Phan Khánh 13 comment

            nó có zip được bạn, mình có nói trên rồi mà. đã có file zip, 7.8gb một lúc sau thì mất, không còn trên server cũng như chưa có trên drive. còn nginx với data thì đã lên drive

          6. Việt Phương Moderator

            Drive bạn đủ trống 7.8GB không? Bạn tự chạy lệnh rclone move file đó lên driver thì như thế nào

          7. Phan Khánh 13 comment

            drive của mình trống 10gb nữa, đó là mình tự chạy lệnh bạn ạ. 1 web khác nhỏ nhỏ trong server của mình đc zip và up lên bình thường

          8. Việt Phương Moderator

            Thế bạn upload thủ công cả thư mục thì được?

  28. fususu 35 comment

    Em vừa chạy backup.sh một phát trên vps mới, tự nhiên nó đòi nhập password database thủ công luôn, cái cũ thì không bị 🙁
    —————————
    /root/backup.sh
    Starting Backup Database
    Enter password:
    ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: YES)
    Finished

    Starting Backup Website
    – mrsusu.com
    – phut59.com
    Finished

    Starting Backup Nginx Configuration
    Finished

    Starting Uploading Backup
    ——————–

    Nếu ko nhập đúng pass thì nó chỉ backup folder và conf thôi.
    Mà có 2 website, biết nhập pass của web nào?
    Mà nếu vậy thì làm sao crontab chạy được tự động?

    1. Việt Phương Moderator

      Bạn dùng HocVPS phiên bản bao nhiêu và script phiên bản bao nhiêu?

      1. fususu 35 comment

        Mình dùng bản 1.8. Mà mình tự fix được rồi.

        Ko hiểu sao cái biến mariapass nó không tự động thay password nên nình tạo mật khẩu mới cho user root, và thay luôn vào đó 🙂

    1. Việt Phương Moderator

      Bạn chạy rclone config rồi thêm remote mới vào. Remote cũ có thể xóa đi hoặc để nguyên không quan trọng

  29. Vu Hai 7 comment

    Bác luân cho em hỏi em cài đến khúc nhập link vào thì bị lỗi

    400. That’s an error.

    Error: invalid_request

    Missing required parameter: redirect_uri

    Làm sao để fix ạ.

    1. Việt Phương Moderator

      Link đó bạn copy thiếu phần cuối, có redirect_uri rồi. Bạn click thẳng hoặc copy lại đầy đủ nhé

      1. Vu Hai 7 comment

        Em đã sửa lại và ok, em dùng scrip vpssim, chạy backup chỉ backup được public_html và nginx còn sao database ko backup được nhỉ, bác giúp em phát

        1. Việt Phương Moderator

          VPSSIM hệ thống MySQL khác. Bạn dùng bản script cho HocVPS 1.8 rồi điền thẳng password mysql vào, không sử dụng biến

  30. Nguyễn Công 17 comment

    Em muốn chuyển ngược dữ liệu từ VPS lên Drive thì làm kiểu j a nhỉ

    1. Việt Phương Moderator

      Script là chuyển dữ liệu từ VPS lên Cloud mà ban. Bạn chuyển dữ liệu lên Cloud thì dùng lệnh copy/move của Rclone nhé

    1. Việt Phương Moderator

      Script trong bài đã giúp tự tạo backup rồi up lên Cloud đó bạn

      1. đức 31 comment

        Tức là Rclone sẽ tự động tạo backup và up lên google drive
        hay là hocvps scrip backup sẽ làm việc đó?

        tại e thấy 2 bài viết cùng 1 ngày, hai bài khác nhau chỗ nào ạ e ko hiểu lắm 🙁

        1. Việt Phương Moderator

          Script trong bài này bao gồm tạo backup và dùng rclone để up lên nhé

          1. đức 31 comment

            ok e hiểu r

            vậy là sẽ dùng hocvps scrip để tạo file backup rồi dùng rclone để up lên google drive

            vậy hocvps scrip backup có dùng đc trên vps mà ko dùng hocvps ko ạ?

          2. Việt Phương Moderator

            Trong script backup đó ĐÃ BAO GỒM CẢ TẠO FILE BACKUP VÀ DÙNG RCLONE ĐỂ UPLOAD LÊN
            Còn nếu bạn sử dụng hệ thống khác thì sửa đường dẫn lưu thư mục web cũng như pass database cho phù hợp

  31. Việt 16 comment

    Bác Luân ơi cho em hỏi VPS của em mỗi lần chạy backup đều bị đứng. Em chạy hocvps. Bác có cách làm cho nó khỏi đứng Ram được ko ạ, hay cho vps tự restart. VPS em Ram 1GB bên Vultr.
    Mong hồi âm từ anh!

    1. Việt Phương Moderator

      Vậy bạn theo dõi lúc bạn backup thủ công gặp vấn đề như thế nào? top -mxem hệ thống nữa

        1. Việt Phương Moderator

          Tất nhiên bạn backup bằng Rclone rồi. Ý là khi bạn backup thủ công /root/backup.sh thì hệ thống như thế nào đó

          1. Việt 16 comment

            Backup thủ công thì em dùng hocvps, có tính năng cho backup từng web ra, và backup bình thường, không thấy báo gì cả

          2. Việt Phương Moderator

            Ý mình là bạn chạy /root/backup.sh thủ công thì chiếm dụng tài nguyên server như thế nào

          3. Việt 16 comment

            Nó chạy bình thường thôi anh và lưu vào folder root/backup/ngày : http://prntscr.com/fu6sxf
            Chứ em cũng không biết nó chiến dụng server như thế nào? Hay anh chỉ em cách gỡ rclone này cũng dc ạ!

          4. Việt Phương Moderator

            Gỡ thì bạn gỡ cái /usr/sbin/rclone và xóa crontab đi là được

          5. Việt 16 comment

            ý anh gỡ cái /usr/sbin/rclone có phải là xóa nó đi ko ạ? Với xóa crontab bằng cách nào ạ?

          6. Việt Phương Moderator

            uhm, xóa cái /usr/sbin/rclone. Còn xóa crontab thì bạn edit crontab như lúc add rồi xóa dòng đó đi là được