Thông thường, khi mình muốn di chuyển hoặc sao lưu một website sử dụng WordPress thì sẽ sử dụng plugin Duplicator. Tuy nhiên, có một số trường hợp server bị lỗi, website không truy cập trực tiếp được hoặc bạn muốn sao lưu lại cả một loạt site đang hoạt động trên server thì sao?
Mình có theo dõi các comment trong bài giới thiệu HocVPS Script hoặc trong chuyên mục Hỏi đáp thì thấy nhu cầu này có thật và cũng khá cần thiết. Do đó, mình có viết một chương trình bash script ngắn, sẽ tự động sao lưu lại website WordPress bạn muốn (bao gồm cả files và database).
HocVPS Script Plugin – Backup All WordPress Sites
Để sử dụng bạn chỉ cần sử dụng dòng lệnh sau:
wget https://hocvps.com/scripts/plugin/backupallwp.sh && chmod +x backupallwp.sh && ./backupallwp.sh
Bạn cần cài đặt zip trước nếu chưa cài: yum -y install zip
Sau đó chương trình sẽ quét toàn bộ website đang hoạt động cùng với thông tin database MySQL để bạn có thể lựa chọn sao lưu. Cuối cùng toàn bộ dữ liệu sẽ được lưu trong thư mục /home/domain.com/private_html/backupallwp
với đường link direct để tải về máy hoặc chuyển sang VPS khác.
Lưu ý:
- Để download trực tiếp file về VPS, hãy sử dụng lệnh
wget link
- Để giải nén bạn hãy sử dụng lệnh
unzip file.zip
- Toàn bộ database được lưu lại thành 1 file *.SQL, để import bạn hãy sử dụng lệnh
mysql -u username -ppassword databasename < database.sql
. Lưu ý thay lại username, password, databasename và tên file database
Chương trình này thiết kế để hoạt động tốt với HocVPS Script và WordPress. Tuy nhiên bạn có thể điều chỉnh lại thoải mái cho phù hợp với control panel đang sử dụng.
Trước mắt mình cứ viết dạng plugin như thế này đã, sau này có tích hợp vào HocVPS Script hay không thì sẽ tính sau 😀
Code bash script
#!/bin/bash # HocVPS Script Plugin - Backup All WordPress Sites # ------------------------------------------------------------------------- # Description: Create a backup of your WordPress files and database. # Copyright (c) 2015 Luan Tran <https://hocvps.com> # ------------------------------------------------------------------------- # Run: wget https://hocvps.com/scripts/plugin/backupallwp.sh && chmod +x backupallwp.sh && ./backupallwp.sh # ------------------------------------------------------------------------- clear printf "=========================================================================\n" printf " HocVPS Script Plugin - Backup All WordPress Sites\n" printf "=========================================================================\n" #Server information main_site=`cat /etc/hocvps/scripts.conf | grep mainsite | cut -d \" -f 2` port=`cat /etc/hocvps/scripts.conf | grep priport | cut -d \" -f 2` serverip=`cat /etc/hocvps/scripts.conf | grep serverip | cut -d \" -f 2` #Backup path backup_path=/home/$main_site/private_html/backupallwp mkdir -p $backup_path #Loop through /home directory for D in /home/*; do if [ -d "${D}" ]; then #If a directory domain=${D##*/} #Domain name printf "\n***Found domain $domain\n" if [ -f "/home/$domain/public_html/wp-config.php" ]; then WPDBNAME=`cat /home/$domain/public_html/wp-config.php | grep DB_NAME | cut -d \' -f 4` WPDBUSER=`cat /home/$domain/public_html/wp-config.php | grep DB_USER | cut -d \' -f 4` WPDBPASS=`cat /home/$domain/public_html/wp-config.php | grep DB_PASSWORD | cut -d \' -f 4` echo "$domain is WordPress with database: $WPDBNAME" read -r -p "Do you want to backup $domain? [y/N] " response case $response in [yY][eE][sS]|[yY]) echo "- Backup database: $WPDBNAME" mysqldump -u $WPDBUSER -p$WPDBPASS $WPDBNAME > /home/$domain/public_html/database-$(date +"%Y-%m-%d").sql echo "- Backup files: $domain" zip -r $backup_path/$domain-$(date +"%Y-%m-%d").zip /home/$domain/public_html/ -q -x /home/$domain/public_html/wp-content/cache/**\* #Exclude cache rm -rf /home/$domain/public_html/database-$(date +"%Y-%m-%d").sql #Remove database file echo "- Done, database and files are saved to $backup_path/$domain-$(date +"%Y-%m-%d").zip" echo "- Download link: http://$main_site:$port/backupallwp/$domain-$(date +"%Y-%m-%d").zip or http://$serverip:$port/backupallwp/$domain-$(date +"%Y-%m-%d").zip" ;; *) echo "Okay, don't backup" ;; esac else echo "$domain is not WordPress" fi fi done
Chào anh em,
Mình sử dụng câu lệnh trên để sao lưu web thì báo như sau:
***Found domain domain.vn
domain.vn is WordPress with database:
Do you want to backup domain.vn? [y/N] y
– Backup database:
Usage: mysqldump [OPTIONS] database [tables]
OR mysqldump [OPTIONS] –databases [OPTIONS] DB1 [DB2 DB3…]
OR mysqldump [OPTIONS] –all-databases [OPTIONS]
For more options, use mysqldump –help
– Backup files: domain.vn
– Done, database and files are saved to /home//private_html/backupallwp/domain.vn-2020-04-30.zip
– Download link: http://:/backupallwp/domain.vn-2020-04-30.zip or http://:/backupallwp/domain.vn-2020-04-30.zip
[root@domain home]#
Sau backupallwp giải nén thấy file .sql mà chỉ có 0 kb. và không sử dụng dc?
Nhờ anh em xem không biết sao bị như vậy. Lúc trước có trang web khác thì không bị.
Xin cảm ơn
Mình đang muốn chuyển vps. Vps cũ đang cài hocvps và có 1 website. Nhờ ad hướng dẫn restore file backup lên vps mới nhé. Mình đã backup thành công theo hướng dẫn ở bài viết này
Restore thực hiện thủ công nhé bạn. Source code copy vào thư mục và giải nén
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/
Database thì restore lại
https://hocvps.com/backup-va-restore-mysql-database-bang-lenh/
Em xin phép lạc đề chút, website e dùng VPS OVH cài HocVPS Script. Đang dùng ngon lành 1 thời gian rất dài không hề có bất kỳ 1 vấn đề gì cả. Tự nhiên giờ nó thông báo : Kết nối của bạn không phải là kết nối riêng tư. Vào phần nâng cao cũng không có cho phép truy cập bảo mật kém. Mà website e cài SSL theo hướng dẫn của HocVPS trước nay vẫn dùng rất tốt. Em truy cập thử theo dạng IP:port cũng không thể truy cập vào quản trị HocVPS. Từ ZOC Terminal vẫn vào đc ạ.
– Cho e hỏi lỗi này là bị sao ạ, có phải do VPS không ạ? E reboot lại vẫn k được.
– Đã ai bị trường hợp này, và cách giải quyết thế nào mọi người hướng dẫn e với ạ. E hơi gà nên hỏi gì k phải mong các anh chị bỏ qua giúp ạ.
Website bạn là gì? Mình nghi là chứng chỉ SSL hết hạn rồi
@Việt Phương. Chuẩn rồi ạ. Khi cài e không để ý cái gia hạn sau 90 ngày này. 1 dòng lệnh /opt/letsencrypt/certbot-auto renew –pre-hook “service nginx stop” –post-hook “service nginx start” là xong rồi ạ. Thanks Mod. <3
Bạn cài cronjob auto renew đi cho đỡ quên
Vâng, e cài luôn rồi ạ. Thanks a
Cảm ơn bác, em mới dùng cái hocvps script cài cho cái VPS bên vultr vừa mua, chạy ngon. Giờ thêm cái Backup này nữa
Bạn có thể tham khảo thêm https://hocvps.com/rclone/
Bạn thật là tài giỏi! Ngưỡng mộ quá!
Bạn quá lời rồi
Xin Chào ! Admin ơi
Giúp mình với Mình đã cài hocvps và WP hoàn thiện hết rồi , mình dựa theo IP của VPS đễ làm website trên WP , bây giờ mình trỏ tên miền về VPS của Vultr thì không được ạ ! cứ gỏ tên miền đấy nó lại nhảy ra cái IP của VPS bây giờ phải làm như thế nào mới đc vậy , Mong Admin trả lời giúp nhé ! Xin Cảm ơn.
Bạn vào wp-admin sửa Site URL và Home URL đi. Lúc cài WP trên web bạn truy cập bằng IP chứ không phải domain đúng không
Cảm ơn bạn nhé ! lúc mình cài WP = IP sau khi làm theo hướng dẫn của bạn thì mình sửa đường dẫn Site URL và Home Url thì mình không vào được nữa rồi – nó bị ERR_CONNECTION_TIMED_OUT là như thế nào ạ ! website : http://www.thoitrangsieusi.com ạ
Bình thường nhé bạn. Bạn thử bằng trình duyệt khác là okie
VPS có 3 site, nhưng chỉ backup domain chính là sao Luân ?
Có cách nào backup toàn bộ không ?
Script chỉ hoạt động với các WP. Để backup toàn bộ site trên VPS, bạn nên sử dụng
https://hocvps.com/hocvps-script-plugin-backup-vps/
hoặc
https://hocvps.com/rclone/
Xin lỗi, mình chưa check foder khác. Có rồi. Nhưng trên cái VPS khác mình làm tương tự, khi chạy lệnh backup thì được thông báo này: { /root/backup.sh: line 34: zip: command not found }
VPS này chạy hocvps1.1 .
Bạn cài đặt zip đi.
yum install zip unzip -y
Thanks bạn!
Anh ơi cho em hỏi với trong home trên host của em cái file cache.tar.gz là file gì vậy ạ, xóa đi có ảnh hưởng gì không ạ em cài wordpress ạ. Em cảm ơn nhiều
File ý nằm ngoài thư mục web mà ở ngay thư mục home à? Mình cũng không rõ lắm. Có thể do ứng dụng cache nào đó của bạn tạo ra?
e dùng lệnh WGET để dowload bản backup từ vps cũ sang vps mới tạo . thì nó báo
—
HTTP request sent, awaiting response… 401 Unauthorized
Authorization failed.
e dung vultr . xin add chỉ cách khác phục với
e làm được rồi , thanks add
Bạn làm thế nào thành công vậy.Hướng dẫn mình với thanks.
wget https://hocvps.com/scripts/plugin/backupallwp.sh && chmod +x backupallwp.sh && ./backupallwp.sh
Dùng dòng lệnh này mà ko ra j Luân nhỉ? thấy hiện ” No such file or directory ”
Cảm ơn Luân
Ủa vẫn bình thường mà bạn nhỉ?
Hi ad,
Sau khi bk tất cả db gom lại thành một file. Vậy sau khi giải nén ra nó co tách ra từng file riêng ko, hay vẫn là một file vậy ad. Vì ko nhiều khi chỉ có một web cần restore mà nguyên cục thì hơi phiền chút.
Tks ad
Nếu bạn dùng script này thì mỗi database là 1 file riêng mà nhỉ?
Do mình đọc thấy cái này nè ad, nên mình tưởng là bưng nguyên server thành một file
Toàn bộ database được lưu lại thành 1 file *.SQL, để import bạn hãy sử dụng lệnh mysql -u username -ppassword databasename < database.sql. Lưu ý thay lại username, password, databasename và tên file database
Uh mình đính chính lại, mỗi database đang lưu vào 1 file nhé.
Nếu muốn chuyển toàn bộ database vào 1 file cũng đơn giản, 1 dòng lệnh là xong: https://hocvps.com/cac-cau-lenh-mysql-can-phai-biet/
Có cách nào cho nó tự upload lên gg drive ko ad
Dùng rclone upload lên mây nhé: http://rclone.org/
Mình chạy lệnh backup có báo dòng này:
mysqldump: Got error: 1146: “Table ‘123giaohang.smackcsv_line_log’ doesn’t exist” when using LOCK TABLES
Không biết có ảnh hưởng gì đến bản backup không Luân nhỉ?
Chỉ có mỗi thông báo này thôi à bạn?
***Found domain xxx.com
xxx.com is WordPress with database: DDD
Do you want to backup xxx.com? [y/N] y
– Backup database: DDD
mysqldump: Got error: 1146: “Table ‘DDD.smackcsv_line_log’ doesn’t exist” when using LOCK TABLES
– Backup files: xxx.com
– Done, database and files are saved to
– Download link:
Nội dung đầy đủ nè Luân, vẫn có file backup đầy đủ, nhưng không biết lỗi 1146 có ảnh hưởng gì khi restore không?
Cái này mình lại không check được lỗi rồi, bạn thử trực tiếp bằng cách import xem sao vậy?
Luân hướng dẫn thêm phần này với
Cài đặt thì dùng lệnh như Luân hướng dẫn rồi
Nhưng từ lần sau vào VPS mình muốn backup lại bản mới , thì dụng lệnh nào Luân Trần
thansk
Bạn chạy lại lệnh đó là được?
làm sao up data lên đây
Bạn dùng File Manager, HocVPS Script tự động cài luôn rồi đó
Nếu mình xài hosting wordpress (shared hosting) ko có shell, và mình cũng có 1 VPS riêng dùng chỉ để quản lý file.
Mình muốn backup WP sang VPS kia thì có làm đc ko Luân?
Trường hợp này không được nhé bạn, hãy dùng những plugin backup lên cloud ví dụ UpdraftPlus ấy.
Cho mình hỏi chút là hocvps script đã tích hợp plugin này chưa?
Mình hỏi vậy vì trong menu có tự động sao lưu, không biết đó có phải là plugin này ko ?
Chưa tích hợp nha bạn, cái này script chạy ngoài thôi 😀
Loading lookup modules from /usr/lib64/exim/4.72-7.el6/lookups
Loaded 0 lookup modules
LOG: MAIN
<= root@uxz.biz U=root P=local S=281
[root@uxz ~]# Loading lookup modules from /usr/lib64/exim/4.72-7.el6/lookups
Loaded 0 lookup modules
delivering 1Zj80O-0003Bo-2z
Connecting to aspmx.l.google.com [2a00:1450:4010:c08::1a]:25 … connected
SMTP<> EHLO uxz.biz
SMTP<> STARTTLS
SMTP<> EHLO uxz.biz
SMTP<> MAIL FROM: SIZE=1313
SMTP>> RCPT TO:
SMTP>> DATA
SMTP<< 250 2.1.0 OK d11si17331242lfe.173 – gsmtp
SMTP<< 250 2.1.5 OK d11si17331242lfe.173 – gsmtp
SMTP<> writing message and terminating “.”
SMTP<> QUIT
LOG: MAIN
=> admin@hocvps.com R=dnslookup T=remote_smtp H=aspmx.l.google.com [2a00:1450: 4010:c08::1a] X=UNKNOWN:ECDHE-RSA-AES128-GCM-SHA256:128
LOG: MAIN
Completed
em chạy lệnh nó báo vậy bác ạ
Mình nhận được mail đó, nhưng trong Spam. Vậy nguyên nhân ở đây do bạn cấu hình chưa chuẩn rồi. Giờ bạn cài plugin WP Mail SMTP mà sử dụng.
cám ơn bác nhé
bác ơi. em test thử plug in contact form 7 thì ko thấy nhận đc email ạ. ko hiểu lỗi gì ở đây bác nhỉ
Bạn cài plugin WP Mail SMTP rồi cấu hình mail và test thử đi.
đc rùi bác ạ. yêu quá. tks bác nhé
chào bác. em có sử dụng script hocvps. Em muốn chạy plugin contact form 7 trên wordpress có cách nào ko bác nhỉ.
em test thử thì ko thấy nó gửi email về ạ.
Đầu tiên bạn cần check xem VPS có block sendmail không với lệnh bên dưới:
echo "Subject: test" | /usr/lib/sendmail -v admin@hocvps.com
Mình vô link duoc cung cap de tai ve nhưng không có file nào đc tạo Luân ơi.
domain.com:priport/backupallwp/tenmienkjhac.com-2015-08-13.zip
Lúc chạy script thì nó báo như sau:
vidu.com is WordPress with database: ghepcard
Do you want to backup ghepcard.com? [y/N] y
– Backup database: vd
– Backup files: vidu.com
./backupallwp.sh: line 42: zip: command not found
– Done, database and files are saved to
Bạn cài đặt zip trước nhé:
yum install zip
Anh luân cho em hỏi em có site phim mã nguồn wordpress hôm nay đổi vps thế là sau khi cài đặt lại thì các link bài viết đều lỗi 404 hết , em thấy thachpham bảo phải cập nhật lại permalink em cũng cập nhật lại luôn nhưng vẫn thế . chỉ để chế độ Default link dạng http://tensite/?p=123 là hoạt động bình thường , các tùy chọn bên dưới tất cả đều bị lỗi 404 hết, em đã phân quyền và xóa cache của server rồi mà không ăn thua . em dùng webserver nginx . anh xem có cách nào hay có rule nào cho vào file .conf của tên miền để cải thiện không 🙁
Bạn cài đặt VPS theo hướng dẫn nào thế?
Cảm ơn Luân. Cho mình hỏi mỗi lần backup thì cứ làm lần lượt các bước như trên à?
Tùy cách bạn sử dụng 🙂
Cám ơn bạn plugins rất hay.. Mình viết thêm code php rùi tạo contab cho nó tự sao lưu lên google drive rất tốt. Không còn lo mất dữ liệu nữa
Hay quá. Rất hữu ích khi làm việc với VPS
em vừa làm như bác bảo thì nó báo nhiều lỗi như vầy: WARNING: Database error Table ‘./thuocchuabenh_vn/wp_wfLogins’ is marked as crashed and last (automatic?) repair failed for query SHOW CREATE TABLE `wp_wfLogins`. và ERROR: Step aborted: too many attempts!,,, ERROR: Job has ended with errors in 229 seconds. You must resolve the errors for correct execution.
sửa sao đây bác
có phải sẽ chọn như vầy không bác:Check All > repair table, rồi lại chọn check all > optimize
Đúng rồi bạn, để nó repair table bị lỗi.
Chào bạn Luân. Mình đang dùng vps linux cho wordpress. bình thường mình vẫn backup bằng Plugin Backwpup nhưng sau khi nhà cung cấp reboot thì bị lỗi backup / thông báo : WARNING: Database error Table ‘./thuocchuabenh_vn/wp_wfLogins’ is marked as crashed and last (automatic?) repair failed for query SHOW CREATE TABLE `wp_wfLogins`. không biết nên sửa thế nào. giúp mình với.
Bạn mở phpMyAdmin ra rồi chọn all table, Repair, Optimize là ok nhé.
Mình toàn dùng bash tự viết để zip file + mysqldump kết hợp với dropbox uploader sripts + cron job
Luân cho mình hỏi cái bash/shell có thể sử dụng toán tử cho nó được không, kiểu cộng trừ ngày tháng, mình muốn nó tự xoá các file cũ đi chỉ giữ lại 3 ngày gần nhất
Tự viết được thế này ngon quá rồi 😀
Với bash sử dụng toán tử ok hết nhé, bạn lên google tìm câu lệnh của nó là ra ngay.