Backup Directadmin lên Google Drive
Nội Dung
Directadmin là gì?
Ngày nay việc sử dụng một VPS thay vì dùng hosting đang dần phổ biến bởi sự tiện lợi, chủ động và thoải mái cũng như tốc độ khác biệt so với một shared hosting.
Lưu ý: đã có Script backup v2 – mời các bạn xem qua
Bạn đang xem: Backup Directadmin lên Google Drive
Để sử dụng VPS đa số người dùng sẽ cần cài đặt 1 panel hoặc một script quản lý và đa số họ chọn 1 panel như Directadmin để cài đặt vì giá rẻ, chất lượng và dễ sử dụng.
Directadmin có sẵn tính năng Server Backup nhưng tính năng này chỉ backup dữ liệu vào VPS chứ không backup di chuyển sang một bên nào khác hoặc bạn sẽ phải trả phí khá cao để backup VPS.
Hôm nay mình sẽ hướng dẫn các bạn sử dụng bash script để backup directadmin hàng ngày lên Google Drive hoàn toàn miễn phí.
Tại sao nên backup Directadmin ?
Backup là điều cần thiết để bảo vệ các dữ liệu cần được bảo vệ, trong trường hợp bất khả kháng như bị tấn công, bị hỏng dữ liệu và máy chủ bạn có thể dễ dàng restore lại dữ liệu của bạn.
Để mình minh hoạ cho các bạn nghe về câu chuyện bị tấn công:
Theo báo cáo an ninh website quý III năm 2019 vừa được Công ty an toàn thông tin CyStack công bố, Việt Nam có hơn 2.500 trang web bị tấn công, xếp thứ 10 trong số các nước có nhiều website bị hack trên thế giới.
Backup Directadmin là bước tiếp theo bạn nên làm sau khi đã cài đặt VPS và cần tìm phương án tốt nhất và cố gắng tự động hoá để tiết kiệm thời gian cho chính mình.
Backup Directadmin lên Google Drive bằng Bash Script
Backup Directadmin lên Google Drive là phương án mình tìm hiểu đầu tiên khi mình đang có Google Drive Ultimate trong tay. Tuy vậy, việc tìm kiếm document trên mạng về phương án này không hề có vì vậy mình đã tự nghiên cứu về Rclone để có thể backup toàn bộ dữ liệu website lên Google Drive.
Bash Script mình viết với mục đích backup source code và mysql lên Google Drive hàng ngày.
Giờ mình sẽ bắt đầu hướng dẫn các bạn vào việc chính.
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.
Xem thêm : Hướng dẫn cài đặt Redis Cache cho Directadmin
Phiên bản mình hướng dẫn sẽ là Rclone 1.49.4 – phiên bản mới nhất hiện tại.
Cài đặt cho VPS 64 bit.
cd /root/ wget https://downloads.rclone.org/v1.49.4/rclone-v1.49.4-linux-amd64.zip unzip rclone-v*.zip \cp rclone-v*-linux-amd64/rclone /usr/sbin/ rm -rf rclone-*
Cài đặt cho VPS 32 bit.
cd /root/ wget https://downloads.rclone.org/v1.49.4/rclone-v1.49.4-linux-386.zip unzip rclone-v*.zip \cp rclone-v*-linux-386/rclone /usr/sbin/ rm -rf rclone-*
Backup Drirectadmin lên Google Drive
Cấu hình kết nối giữa Google Drive và Rclone.
Để Rclone có thể hoạt động bạn cần cấu hình để xác định tài khoản google drive của bạn với Rclone. Ở đây mình sẽ tạo một kết nối mang tên: remote
Trong terminal console bạn gõ lệnh:
rclone config
Bạn sẽ nhận được thông báo như sau
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>
Gõ n để tạo mới một remote. Ở dòng name bạn nhập remote hoặc có thể là tên khác nếu bạn muốn, nhưng nếu làm theo hướng dẫn của mình hãy để tên là remote cho phù hợp với các bước sau này nhé.
Sau khi đặt tên, bạn sẽ nhận được một mớ danh sách Cloud và trong đó bạn chú ý và chọn mục số 11 – Google Drive.
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ổ dòng lệnh, 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.
Xem thêm : [Review] So sánh tốc độ VPS OneData và Vultr
Xong, bây giờ bạn có thể kiểm tra kết nối Rclone
rclone lsd remote:
Bash Script backup Directadmin lên Google Drive
Đây là bước quan trọng để Backup Directadmin lên Google Drive, Script này sẽ backup dữ liệu bao gồm SQL và Source code lên Drive trong một file nén.
Lấy tài khoản và mật khẩu mặc định của Directadmin MySQL:
cat /usr/local/directadmin/conf/mysql.conf
Lưu ý: Script này chỉ hoạt động trên Directadmin không hoạt động trên các Panel khác
Tạo file backup.sh
tại 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. Lưu ý chỉnh sửa thông tin tài khoản và mật khẩu MYSQL.
# PUS EDU Plugin - Backup Server and Upload to Cloud # Version: 1.1 #!/bin/bash SERVER_NAME=DirectAdmin TIMESTAMP=$(date +"%F") BACKUP_DIR="/root/backup/$TIMESTAMP" MYSQL_USER="da_admin" MYSQL=/usr/bin/mysql MYSQL_PASSWORD="TOwVe^869rGB6HAR" 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 for C in /home/$domain/domains/*; do if [ -d "${C}" -a "${C}" != 'default' -a "${C}" != 'suspended' ]; then cuong=${C##*/} echo "- "$cuong; zip -r $BACKUP_DIR/$cuong.zip /home/$domain/domains/$cuong/public_html/ -q -x /home/$domain/domains/$cuong/public_html/wp-content/cache/**\* #Exclude cache fi done fi done 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."
Tính năng của Script:
- 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
- SERVER_NAME mặc định là DirectAdmin, bạn có thể thay đổi để dễ nhớ hoặc quản trị nhiều website.
- 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
Kiểm tra Script đã hoạt động hay chưa:
/root/backup.sh
Sau khi nhận được dòng thông báo sau bạn có thể truy cập vào drive để kiểm tra xem source code mình hoạt động chưa.
Total $size, $(($duration / 60)) minutes and $(($duration % 60)) seconds elapsed.
Tạo Cronjob tự động backup Directadmin hằng ngày
Thường mình sẽ chọn script chạy lúc về đêm, khi đó lượng visit vào website ít nên không ảnh hưởng quá nhiều đến trải nghiệm của khách hàng khi sử dụng web.
Ở đây mình chọn 3h sáng.
EDITOR=nano crontab -e 0 3 * * * /root/backup.sh > /dev/null 2>&1
Nhấn Ctrl+O, Enter để lưu và Ctrl+X để thoát.
Vậy là xong, bây giờ bạn có thể yên tâm rằng toàn bộ website trên Directadmin đều được backup về Drive hằng đêm nhé.
Nguồn: https://25giay.vn
Danh mục: VPS - Hosting
cho mình hỏi user và pass : da_admin là lấy từ đâu vậy ạ… vì mỗi user có tài khoản mysql riêng mà
cat /usr/local/directadmin/conf/mysql.conf
à mình cảm ơn! với cho mình hỏi mình sử dụng 20 / 25gb dung lượng bao gồm 11gb web, 9gb hệ thống . k biết còn 5gb đủ backup k a nhỉ
đủ nhé bác, nó tự xoá file backup luôn mà :))
nó nén lại hết mới up lên , hay vừa nén và up từng web 1 ạ… e sợ nén 1 lần không đủ dung lượng, trước bị lỗi vì thiếu dung lượng rồi @@
Nén 1 lần up lên em, web em nặng phần nào nhất
e mới up thử rồi, thiếu, còn 5-6 web k up lên dc… hehe
Tăng disk tý đi là ok ????. Thấy hay chia sẻ cho mọi người nhé bạn ????
vps DA của e bên vultr không cho nâng cấp.. Có cách nào di chuyển toàn bộ DA qua vps khác mạnh hơn k ạ.. mua thêm key DA tốn kém quá
Vultr cho nâng cấp mà bạn
Nâng cấp k dc a, có chat với support bên đó rồi họ cũng bảo k dc. vps của e có cái nâng cấp dc, có cái k
Được em, anh nâng cấp VPS hoài, em dùng gói nào
em gửi ticket nó bảo là k đủ tài nguyên a @@ gói 5$ thôi a
There is insufficient free capacity on this VM’s host node for a plan upgrade. If you need a larger instance, please use the “Snapshot” feature to redeploy a larger version of this instance in any of our datacenters.
Em vô thẳng Settings chọn Change Plan là được mà
vô nó báo như này đó a. không biết nhờ nó snapshot giữ nguyên ip thì có mất bản quyền Driectadmin không a nhỉ, và mất dữ liệu k a
There is insufficient free capacity on this VM’s host node for a plan upgrade. If you need a larger instance, please use the “Snapshot” feature to redeploy a larger version of this instance in any of our datacenters.
Có em, em mua bản quyền bên nào change ip đc mà
trước nhờ a kia mua giờ ảnh k nhớ luôn @@, e tưởng giữ nguyên IP là k mất bản quyền, dữ liệu chớ ???? lại tốn thêm tiền mua DA
Nguyên ip không mất bản quyền nhé em
0 2 * * 1 /root/backup-data.sh > /dev/null 2>&1
Sao e dùng cron này mà hơn 1 tuần rồi từ ngày 23/03 mà chưa backup đợi tiếp theo nhỉ
em lưu đúng tên file không kìa
dạ đúng a, chạy thử nó vẫn gửi backup về driver mà… cron 0 2 * * thì nó gửi mỗi ngày.. còn 0 2 * * 1 hơn 1 tuần rồi vẫn chưa gửi ạ
Chắc chưa đúng ngày rồi :)), em chạy gì 1 tuần vậy mua gg drive unlimated m à chạy
E mua google driver gói 100gb í, nhưng e nhiều web hơn 30gb rồi, nên để chạy theo tuần… mà từ ngày 23/03 đến nay 9 ngày rồi mà chưa chạy vô lý ghê.
Xem log đi em: https://unix.stackexchange.com/questions/207/where-are-cron-errors-logged
Đúng cái em cần rồi ạ, bài viết rất chi tiết, dễ làm theo, em cảm ơn chia sẻ của a, cảm ơn sự tư vấn tận tình của a, e hỏi hơi nhiều mà ko bị anh chửi ạ >.<
Haha không sao em trai
em backup được rồi, giờ restore làm sao anh nhỉ
Rclone có wiget về sv đó em. Còn setup thì thủ công nhé ????
Này có clip không a, đến bước project_number, object_acl thì nhập gì a ?
Không thấy bước này Mục
Scope that rclone should use when requesting access from drive
chọn 1 – driveChụp hình mình xem nhé, Bạn xài script v2 cho khỏe lúc restore nhé bạn
Hi anh, giờ em muốn tắt nó đi thì làm thế nào ạ.
Bạn xóa bỏ cái cron đi là được nhé.