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é.
Sao mình không xem được các file và thư mục đã backup trong thư mục /root/backup/ nhỉ.
Mình dùng lệnh ls
Đã backup lên Cloud là sẽ xóa ở VPs nhé bạn
Hi Admin, mong bạn hỗ trợ, VPS của mình 80GB, đã sử dụng 64% dung lượng ổ cứng.
Nếu backup 1 lần tất cả các web trong thư mục /home/* thì không đủ dung lượng.
Có cách nào chia nhỏ backup 1/2 thư mục home sau đó đưa lên Gdrive, rồi xóa file zip, sau đó backup tiếp 1/2 thư mục home còn lại rồi đưa lên Gdrive rồi xóa file zip.
Mong nhận được hỗ trợ từ bạn!
Trường hợp này bạn cần code thủ công rồi. Liệt kê tên các thư mục cần zip
Bạn dùng thử đoạn script này nhé. Mình edit lại từ script backup của HOCVPS. Mình hok rành về script shell nên cũng hok xử lý được việc folder mysql và nginx hok tách ra đc theo từng website.
# HocVPS Script Plugin – Backup Server and Upload to Cloud
#!/bin/bash
SERVER_NAME=VPS15065JA
TIMESTAMP=$(date +”%F”)
MYSQL=/usr/bin/mysql
MYSQLDUMP=/usr/bin/mysqldump
SECONDS=0
# Loop through /home directory
echo “”;
echo “=============== BEGIN BACKUP TO ALL WEBSITE TO GOOGLE DRIVE ===============”;
echo “”;
for D in /home/*; do
if [ -d “${D}” ]; then #If a directory
domain=${D##*/} # Domain name
BACKUP_DIR=”/root/backup/$domain/$TIMESTAMP”
BACKUP_REMOVE_VPS=”/root/backup/$domain”
if [ “$domain” != “-” ]; then
echo “”;
echo ‘================= START BACKUP TO GOOGLE DRIVE =================’;
echo “”;
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
echo ” Backup Database “$db;
$MYSQLDUMP –force –opt $db | gzip > “$BACKUP_DIR/mysql/$db.gz”
done
echo “Finished”;
echo ‘==========================================================’;
echo ”;
echo “Starting Backup Website”;
echo “- “$domain;
zip -r $BACKUP_DIR/$domain.zip /home/$domain/public_html/ -q -x /home/$domain/public_html/wp-content/cache/**\* #Exclude cache
echo “Finished”;
echo ‘==========================================================’;
echo ”;
echo “Starting Backup Nginx Configuration”;
file_domain=$domain.”conf”
for cauhinh in /etc/nginx/conf.d/*; do
config_ne=${cauhinh##*/}
if [ “$config_ne” = “$file_domain” ]; then
echo ” Finded File Configuration “$config_ne;
echo ” Backup Nginx Configuration of “$domain;
cp -r /etc/nginx/conf.d/ $BACKUP_DIR/nginx/
fi
done
echo “Finished”;
echo ‘==========================================================’;
echo ”;
size=$(du -sh $BACKUP_DIR | awk ‘{ print $1}’)
echo “Starting Uploading Backup”;
/usr/sbin/rclone move $BACKUP_DIR “remote:$SERVER_NAME/$domain/$TIMESTAMP” >> /var/log/rclone.log 2>&1
echo ” “$BACKUP_DIR” remote:$SERVER_NAME/$domain/$TIMESTAMP”;
echo “Finished”;
echo ‘==========================================================’;
echo ”;
echo “Starting Clean Up Source Backup”
# Clean up
rm -rf $BACKUP_REMOVE_VPS
echo ” “$BACKUP_REMOVE_VPS;
echo “Finished”;
duration=$SECONDS
echo “Total $size, $(($duration / 60)) minutes and $(($duration % 60)) seconds elapsed.”
echo “”;
echo ‘================= END BACKUP TO GOOGLE DRIVE =================’;
echo “”;
fi
fi
done
echo “”;
echo “=============== FINISHED BACKUP TO ALL WEBSITE TO GOOGLE DRIVE ===============”;
echo “”;
/usr/sbin/rclone -q –min-age 2d delete “remote:$SERVER_NAME” #Remove all backups older than 2 week
/usr/sbin/rclone -q –min-age 2d rmdirs “remote:$SERVER_NAME” #Remove all empty folders older than 2 week
/usr/sbin/rclone cleanup “remote:” #Cleanup Trash
echo “Finished”;
echo ”;
Ah quên, Script này backup xong website A thì sẽ upload lên drive. Sau đó xóa backup website A trên VPS -> giải phóng dung lượng cho VPS rồi mới tiếp tục backup tiếp. Mình nghĩ nó sẽ giúp đc bạn.
p/s: Nếu đc, nhờ bạn Việt Phương giúp mình thêm cái đoạn tách database của từng website nhé. Thanks
Chỉ sao lưu database và những thư mục upload hay logs thôi chứ ai lại zip toàn bộ sourcecode
Thư mục upload web wordpress của mình rất lớn ( 4gb) nên mình không muốn backup thư mục này hàng ngày thì có làm được k nhi?
Được nhé, bạn loại trừ trong câu lệnh tạo file nén là được. Trong câu lệnh ý mình cũng đã loại trừ thư mục cache đó
Mình có add thêm dòng này vào backup.sh file rồi nhưng nó vẫn backup cả thư mục 2019 là sao nhỉ
zip -r $BACKUP_DIR/$domain.zip /home/$domain/public_html/ -q -x /home/$domain/public_html/wp-content/uploads/2019/**\* #Exclude img
Câu lệnh mẫu không loại trừ thư mục cache nhé (vẫn backup cả thư mục cache khi download về). Admin cho xem lại giúp với, mình rất muốn loại trừ thư mục up ảnh
Tài khoản gmail 15gb của mình bị đầy nên giờ muốn thay sang tài khoản tài khoản khác cụ thể là gsuit gmail theo domain ten@mydomain.com thì có được không admin? nếu được hướng dẫn giúp mình với. Thks nhiều!
Các Cloud chuyên biệt như vậy bạn tham khảo thêm trên trang Rclone nhé
https://rclone.org/docs/
Chia sẻ với các bạn báo lỗi ERROR 1045 (28000): Access denied for user ‘admin’@’localhost’ (using password: YES)
– VPS của AZDigi không cài hocvps mà dùng Directadmin.
– Lúc đầu mình tạo file backup.sh bằng script 1 (đối với hocvps 2.0 trở lên) thì báo lỗi như trên, sau đó mình thay đổi bằng Script 2 (đối với hocvps 1.8 trở xuống), ở phần:
MYSQL_USER=”root”
MYSQL_PASSWORD=$mariadbpass
các bạn thay bằng tên mysql và password mysql (không nhớ thì xem trong file wp-config.php) là sẽ không còn báo lỗi nữa.
– Nếu dùng Apache thì đổi đường dẫn trong script thành:
echo “Starting Backup Nginx Configuration”;
cp -r /etc/httpd/conf/ $BACKUP_DIR/Apache/
Vấn đề đặt ra là: Nếu VPS cài từ 2 domain trở lên có nhiều hơn 1 database thì không biết giải quyết thế nào? :))
Còn 1 VPS mình mua của DO cài hocvps 2.0 sử dụng rclone theo hướng dẫn như bên trên thì ngon lành cành me, làm là chạy luôn.
Bạn tìm tài khoản root/admin của MySQL nhé, tài khoản mà quản lý tổng thể các database
Mỗi database được quản lý bởi 1 user, nhưng vẫn có tài khoản root/admin quản lý chung các user đó
Chào bác, mình đang chạy backup VPS lên Drive theo sripts backup của bác. ok mượt lắm nhưng có 1 lỗi là mỗi user nó lấy đúng 1 domain thôi không backup hết dc
Mình đang xài DA
DA thì bạn cần tự chỉnh sửa script riêng rồi, vì thư mục domain còn nằm trong thư mục của từng user
Admin ơi cho mình hỏi đoạn if [ -d “${D}” ]; then #If a directory mình có 2 tên miền mặc định là default và suspended mình muốn loại trừ nó ra thì sao ạ ?
Thư mục nào bên trong không có public_html thì nó sẽ không nén đâu
2 thu mục này do em tạo để chứa một số file cần thiết cho web. nên nó nén như 1 tên miền riêng luôn 🙁
Bạn loại trừ ra theo phần x đó
zip -r $BACKUP_DIR/$domain.zip /home/$domain/public_html/ -q -x /home/$domain/public_html/wp-content/cache/**\*
Ad cho em hỏi đoạn này chỗ server của em là
{username}/domains/{tên miền}/public_html thì cấu hình sao ạ
==========
zip -r $BACKUP_DIR/$domain.zip /home/$domain/public_html/ -q -x /home/$domain/public_html/wp-content/cache/**\* #Exclude cache
Thế bạn nhập đường dẫn cứng cho phần
/home/$domain/public_html/
nhéDo có nhiều username ý ad. Nên không nhập được đường dẫn cứng. em có tuỳ biến 1 chút như sau mà không chạy
for D in /home/*; do
if [ -d “${D}” ]; then #If a directory
domain=${D##*/} # Domain name
for C in /home/$domain/domains/; do
if [ -d “${C}” ]; then
cuong=${C##*/}
echo “- “$cuong;
zip -r $BACKUP_DIR/$domain.zip /home/$domain/domains/$cuong/public_html/ -q -x /home/$domain/domains/$cuong/public_html/wp-content/cache/**\* #Exclude cache
fi
done
fi
done
Em tạo ra 2 vòng lặp để 1 vòng quét user name và một vòng quét tên miền trong user name nhưng kết quả không được
Em sử dụng Rclone để backup với ERROR 1045 (28000): Access denied for user ‘admin’@’localhost’ (using password: YES)
Em dùng Directadmin
Rất mong được ad hỗ trợ
Bạn kiểm tra lại khả năng đăng nhập của user admin nhé. Như thông báo thì không đăng nhập được
đúng rồi ad, ad cho em hỏi thêm về đoạn này.
Trên direct admin thì đường dẫn của em là
{username}/domains/{Tên domain}
Thì đoạn này em phải chỉnh sửa như nào ạ?
zip -r $BACKUP_DIR/$domain.zip /home/$domain/public_html/ -q -x /home/$domain/public_html/wp-content/cache/**\* #Exclude cache
Bạn ơi muốn loại bỏ backup 1 domain nào đó thì thêm đoạn nào vào bash nhỉ
Phần
Loop through /home directory
đoạnzip
là backup thư mục. Bạn loại ra ở đây nhéMình làm theo hướng dẫn và backup ngon lành lên Google Drive.
Nhưng crontab không hoạt động lúc 2h00, chỉ chạy khi mình gọi tới.
#chmod +x /root/backup.sh
#crontab -l
0 2 * * * /root/backup.sh > /dev/null 2>&1
# service crond status
Redirecting to /bin/systemctl status crond.service
● crond.service – Command Scheduler
Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2019-03-24 10:32:53 +07; 23h ago
Main PID: 3791 (crond)
CGroup: /system.slice/crond.service
└─3791 /usr/sbin/crond -n
Mar 24 10:32:53 163-44-206-80 systemd[1]: Started Command Scheduler.
Mar 24 10:32:53 163-44-206-80 crond[3791]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 67% if used.)
Mar 24 10:32:53 163-44-206-80 crond[3791]: (CRON) INFO (running with inotify support)
Bạn kiểm tra nội dung trong /var/log/cron nhé
Chào mod, có thể cho em hỏi làm sao để backup nguyên vps mà không cần phải cài lại hocvps rồi backup sql+file vậy ạ. em tính chuyển vps ạ.
Chỉ có tính năng snapshot của nhà cung cấp VPS thôi bạn. Khi đó họ backup cả VPS cho bạn, để chuyển sang VPS mới (vẫn của nhà cung cấp đó)
Chào anh.
Em mới mua vps openvz của azdigi và nhờ bên này cấu hình directadmin. Em không biết làm sao để quản trị vps tốt nhất và dùng lệnh backup dữ liệu như thế nào?
Anh nào hướng dẫn cơ bản giúp em với 🙁
DirectAdmin thì có các hướng dẫn trên mạng hết rồi, bạn tham khảo nhé. Các hoạt động quản lý hầu hết trên giao diện web, cũng dễ thao tác
Ad ơi.
Vps nó không có chế độ backup tự động, làm sao backup dữ liệu lớn dễ dàng vậy ạ?
Restore thì thực hiện thủ công nhé. Làm nhiều là quen
Script đã giúp backup tự động rồi
Bạn cho mình hỏi là restart nginx thì Rclone và Cronjob còn chạy không vậy.
Thank bạn nhé !
Vẫn chạy bình thường nhé bạn. Các service hoạt động độc lập
Hi ad,
Mình cài trên VPS khác toàn mặc định theo hướng dẫn của bạn thì chạy bình thường.
Cài thêm y như vậy trên VPS khác thì bị lỗi này:
Starting Uploading Backup
/root/backup.sh: line 47: /usr/sbin/rclone: No such file or directory
/root/backup.sh: line 48: /usr/sbin/rclone: No such file or directory
/root/backup.sh: line 49: /usr/sbin/rclone: No such file or directory
* Toàn bộ mình cài mặc định theo hướng dẫn
* Lệnh config của mình đây: # rclone config
Current remotes:
Name Type
==== ====
remote drive
* Mình chạy lệnh backup để test:
# /root/backup.sh
Starting Backup Database
Finished
Starting Backup Website
– it.name.vn
– pandorahoteldn.com
Finished
Starting Backup Nginx Configuration
Finished
Starting Uploading Backup
/root/backup.sh: line 47: /usr/sbin/rclone: No such file or directory
/root/backup.sh: line 48: /usr/sbin/rclone: No such file or directory
/root/backup.sh: line 49: /usr/sbin/rclone: No such file or directory
Finished
Total 1.3G, 4 minutes and 14 seconds elapsed.
* Mình tìm mãi không biết lỗi gì, mong ad giúp đỡ
Theo như thông báo thì bạn chưa cài đặt rclone
/usr/sbin/rclone: No such file or directory
Oh đúng rồi, mình bắt đầu từ 1. Tạo kết nối với Google Drive
# rclone config
Mà ko cài rclone vẫn config được bạn nhỉ.
Mình cài thêm phần đầu và chạy ok rồi.
Thank ad
Hiện tại mình backup lên Google Drive lưu trữ mười mấy bản backup, vì dung lượng Drive có hạn nên mình muốn giảm số bản backup lưu trữ trên Drive xuống 5 hoặc 7 ngày gần nhất thôi thì làm thê nào?
Bạn chỉnh theo crontab nhé. Crontab quy định tần suất chạy script backup
Chạy đến đây là dừng luôn là sao vậy ad?
Log in and authorize rclone for access
Waiting for code…
https://imgur.com/a/AsV53Ma
Bạn làm sai bước rồi nên bạn đọc lại hướng dẫn và làm lại nhé
Mình muốn xóa đi cài lại thf làm thế nào bạn nhỉ
Bạn chạy câu lệnh cài đặt là sẽ replace được nhé
Mình muốn upload thẳng thư mục home/domain dạng nguyên bản từng file lên cloud, mà không phải nén zip thành 1 file thì làm như thế nào nhỉ.
Vì hiện tại nếu nén zip thành 1 file thì file đó có dung lượng lớn quá > 20GB. Rất nhiều lúc VPS không upload lên cloud được do CPU hoặc RAM bị quá tải, nên mình tính để nguyên bản thành từng file nhỏ lẻ
Bạn sửa script bỏ câu lệnh nén đi nhé. Sau đó để upload nguyên thư mục
Có phải sửa chỗ này như thế này đúng ko bạn Phương
echo “Starting Uploading Backup”;
/usr/sbin/rclone copy $BACKUP_DIR2 “remote:$SERVER_NAME/$TIMESTAMP” >> /var/log/rclone.log 2>&1
Trước đó set BACKUP_DIR2=”/home/domain/public_html/$TIMESTAMP”
Bạn tự test thì rõ hơn nhé. Trong script cũng đã có note phần nào Database, phần nào Source Code và phần nào là upload
Mình làm được rồi.
Tuy nhiên backup theo cách này lâu vãi chưởng. 12 giờ ms upload được gần 3 GB. Căn bản cũng do nhiều file
Căn bản mã nguồn là nhiều file. Đôi khi các file 1KB 2KB rồi file ảnh cũng tính là 1 lần upload
Mình sử dụng VPS của Vultr. Nay mình đã backup và chuyển sang VPS khác or sever khác trên Vultr thì Up lên như thế nào? Trong mục III có nói đến, nhưng mình không biết cụ thể làm như thế nào? Nhờ các bạn chỉ giúp. Cảm ơn các bạn vui vẻ.
1. Bạn tạo website
2. Bạn bung source code
https://hocvps.com/nen-va-giai-nen-file-tar-gzip-va-zip/
https://hocvps.com/lenh-ssh-thong-dung-nhat/
https://hocvps.com/21-cau-lenh-linux-phai-nho/
3. Bạn bung database
https://hocvps.com/backup-va-restore-mysql-database-bang-lenh/
Chào Phương,
Vui lòng cho mình hỏi 4 câu nha. ( làm nhiều lần và đọc kỹ mà chưa được nên mới hỏi Phương )
1. Mình tạo website là gồm các bước:
– Tạo server trên VPS, cài hocvps, vào hocvps THÊM DOMAIN, THÊM DATABASE.
( KHÔNG cài SSL và WP )
Có phải tới vậy không bạn?
2. Các web mình dùng WP thì mình dùng Plugin Duplication tiện hơn phải không bạn? So với cách này thì Duplication có nhưng hạn chế gì?
3. Khi mình dùng lệnh /root/backup.sh thì chạy:
– Starting Backup Database
Finished
– Starting Backup Website
Liệt kê các website
..
..
– Starting Backup Nginx Configuration
Finished
Rồi 1 hồi lại có dòng sau:
Starting Backup Database
Enter Password:
( Mình vào /root/.my.cnf lấy password nhập vào thì lại có Tiếp Enter Password, kiểu như sau, còn nhập pass khác thì báo sai)
Enter Password:
Enter Password:
Enter Password:
Còn dùng lệnh mysql -u root thì cho kết OK
Welcome to the MariaDB monitor. Commands end with ; or \g.
..
..
MariaDB [(none)]>
Như vậy là bình thường hay có bị sai gì không Phương?
4. Khi nào mình sử dụng Backup $1/1 month của Vulltr? Cái này giúp ích mình khi nào?
Rất cảm ơn Phương và anh em trang hocvps.
1. Đúng rồi.
2. Đối với dùng WP thì 2 cách như nhau. Duplicator thì nhanh và tiện hơn nhưng không áp dụng với dữ liệu quá lớn, tầm 2GB trở lên
3. Bạn HocVPS phiên bản nào? Script Backup có dùng đúng phiên bản không (có 2 loại script backup mình đã note rõ)
Kiểm tra mật khẩu lưu trong /root/.my.cnf và /etc/hocvps/scripts.conf có đăng nhập được tài khoản root của MySQL không
4. Vultr sẽ backup toàn bộ VPS, không riêng gì phần nào
3. Hocvps 2.0.4
pass trong root/.my.cnf và /etc/hocvps/scripts.conf Khớp với nhau.
Lấy nhập vào thì chứ
Enter password
Enter password
Enter password
Enter password
Không biết có đúng không?
4. Nếu khó quá mình dùng $1/ 1 tháng của VPS phải không bạn? Mà không biết dùng sao nữa?
3. Như vậy bạn không auto backup được rồi. Phải điền mật khẩu thủ công
Bạn sử dụng script phiên bản 1.8 rồi điền thẳng mật khẩu vào nội dung script phần dòng
MYSQL_PASSWORD=$mariadbpass
4. Uhm. Bạn có thể tham khảo https://www.vultr.com/docs/vps-automatic-backups
Anh đang dùng Hocvps 2.04
Kiểm tra google drive vẫn có thư mục HOCVPS_BACKUP theo từng ngày, vào vẫn có các file.
Mà chưa thử up lên. Tức cái là không nó chứ
Enter password
Enter password
Enter password
Nghĩa là sau khi chạy 1 hồi thì hỏi: Enter password database?
Nhập vào thì tiếp tục
Enter password
Enter password
Nếu nhập sai pass thì báo lỗi.
Không biết cái pass nhập đó đúng không?
Vì anh tính đầu tháng mua 1 cái VPS mới rồi up thử cái file ở google drive lên.
Anh cũng không biết website cở 2GB là cỡ nào? nếu không dùng Duplication cho khỏe.
1. Anh cứ dùng Duplicator thì rõ thôi. Lỗi nó sẽ báo cho biết còn không báo gì tức okie
2. Anh restore xem nội dung thư mục backup bên trong đủ các thành phần không nhé
Cho mình hỏi nhiều tiến trình rclone chạy một lúc có được không ?
Được nhưng không nên nhé bạn. Để cách nhau ra
^^ Do tính chất công việc backup lên gdrive vài trăm GB lận, mà trên DC chỉ cho 10-20Mbps nên nhiều khi nó chạy vài ngày mới xong. Nhưng mà mình test thì có vẻ như chạy song song tốt. Cám ơn bạn đã trả lời.
Cho em hỏi, em muốn 2 ngày backup 1 lần, nội dung cronjob ghi sao vậy anh.
Bạn tùy chỉnh thời gian crontab theo nhu cầu nhé. Cụ thể, bạn tham khảo
https://hocvps.com/tong-quat-ve-crontab/
https://hocvps.com/crontab/
Mình gặp lỗi Access denied for user khi chạy là bị sao nhỉ
[root@sv backup]# /root/backup.sh
Starting Backup Database
ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: YES)
Finished
Đã thử thêm cách trong phần backup mysql mình có thêm u với pass nhưng vẫn ko được
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 -u root -ptestpassword –force –opt $db | gzip > “$BACKUP_DIR/mysql/$db.gz”
done
testpassword là mật khẩu user root
có chạy thêm lệnh GRANT ALL PRIVILEGES ON *.* TO ‘root’@’%’ IDENTIFIED BY ‘testpassword’;
Bạn truy cập thủ công trên SSH có vào đc MySQL bằng user và mật khẩu đó không?
Vẫn vào được ạ, khi mình chạy lệnh
$MYSQLDUMP -u root -ptestpassword –force –opt $db | gzip > “$BACKUP_DIR/mysql/$db.gz”
thay các tham số cần vào thì nó vẫn chạy ổn,
đăng nhập ok luôn
Lệnh
mysql -u root
của bạn ra kết quả gìĐây ạ
[root@sv home]# mysql -u root
ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: YES)
[root@sv home]# mysql -u root -p
Enter password:
[root@sv home]# mysql -u root -ptestpassword
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 6400
Server version: 10.0.37-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.
MariaDB [(none)]>
Như vậy, mật khẩu trong /root/.my.cnf đang sai khiến bạn không truy cập được MySQL
Bạn cập nhật lại mật khẩu trong file ý nhé
Của mình cài hoàn tất xong, chạy lệnh : thì nó báo vậy,
Starting Uploading Backup
2018/10/30 10:03:16 Failed to create file system for “remote:HOCVPS_BACKUP”: didn’t find section in config file
2018/10/30 10:03:16 Failed to create file system for “remote:HOCVPS_BACKUP”: didn’t find section in config file
2018/10/30 10:03:16 Failed to create file system for “remote:”: didn’t find section in config file
Finished
Chạy config thì như vậy .
Name Type
==== ====
HOCVPS_BACKUP drive
Server name trong script cũng là : SERVER_NAME=HOCVPS_BACKUP.
Ad xem giúp mình với ạ. Mình cảm ơn
Như vậy bạn phải sửa tên kết nối trong script backup
Tên kết nối của script là remote
Tên kết nối của bạn là HOCVPS_BACKUP
Mình cũng bị y như vậy nhưng sửa rồi vẫn bị
[HOCVPS_BACKUP]
type = drive
client_id =
client_secret =
scope = drive
root_folder_id =
service_account_file =
token = {“access_token”:”ya29.GltaBmZCmiGQrlxTDCObw_X3u94gEbKWTGxJPQfB87LYiYg2wVbFmgvVnGwCwxGMqlP5Pui0fNVzWpUQIcgLFtW_2_CQlh95QJsvlvu1lEgI2vI_tNrdcOxDE15x”,”token_type”:”Bearer”,”refresh_token”:”1/I2IWPzNwYRSKElXGUI7iiRiP6blsepGshoUtJSAXXjR_cgCEP_kKL-RLe2AhIiQw”,”e….
Cài hôm bữa được, hôm nay đổi tài khoản google cloud cái không up lên được nưuax
À đã làm được rồi Edit cái chổ name là remote mới được
tks
Có scrip backup rồi mà tìm hoài ko có script auto backup toàn bộ remote lại nhỉ
Ý bạn là restore? Hiện tại không có chức năng đó nhé bạn
đúng rồi ad, như cái scrip backup.sh, giờ mình có thể viết scrip restore.sh đc ko ta
Viết được nhé bạn, dùng bash script của Linux
Cám ơn mod 😉
Cho mình hỏi có cách nào đưa data vào drive nhóm được không, mình dùng drive nhóm không giới hạn để backup.
Lúc config đoạn này bạn chọn y nhé
Configure this as a team drive?
y) Yes
n) No
y/n>
Cám ơn mod Việt Phương, mình làm được rồi 😉
Mình chỉ muốn mỗi tuần tự backup một thư mục lên driver thì làm cách nào ?
Thì bạn chỉnh thời gian của cronjob là được nhé
Cám ơn bạn, mình đã làm được rồi. ^^ Do dung lượng sv có hạn nên mình phải chia ra nhiều lần.
sao file của e tải về nặng ghê tận 15bg không biết do lỗi gì ạ 🙁
Bạn giải nén xem bên trong những gì. Có thể source code bạn thế thật
dạ cảm ơn anh
VPS của e chạy ổn được 5 ngày thì kiểm tra lệnh /root/backup.sh
thấy báo rất nhiều lỗi, hình như lỗi token, có khách nào update token mới ko a?
Bạn chạy rclone config rồi edit lại config
Hoặc xóa config đi rồi tạo cái mới tên y hệt
E làm được rồi. Cám ơn a
Anh cho em hỏi, site chạy chủ yếu usa chọn giờ nào backup là ổn vậy anh…
với lại mình muốn restore lại sao vậy anh, có bài hướng dẫn restore lại ko vậy anh, sao khi backup thì thấy có 3 file. 1 file .zip, 1 file .conf, 1 file .gz. Xin cảm ơn
Giờ nào thì tùy tình hình truy cập từng site nhé, bạn xem lúc nào vắng thì set backup
Còn restore thì bạn cứ tạo domain mới xong giải nén và để các thứ đúng vị trí thôi. Trong bài viết cũng đã đề cập rồi đó
https://hocvps.com/nen-va-giai-nen-file-tar-gzip-va-zip/
https://hocvps.com/backup-va-restore-mysql-database-bang-lenh/
Của e gặp lỗi này ở đoạn cuối phần 3 chỗ lệnh /root/backup.sh
Starting Uploading Backup
2018/09/26 23:59:01 Failed to create file system for “remote:HOCVPS_BACKUP”: didn’t find section in config file
2018/09/26 23:59:01 Failed to create file system for “remote:HOCVPS_BACKUP”: didn’t find section in config file
2018/09/26 23:59:01 Failed to create file system for “remote:”: didn’t find section in config file
A có thễ chỉ e cách xử lý được ko a ơi
rclone config
bạn ra kết quả gì?Của e là
Name Type
==== ====
backupkhanhorg drive
a ơi
Tên kết nối của bạn là
backupkhanhorg
thì bạn sửa như thế trong script backup nhéScript backup là dùng kết nối tên
remote
E đã làm xong, cám ơn a rất nhiều.
E bị lỗi này rclone lsl remote:HOCVPS_BACKUP
A giúp e với a ơi :)) E phải sửa ở chỗ nào vậy ạ
rclone config
bạn ra kết quả gì?Cho em hỏi là em muốn backup mỗi tuần 1 lần vào 2h sáng, Ngày chủ nhật thì dòng lệnh bên dưới có đúng không ạ?
0 2 * * 0 /root/backup.sh > /dev/null 2>&1
Đúng rồi bạn. Bạn có thể tham khảo thêm tại https://hocvps.com/tong-quat-ve-crontab/
Cảm ơn Bác Việt Phương.
Anh cho em hỏi em cứ làm đến bước: rclone lsl remote:HOCVPS_BACKUP
là bị báo lỗi như thế này ạ
2018/09/13 11:16:06 ERROR : : error listing: directory not found
2018/09/13 11:16:06 Failed to lsl: directory not found
Chạy trước giai đoạn đó đi.
rclone lsd remote:
E cũng bị lỗi như trên mặc dù đã kết nối thành công đến drive rồi ạ
Bạn mô tả lỗi và cung cấp nội dung của
rclone lsd remote:
rclone config
Sửa 2w thành 2m sẽ thành 2 tháng mới xóa đúng ko ad
Đúng rồi bạn
Mình định lưu 4 bản gần nhất. Sao mình để là 1m và mình backup 1 tuần 1 lần nhưng khi backup thì nó xóa luôn bản backup cũ nhỉ, chỉ lưu đc 1 bản
Dòng delete và remove của bạn ntn?
Đây bạn:
# Clean up
rm -rf $BACKUP_DIR
/usr/sbin/rclone -q –min-age 1m delete “remote:$SERVER_NAME” #Remove all backups older than 1 month
/usr/sbin/rclone -q –min-age 1m rmdirs “remote:$SERVER_NAME” #Remove all empty folders older than 1 month
/usr/sbin/rclone cleanup “remote:” #Cleanup Trash
echo “Finished”;
echo ”;
—————————
Còn đây là cronjob
0 1 * * 1 /root/backup-data.sh > /dev/null 2>&1
ms|s|m|h|d|w|M|y
nên bạn dùng M nhé. Cụ thểms – Milliseconds
s – Seconds
m – Minutes
h – Hours
d – Days
w – Weeks
M – Months
y – Years
anh có thể hướng dẫn cụ thể tạo 2 script backup cho 2 loại website không, loại 1 backup hàng ngày, loại 2 backup 2 tuần 1 lần
Việc script chạy theo mật độ như thế nào phụ thuộc vào cronjob chứ không phụ thuộc nội dung script nhé bạn.
Bạn có thể chỉnh cronjob theo nhu cầu của mình. Tham khảo
https://hocvps.com/tong-quat-ve-crontab/
https://hocvps.com/crontab/
Chào anh,
Em muốn gỡ rclone thì thế nào ạ? Vì đêm rclone chạy hay làm đứng db của vps đó anh.
Bạn xóa trong /usr/sbin
rm -rf /usr/sbin/rclone
Và bỏ cronjob đã thiết lập đi
rclone thay vì chạy hàng ngày em cho chạy thành hàng tuần được không ạ? Và nếu được nữa thì db backup daily, source backup weekly ạ?
1. Chạy hàng tuần thì bạn sửa cronjob
2. Thế bạn làm 2 script. Script A chỉ backup db thì chỉnh cronjob hàng ngày. Script B chỉ backup source thì chỉnh cronjob hàng tuần
Có thể đặt tên thư mục khác đi
Hi anh,
Số 1. * 2 * * 0 /root/backup.sh > /dev/null 2>&1 –> E viết vầy đúng chưa ạ, nó sẽ chạy vào 2am Chủ nhật hàng tuần.
Số 2. Có phải em tách chỗ này ra thành 2 script pk a: http://prntscr.com/kskw0n
Ngoài ra các phần khác chạy tương tự phải không ạ? Ngix có cần backup theo không ạ?
1. Cụ thể bạn tham khảo 2 bài viết này để chỉnh theo nhu cầu
https://hocvps.com/tong-quat-ve-crontab/
https://hocvps.com/crontab/
2. Đúng rồi. Nginx bạn backup cùng với source code
Admin ơi lệnh tải xuống nhiều file cùng một lúc thì viết ntn hả bạn???
Bạn tải cả thư mục thôi
Bạn ơi giờ mình muốn backup database lại theo từng tên domain và có đuôi là .sql thì chỉnh sửa hay thêm đoạn lệnh ntn vào trong script vậy bạn??
Mình thường làm thủ công bằng tay với lệnh ntn ” # mysqldump –opt -u wordpress1 -p wordpress1 > domain1.sql”
Nhưng rất mất thời gian và không tự động được. Bạn hướng dẫn mình được không? Mình xin cảm ơn!
Trong script là backup theo từng database rồi mà bạn. Bạn chỉ cần sửa lại phần nén .gz trong script là được
$MYSQLDUMP --force --opt $db | gzip > "$BACKUP_DIR/mysql/$db.gz"
Mình muốn backup thành file .sql thì sửa ntn trong script hả bạn? Chỉ mình với mình ko hiểu gì về code cả
$MYSQLDUMP --force --opt $db > "$BACKUP_DIR/mysql/$db.sql"
nhé bạnMình sửa lại và nhận đc lỗi như thế này khi chạy backup bạn ạ!
Starting Backup Database
/root/backup.sh: line 19: /root/backup/2018-08-21/mysql/giaodichnhadat24hnew.sql: No such file or directory
mysqldump: Got errno 32 on write
/root/backup.sh: line 19: /root/backup/2018-08-21/mysql/giaodichnhadat24hold.sql: No such file or directory
mysqldump: Got errno 32 on write
/root/backup.sh: line 19: /root/backup/2018-08-21/mysql/wordpress.sql: No such file or directory
mysqldump: Got errno 32 on write
Finished
Giúp mình với!
Full script bạn như thế nào? Và hệ thống bạn là gì, có phải HocVPS không?
bạn ơi mình gặp lỗi này khi chạy /root/backup.sh
NOTICE: Time may be set wrong – time from “www.googleapis.com” is 7m24.722142783s different
from this computer
2018/08/21 20:42:32 ERROR : Attempt 1/3 failed with 0 errors and: Google drive root ” doesn’t support cleanup
2018/08/21 20:42:32 ERROR : Attempt 2/3 failed with 0 errors and: Google drive root ” doesn’t support cleanup
2018/08/21 20:42:32 ERROR : Attempt 3/3 failed with 0 errors and: Google drive root ” doesn’t support cleanup
2018/08/21 20:42:32 Failed to cleanup: Google drive root ” doesn’t support cleanup
Finished
Bạn sửa lối giúp mình vs..mình cái hocvps, linux centos 7 ạ
Cho mình kết quả của
# rclone -V
# rclone config
Kết quả ntn bác ạ!
# rclone -V
rclone v1.36
# rclone config
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
#
Bạn update lên phiên bản mới nhất nhé