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é.
Giờ mình muốn bỏ qua giai đoạn zip file và đẩy thẳng lên Drive thì chỉnh kiểu gì vậy?
echo “Starting Uploading Backup”;
/usr/sbin/rclone move /root/backup/file_name.zip “remote:folder_name” >> /var/log/rclone.log 2>&1
echo “Finished”;
echo ”;
duration=$SECONDS
echo “Total $size, $(($duration / 60)) minutes and $(($duration % 60)) seconds elapsed.”
Em chỉ cần auto upload lên thôi, thì dùng đoạn lệnh sau là được phải ko anh?
SERVER_NAME=Backup
echo “Starting Uploading Backup”;
/usr/sbin/rclone move /home/backup “hai:$SERVER_NAME” >> /var/log/rclone.log 2>&1
echo “Finished”;
echo ”;
Chuẩn nhé, thêm câu lệnh remove file backup cũ trên drive nữa nhé.
Hôm qua em đã thử nhưng mà nó báo lỗi này, log cũng ko ghi vào anh ạ. Em xem doc trên web của Rclone thì chạy lệnh
./hainole_backup_script.sh
Starting Uploading Backup
: command not foundript.sh: line 2:
: ambiguous redirectipt.sh: line 3: 1
Finished
: command not foundript.sh: line 4:
Em xem doc trên web của Rclone thì chạy lệnh:
rclone copy /home/source remote:backup
liệu dùng crontab chạy mỗi lệnh này được ko anh nhỉ 😀
sh hainole_backup_script.sh
Thử lệnh đó coi có chạy được ko bạn?
sh /root/backup.sh
Hic, mình thử sao lưu thì nó báo như này là sao Luân nhỉ?
————
[root@li850-24 ~]# /root/backup.sh
/root/backup.sh: line 4: +%Y-%m-%d_%H-%M: command not found
/root/backup.sh: line 7: Starting Backup Database: command not found
ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: NO)
Usage: grep [OPTION]… PATTERN [FILE]…
Try ‘grep –help’ for more information.
/root/backup.sh: line 10: -p5545b4961663fa7e7: command not found
/root/backup.sh: line 11: (Database|information_schema|performance_schema|mysql): command not found
/root/backup.sh: line 9: for: command not found
/root/backup.sh: line 10: syntax error near unexpected token `do’
/root/backup.sh: line 10: `$databases; do’
——————–
Với lại mình không dùng WP nên không biết trong cái script có thừa đoạn nào ko?
Cảm ơn Luân
Hệ điều hành của bạn 32 hay 64bit?
centos x64 bạn ạ
Có bạn comment bảo cần phải cài thêm dos2unix, bạn thử xem được không?
Hic, không được nó mới bùn chứ 🙁
mình phát hiện ra trên CentOS của linode nó ko chạy, toàn báo command not found trong khi cũng CentOS của hostvn thì add file là chạy luôn. Hay thằng Linode nó limit cái gì trong hệ điều hành Luân nhỉ
Căng nhỉ. Mình hiện không có VPS linode để test thử
Bạn muốn test ko? comment email, mình tạo 1 em vps cho bạn test
Chào Phương,
Mình add bạn trên skype rồi nhé.
Cảm ơn bạn!
Hoá ra do nó copy lệnh bị sai do sử dụng web browser, tks Việt!
Mình cũng đã tạo file backup.sh trên windows để sửa chữa cho phù hợp với VPS của mình. Sau đó mới upload file qua FTP lên server thì chạy cũng bị lỗi command not found tương tự. Mình vào ssh rồi dùng lệnh nano để tạo file mới thì mọi bình thường. Đã test trên linode ^^
Uhm bạn. Lỗi bạn trên cũng là do việc copy paste code không chuẩn khiến sai code, command not found. Nên chú ý khi copy code thôi
Dùng cái này cho VPS sử dụng Directadmin thì làm sao Luân ơi.
Cái này bạn tự cấu hình tương ứng theo hệ thống hiện tại thôi, mình không dùng DirectAdmin nên chịu thua.
Bạn ơi, restore mà up Mysql nó không đủ, mình có dùng Woocommerce, mất rất nhiều dữ liệu thì làm sao 🙁
Bạn hãy dùng tool chuyên dụng như BigDump để restore, không dùng phpMyAdmin nếu dữ liệu lớn nha.
Nhớ xóa hết table trước khi import.
bài viết hay (y)
Chào luân, mình sử dụng lệnh này: 0 2 * * * /root/backup.sh > /dev/null 2>&1
Mà sao nó lại backup và upload lên google driver lúc 13h nhỉ
Bạn tham khảo bài này: https://hocvps.com/thay-doi-timezone-tren-centos/
Hi admin!
cho mình hỏi có 2 dòng zip error là sao nhỉ? với lại mình làm tự backup nó không chạy, cần kiểm tra lại phần nào nhỉ?
============
Starting Backup Database
Finished
Starting Backup Website
– cgi-bin
zip error: Nothing to do! (/root/backup/2016-10-15_09-26/cgi-bin.zip)
– easyticket.vn
– html
zip error: Nothing to do! (/root/backup/2016-10-15_09-26/html.zip)
Finished
Starting Backup httpd Configuration
Finished
Starting Compress Files
Finished
Starting Uploading Backup
Finished
Total 71M, 0 minutes and 16 seconds elapsed.
nghiên cứu ra rồi, hình như admin thiếu lệnh sh để nó mới chạy nhé
mình dùng cú pháp * 2 * * * sh /root/backup.sh để test backup mỗi 1 phút thì ok rồi, còn disable email lệnh này >/dev/null 2>&1 không biết giữ > và / và khoảng trắng không nhỉ?
======================
* 2 * * * sh /root/backup.sh >/dev/null 2>&1
vừa test lại không cần sh cũng chạy được, do mình quên restart mất tiêu, service crond restart, hihi, good job.
0 2 * * * /root/backup.sh > /dev/null 2>&1
Ok 😀
Bạn không dùng HocVPS Script, nên cần check lại đường dẫn chứa website.
Để kiểm tra lỗi, bạn chỉ cần copy paste chạy từng dòng lệnh là ok.
đường dẫn website đã sửa lại đúng và backup lên google drive ok hết, nhưng không hiểu sao lại bị lỗi zip error nhỉ?
Bạn chạy từng lệnh dò xem sao
Rất hay, đơn giản, gọn lẹ
Cảm ơn Luân vì hocvps
Bài viết khá hữu ích cho anh em
Anh ơi cho em hỏi khi nó backup lên Drive nó tự bỏ vào 1 thư mục tên VPS, cái tên thư mục này mình muốn đổi ở chỗ nào vậy ạ, vì có 2 con VPS sợ nó bỏ cùng vào 1 thư mục khó phân biệt
Ngay đoạn đầu code đó em, SERVER_NAME=VPS ấy 😀
Mỗi server đặt một cái tên khác nhau là có folder riêng.
Cám ơn bài hướng dẫn của Luân nhé!
Sao em chạy “rclone config” thì nó báo “-bash: /usr/sbin/rclone: cannot execute binary file” mà không phải là “No remotes found – make a new one” anh Luân nhỉ? 🙁
Bạn đang cài hệ điều hành gì thế?
CentOS bác ạ. Giờ vẫn chưa biết nguyên nhân sao cả
Bác cài bản x86 xem? http://downloads.rclone.org/rclone-current-linux-386.zip
Uh đúng rồi, mình quên mất vụ x64 với x86 đấy.
Chào Luân !
Cho mình hỏi là “Mình có thể backup nhiều VPS lên cùng 1 google drive được không ?”.
Cái câu lệnh /usr/sbin/rclone -q –min-age 2w delete “remote:$SERVER_NAME” là nó sẽ xóa tất cả folder, file trên google drive (kể cả những file không liên quan đến những folder, file backup từ VPS )
Hoàn toàn được nhé, mỗi VPS bạn lại setup từ đầu, đặt tên SERVER_NAME khác để có folder riêng trên Google Drive.
Do có đường dẫn remote:$SERVER_NAME nên rclone chỉ xóa file trong thư mục này mà thôi (mặc định mình đặt SERVER_NAME = VPS đó). Không có chuyện xóa toàn bộ những file không liên quan nha.
Bác Luân có thể hướng dẫn e cũng như mọi người cách thay đổi thông số như: Thời gian upload file backup lên Google Drive thay vì 2h sáng, thời gian xóa file backup trên Google Drive thay vì 2 tuần được không? Thank bác 🙂
Điều chỉnh thời gian upload ở bước 3, liên quan đến cronjob bạn tham khảo thêm ở đây: https://hocvps.com/tong-quat-ve-crontab/
Thời gian xóa file trên Google Drive bạn chỉnh ở dòng này:
Thay vì 2w bạn có thể chuyển thành 5d (5 days), 2d (2 days)
Thank bác. Để e tham khảo thêm 😀
Viết hướng dẫn restore toàn bộ VPS với bản Backup này luôn đi bạn.
Restore thì bạn làm thủ công từng phần thôi, import SQL, upload files
từ script trên, bạn có thể mò ra script restore mà.
Cảm ơn Luân.
Đúng cái mình cần.
Rất đơn giản và dễ hiểu.
Có bạn nào bán tk google drive ko nhỉ?
Vì đang cần mua thêm dung lượng để backup mà mua cái 1T từ google có vẻ đắt quá
mua đây nè bác: http://coupongiamgia.com/dich-vu/dich-vu-email.html .
đang có 2 cái ở đây. chạy khá lâu rồi. 1 cái backup, 1 cái upload 😀
Đã thử và chạy ngon lành phết ?
Đã thực hiện thành công 😀
Bác ơi mình muốn uninstall cái rclone này thì làm như nào vậy, mong bác chỉ giúp
Thanks
ah thôi mình xóa được rồi 🙂 tks
xóa bằng cách nào thế bác
Bạn vào thư mục /usr/sbin/ xóa file rclone là được.
Thank a nhiều. E vừa làm theo và đã thành công 🙂
Cảm ơn Anh, đã test thành công! (y)
Đã OK!
Đã làm theo các bước nhưng khi chạy rclone lsl remote:
• Trên google driver không có thư mục nào cả.
Bác Luân ơi. Cho mình hỏi. Sau khi backup được rồi thì restore lại VPS thế nào?
Restore thủ công từng phần nhé. Có file database, file nén toàn bộ website đó bạn
Anh Luân cho em hỏi vì VPS của em mới backup được 5 ngày đã gần hết dung lượng Google driver rồi, anh chỉ cho em nếu thay vì 2 tuần mới xóa file cũ thì em muốn rút xuống 5 ngày hoặc 1 tuần thì làm sao à anh.
Vậy bạn chuyển tham số
--min-age 2w
thành--min-age 5d
hoặc--min-age 1w
Vậy chỗ đó phải sửa thành:
/usr/sbin/rclone -q –min-age 5d delete “remote:$SERVER_NAME” #Remove all backups older than 5 day
#/usr/sbin/rclone –min-age 5d lsl “remote:$SERVER_NAME” #List all backups older than 5 day, TESTING only
à Luân?
Em điền mã token thì nó báo Failed to configure token: failed to get token: Post https://accounts.google.com/o/oauth2/token: x509: certificate signed by unknown authority. Thế là bị sao ạ, xin anh giúp em với.
mình dùng easyengine thì setup auto backup như thế nào vậy luân
cái script của bachtuanvan có vẻ dễ dùng hơn, có tệp config lưu cấu hình và vị trí nhập thông số rất thuận tiện dễ hiểu.
có restore nữa thì quá ngon 😀
Restore thì tự làm thôi 😛
Đã thử và thành công, tuy nhiên upload lâu quá, 3GB mà hết 80 phút.
Thế là do đường truyền của VPS rồi, chứ Google Drive tốc độ cao đó bạn
VPS mua của Mắt Bão
Với lại Luân có thể chỉnh sửa đoạn script nén thư mục web vì cấu trúc thư mục dạng:
/home/username/web/domain.com/public_html/
hiện tại mình nén luôn thư mục home rồi upload lên , do đó chứa nhiều file ko cần thiết.
VPS của VN đường truyền đi quốc tế rất chậm nha 😀
Viêc chỉnh sửa đường dẫn tham khảo thử đoạn này:
Luân ơi, cái username là thay đổi theo username mình tạo chứ ko phải cố định
Vậy thay username bằng *
em bị lỗi khi đã cài xong dùng lệnh :rclone lsl remote” thì nó báo directory not found
Bạn thiếu dấu : ở cuối rồi, lệnh thế này:
Mình chạy mà bị lỗi như vầy:
rclone lsl remote:
2017/01/01 14:15:12 Failed to create file system for “remote:”: didn’t find section in config file
Bạn chạy
# rclone config
trước đó để tạo config tênremote
chưa?Luân ơi cho mình hỏi mình đang xài VPS của vultr và sử dụng Sentora để quản lý VPS. Không biết có dùng cách này để back up VPS được không?
Được nhé bạn, nhưng phải sửa lại script cho tương thích.
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
Link này sao đây bác 🙁
Chưa mò ra bác 😀
Là chờ hay sao bác
Là mình thử cài với One Drive rồi nhưng chưa biết tiếp tục ra sao đó. Đợi lúc khác rảnh mò tiếp.
hớ mình cài google driver mà >.<
Vậy ở bước Use auto config? bạn phải chọn n
Bạn mở 1 terminal khác connect tới vps theo mẩu sau : ssh abc@def -L 53682:127.0.0.1:53682
Sau đó truy cập http://127.0.0.1:53682/auth trên máy của mình là dc nhé
bạn đang ấn y đó, mình vừa bị, ấn n ấy
Hóng thêm cái hướng dẫn với One Drive 😀
One Drive có vẻ lằng nhằng hơn Google Drive, đợi khi nào rảnh mình sẽ test sau 😀
Share ae cách tạo tài khoản google drive không giới hạn dung lượng hoàn toàn miễn phí nè
Bạn share cho mn cách làm đi
Cho mình xin với bác 😀
Bác nào cần tk google ko giới hạn dung lượng liên hệ https://fb.com/googleunlimited
Để thử up lên onedrive, mua 365 kèm 1TB mà dùng ko hết
Cám ơn bác Luân nhiều. Khá bổ ích trong khi hiện tại google có lẽ là nơi lưu trữ hiệu quả và an toàn.
Cái này mình config với amazon drive toàn lỗi thôi, bạn setup với amz được chưa hướng dẫn mình cái
Thanks
Mình chưa thử, để lúc nào làm thử coi.