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.
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é.
Nội dung bài viết
II. Backup VPS lên Cloud với Rclone
1. Tạo kết nối với Google Drive
2. Tạo kết nối với Amazon Drive/One Drive/Yandex
3. Script backup toàn bộ VPS và upload lên Cloud
4. Tạo cronjob tự động backup hàng ngày
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.
– 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 ID
và Client 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 folder
và Service 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.
Giao diện sẽ xuất hiện như sau:
Nhấn nút Allow để đồng ý, sau đó bạn sẽ nhận được đoạn mã verification code như hình dưới:
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.
- 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 fileD:\Rclone/rclone.exe
- 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"
- 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.
– 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
delete
vàrmdirs
. 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é.
Cảm ơn bác đã chia sẻ. Bấy lâu nay toàn phải dùng VPS hết hạn xong vứt làm bao nhiêu dữ liệu lại phải up lại
Mình chạy thì bị lỗi như bên dưới. Mong Admin fix lỗi sớm. Thank you!
/root/backup.sh: line 2: $’\r’: command not found
/root/backup.sh: line 4: $’\r’: command not found
/root/backup.sh: line 6: $’\r’: command not found
/root/backup.sh: line 12: $’\r’: command not found
/root/backup.sh: line 14: $’\r’: command not found
Starting Backup Database
/root/backup.sh: line 15: $’\r’: command not found
: No such file or directoryusr/bin/mysql
/root/backup.sh: line 17: $’\r’: command not found
/root/backup.sh: line 18: syntax error near unexpected token `$’do\r”
‘root/backup.sh: line 18: `for db in $databases; do
Nay script google driver la so 15 roi admin oi
Script hiện tại còn sử dụng được không admin?
Backup lưu xong rồi, lên drive tìm mãi không thấy folder, có cách nào biết folder nó nằm ở đâu k bác
Bạn phải thực thi đúng nó mới đẩy lên. Kiểm tra bằng lệnh “rclone lsd remote:” thấy các folder là oke.
Có cách nào chừa lại 1 bản backup trên vps không admin? Vì nếu có lỗi trong quá trình upload lên thì vẫn còn file backup trên vps, chứ không không còn cách nào để lấy file cả. Cảm ơn admin nhiều!
mình thử mấy lần nhưng đều bị lỗi này
[root@lowendviet home]# /root/backup.sh
/root/backup.sh: line 2: $’\r’: command not found
/root/backup.sh: line 4: $’\r’: command not found
/root/backup.sh: line 6: $’\r’: command not found
/root/backup.sh: line 12: $’\r’: command not found
/root/backup.sh: line 14: $’\r’: command not found
Starting Backup Database
/root/backup.sh: line 15: $’\r’: command not found
: No such file or directoryusr/bin/mysql
/root/backup.sh: line 17: $’\r’: command not found
/root/backup.sh: line 18: syntax error near unexpected token `$’do\r”
‘root/backup.sh: line 18: `for db in $databases; do
Mình làm theo bài hướng dẫn và thành công rồi. Có 1 ít lưu ý nhỏ cho bạn nào newbie như mình để làm cho dễ.
– Menu Google Drive đã chuyển thành 13 rồi.
– Đặt name của config phải nhớ để mà sửa trong file ‘backup.sh’ . Trong ví dụ của Ad thì name là ‘remote’ nên trong file backup.sh có 3 chỗ phải sửa. Nếu bạn cũng đặt name là ‘remote’ như ad hướng dẫn thì đỡ phải sửa hơn.
– Cảm ơn Ad có bài viết hướng dẫn chi tiết.
Lỗi ạ 2020/12/11 13:29:46 Failed to create file system for “remote:HOCVPS_BACKUP”: didn’t find section in config file
Anh Luân cho e hỏi, em có 1 share Drive Unlimited (của công ty em) nếu dùng để backup vps thì có ổn hay vi phạm chính sách gì google ko ta
Phát hiện ra lỗi. Nếu domain chính dùng clouflas thì không backup đưa lên driver được
Tôi cũng đang dùng Cloudflare vẫn backup bình thường nè.
rclone lsl remote:HOCVPS_BACKUP
Chạy lệnh này lỗi. nó báo ko thư mục 2020/09/16 00:38:47 Failed to lsl: directory not found
Làm theo hướng dẫn ok hết rồi. nhưng làm xong ko hiểu nó backup đưa lên google drive thì vào đâu. và bao lâu thì nó đưa lên 1 lần. muốn ktra thì thế nào bác. ko thấy có hiện tượng gì
Trong bài có ghi đầy đủ thông tin rồi bạn nhé.
sao nó không tự động xóa sau 2 tuần nhỉ 🙁 thử kết nối vẫn bình thường, vẫn auto backup , nhưng lại k xóa.
Vẫn có đầy đủ dòng lệnh /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
Bạn chạy lệnh thủ công xem có được không?
Chạy lệnh xóa thủ công tệp cách 2 tuần như nào ad nhỉ
e chạy thử nó bị lỗi này ạ
[root@top1 home]# /usr/sbin/rclone -q –min-age 2w delete “remote:$SERVER_NAME”
2020/08/29 11:33:32 ERROR : Contact DHN.xlsx: Couldn’t delete: googleapi: Error 403: The user does not have sufficient permissions for this file., insufficientFilePermissions
Kiểm tra lại cài đặt rclone kết nối với Google Driver nhé.
Dạo này gg drive đổi thành thứ tự 13 chứ không phải 11 nha ad. Ad update lại ko ae làm theo lại trật
Ok nhé
e chay bị lỗi k kết nối được đến. http://127.0.0.1:53682/auth
Sau đó e tắt chạy lại thì bị lỗi này ạ Failed to configure token: failed to start auth webserver: listen tcp 127.0.0.1:53682: bind: address already in use
Bạn đang kết nối với dịch vụ gì thế?
Configure this as a team drive?
y) Yes
n) No
E chọn N như bài ra link lỗi như trên ạ. chọn yes thì oke rồi ạ
nay vô e chạy lại backup vẫn oke.. mà hiện lỗi này , k biết có backup thiếu file gì ko ad nhỉ
2020/08/15 11:14:39 Failed to create file system for “remote:THEAGE_RAMNODE_BACKUP”: couldn’t find root directory ID: googleapi: Error 403: Rate Limit Exceeded, rateLimitExceeded
2020/08/15 11:14:40 Failed to create file system for “remote:”: couldn’t find root directory ID: googleapi: Error 403: Rate Limit Exceeded, rateLimitExceeded
Bạn kiểm tra lại cấu hình kết nối Rclone với Google Drive nhé.
E thấy nó vẫn kết nối bình thường ạ, vẫn backup có file bình thường.. mà nó lại báo lỗi trên
Mình cũng đang bị dính lỗi này ” Rate Limit Exceeded, rateLimitExceeded”
Mình đang backup từ 2 con vps lên cùng 1 acc google driver.
Kết quả là vps của mình không upload được file từ vps lên 🙁
2020 rồi . Có 1 số thay đổi về lệnh. Hihi
Thay đổi gì vậy bác?
Thay đổi thứ tự Google Drive từ 11 lên 13 còn cấu trúc vẫn thế.
Mình setup xong backup được mỗi code còn database thì báo lỗi
[root@vps ~]# /root/backup.sh
Starting Backup Database
ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: NO)
Finished
Mình cài trên vps dùng directadmin có cần sửa gì trong file config không bạn nhỉ.
Em chót lỡ tay xóa user root trong phpmyadmin
Nên khi em chạy backup thì không xuất được database nữa
Admin chỉ em cách khôi phục user root với quyền xuất database với ạ
[root@185626-01 home]# /root/backup.sh
Starting Backup Database
ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: YES)
Finished
Starting Backup Website
– domainname.com
Finished
Starting Backup Nginx Configuration
Finished
Starting Uploading Backup
Finished
Total 34M, 0 minutes and 27 seconds elapsed.
Nếu muốn loại trừ các database nào đó thì thêm đoạn như thế nào vậy bác.
Vì hiện tại các panel có thêm các database mặc định như test, myslq, information_schema…
E không muốn backup các database này ấy ạ.
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
Hiện e muốn nó lưu lâu hơn 2 tuần hãy xóa thì như thế nào vậy ad, em xin cảm ơn ạ
Websie có dung lượng TB đến chục TB thì backup thế nào bạn? Có cách nào đồng bộ lên google driver lần sau chỉ transfer những dữ liệu thay đổi như kiểu Rsync không nhỉ?
Chục TB thì xài rclone sync lên S3 hoặc S3 compatible chứ ai lại backup lên Drive 😀
Cảm ơn admin, cho mình hỏi với,
vps mình chạy 1 website tại thư mục /var/www/html thì sửa script như thế nào nhỉ
xin cảm ơn!
cám ơn nhiều nha, bài viết rất hay, mình làm được rồi!
Cho mình hỏi file sql backup có dang dbname.gz không phải như những hướng dẫn khác kiểu dbname.sql.gz
Mình giải nén lệnh trên server thì ko có đuôi file nên khi restore lại database thì ko được.
Admin oi. Muốn upload lên fshare thì làm thế nào, vì thấy có gói 500k được 350G, rẻ hơn google nhìu.
hiện tại khi backup code của website tại đường dẫn /home/domain.com/public_html/, thì mình có thư mục uploads có chứa ảnh và nằm trong thư mục public_html luôn ạ, rất nặng nên mình không muốn backup lên vì sẽ chạy rất lâu, trong khi code chỉ có 30mb nhưng file ảnh tầm mấy gb, vậy làm sao khi mình backup code mà loại trừ được folder uploads này vậy ạ
Ad ơi cho hỏi. Nếu là Apache Centos cài DirectAdmin thì Script 2 –> cần sửa lại cp -r /etc/nginx/conf.d/ $BACKUP_DIR/nginx/ như thế nào ?
Cho mình hỏi trước khi mình chưa thêm domain phụ trên vps thì backup lên GD thì có 1 file zip và 2 thư mục mysql và nginx, nhưng khi mình thêm domain thứ 2 thì backup lên GD chỉ có file zip và thủ mục ngix thôi…
Có bác nào gặp tình trạng như mình không?
hi admin
có việc này nhờ admin giúp.
Tôi có 2 vps, con A chạy code web, con B chạy dataserver.
có cách nào khi chạy backup trên con A, nó tự backup database trên con B hok.
Vì theo như ở trên,nó chỉ chạy backup database trên con A thui.
Làm thì phức tạp lắm. Đơn giản nhất là VPS A bạn không backup database và VPS B thì không backup code web
Xóa phần tương ứng trong script backup là được
Cảm ơn. Mình đã tìm được cách chạy rùi
hi admin
có việc này nhờ admin giúp.
Tôi có 2 vps, con A chạy code web, con B chạy dataserver.
có cách nào khi chạy backup trên con A, nó tự backup database trên con B hok.
Vì theo như ở trên,nó chỉ chạy backup database trên con A thui.
Ngon quá, vậy mà từ trước đến giờ ko biết tool này, cảm ơn anh Luân nhé.
Failed to create file system for “remote:HOCVPS_BACKUP”: didn’t find section in config file
Lỗi này khi kiềm tra bằng lệnh rclone lsl remote:HOCVPS_BACKUP là sao bạn ?
Kết nối của bạn có phải tên là remote không?
Mình làm y chang bài hướng dẫn trên á bạn.
bác biết cách fix chưa, chỉ giúp e với, e cũng bị như bác á hic hic
đoạn này nhờ ad hỗ trợ vì không hiểu:
“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.”
Và bên dưới là dòng lệnh cài:
cd /root/
wget https://downloads.rclone.org/v1.42/rclone-v1.42-linux-amd64.zip
unzip rclone-v*.zip
\cp rclone-v*-linux-amd64/rclone /usr/sbin/
rm -rf rclone-*
————————————————————-
Tuy nhiên là phiên bản 1.42. Hiện tại đã có v1.48.0 thì nâng cấp bằng lệnh nào ad.
rất cảm ơn
Bạn lên rclone tải phiên bản mới nhất nhé. Tham khảo : https://rclone.org/downloads/
https://downloads.rclone.org/v1.48.0/rclone-v1.48.0-linux-amd64.zip
Rclone thì khác gì snapshot ngay trên vps vultr? Và có dùng bản rclone này để backup hay migrate, copy sang 1 vps khác như thế nào Luân nhỉ?
Rclone là để bạn sao lưu dữ liệu cần. Còn snapshot là sao lưu toàn bộ VPS.
Copy sang VPs thì bạn dùng lệnh thủ công để down từ Cloud về
Chào ad.
Lâu nay mình vẫn dùng google. Nhưng tài khoản 100GB đã hết. Bây giờ mình muốn chuyển hướng lưu sang Mega.
Xin nhờ admin hướng dẫn cách nào để chỉnh lại cho nó lưu qua Mega.
Cảm ơn bạn rất nhiều
Mega là phương thức lưu trữ thứ 14 trong Rclone đó bạn. Bạn cài như bình thường.
Bạn có thể tham khảo thêm từ Rclone
https://rclone.org/mega/
Mega không còn thấy hiển thị nữa ad ơi?
”
1 / Amazon Drive
\ “amazon cloud drive”
2 / Amazon S3 (also Dreamhost, Ceph, Minio)
\ “s3”
3 / Backblaze B2
\ “b2”
4 / Box
\ “box”
5 / Cache a remote
\ “cache”
6 / Dropbox
\ “dropbox”
7 / Encrypt/Decrypt a remote
\ “crypt”
8 / FTP Connection
\ “ftp”
9 / Google Cloud Storage (this is not Google Drive)
\ “google cloud storage”
10 / Google Drive
\ “drive”
11 / Hubic
\ “hubic”
12 / Local Disk
\ “local”
13 / Microsoft Azure Blob Storage
\ “azureblob”
14 / Microsoft OneDrive
\ “onedrive”
15 / Openstack Swift (Rackspace Cloud Files, Memset Memstore, OVH)
\ “swift”
16 / Pcloud
\ “pcloud”
17 / QingCloud Object Storage
\ “qingstor”
18 / SSH/SFTP Connection
\ “sftp”
19 / Webdav
\ “webdav”
20 / Yandex Disk
\ “yandex”
21 / http Connection
\ “http””
…….plsss
Phiên bản Rclone mới nhất v1.48 mình vẫn thấy Mega. Bạn kiểm tra lại nhé
Em taọ y chang rồi mà sao nó không backup đc vào thư mục trên driver nhỉ ?
login as: root
root@45.79.14.199‘s password:
Last login: Tue Jun 4 13:27:20 2019 from 14.162.144.190
[root@li1113-199 home]# rclone lsd remote:
-1 2019-06-04 13:51:24 -1 BACKUPWEB
[root@li1113-199 home]# /root/backup.sh
Starting Backup Database
Finished
Starting Backup Website
– fastopic.com
– handmadevn.shop
Finished
Starting Backup Nginx Configuration
Finished
Starting Compress Files
Finished
Total 35M, 0 minutes and 9 seconds elapsed.
[root@li1113-199 home]# rclone lsl remote:HOCVPS_BACKUP
2019/06/04 14:28:00 ERROR : : error listing: directory not found
2019/06/04 14:28:00 Failed to lsl: directory not found
[root@li1113-199 home]# rclone lsl remote:BACKUPWEB
[root@li1113-199 home]# rclone lsl remote:BACKUPWEB
Bạn sửa gì thêm phần upload không? Starting Compress Files
Ngoài ra, bạn kiểm tra trên Drive bản trình duyệt xem có file không
Và kiểm tra upload thủ công được không
Em sửa mỗi sever name thôi ạ, driver ko có file gì cả, upload thủ công cũng ko đc ạ
Upload thủ công không được thì bạn xem lại kết nối với rclone nhé. Phần rclone config đó
đường dẫn /var/www/domain/htdocs nhưng đã sửa lại:
# Loop through /home directory
for D in /var/*; do
if [ -d “${D}” ]; then #If a directory
domain=${D##*/} # Domain name
echo “- “$domain;
zip -r $BACKUP_DIR/$domain.zip /var/www/$domain/htdocs/ -q -x /var/www/$domain/htdocs/wp-content/cache/**\* #Exclude cache
Như trên rồi nhưng báo lỗi /root/backup.sh: line 33: zip: command not found
Finished
Bác chỉ giúp em với! thanks bác
VPs bạn đã cài zip chưa? Bạn thử chạy 1 lệnh zip thủ công xem
Và bạn kiểm tra dòng 33 là lệnh gì
Cho mình hỏi 1 chút.
Mình tạo như hướng dẫn và đã chạy. Tuy nhiên, thi thoảng vẫn có ngày nó đẩy lên Google Drive không đủ File. Google Drive vẫn còn trống dung lượng. Có cách nào xem lại Log hoặc kiểm tra không bạn nhỉ
Rclone có câu lệnh log đó, nhưng check được quá trình upload thôi. Bạn tham khảo
https://rclone.org/docs/
Còn quá trình nén file nếu lỗi thì bạn cần tạo thêm câu lệnh log trong script
Mình muốn loại trừ nhiều folder không backup thì xử lý sao nhỉ
Mình làm thành công và đã chạy chức năng backup và up file lên GG khoảng 1 năm nay. Lúc trước hoạt động tốt. Nhưng gần đây thì mình kiểm tra danh sách file nén website (.zip) thiếu 1 số website, như vậy là lỗi gì ạ?
Bạn xóa từng đoạn của script để test xem lỗi do đoạn nào nhé