Công việc sao lưu và phục hồi dữ liệu website dùng VPS rất quan trọng, mục đích sao lưu dữ liệu phòng ngừa VPS gặp những sự cố hoặc khi chúng ta cần chuyển dữ liệu VPS sang hosting mới, khi đó chúng ta có thể dùng dữ liệu khi backup (sao lưu) dữ liệu VPS để restore (phục hồi) dữ liệu VPS lại như ban đầu. Trong bài viết này MZE sẽ cùng bạn thực hiện thủ công backup và restore dữ liệu website dùng VPS trên Linux server

Nên xem :

A. Chuẩn bị backup & restore source code VPS

Để backup và restore mã nguồn website trong bài viết này MZE sẽ sử dụng lệnh Zip và Unzip hoặc sử dụng Tar, bạn sẽ cần nắm lệnh cơ bản để thực hiện hướng dẫn này. Nào chúng ta cùng bắt đầu

Đầu tiên bạn cần cài đặt công cụ Zip nếu bạn chưa có hãy sử dụng lệnh bên dưới để cài đặt gói (sử dụng tùy chọn “-y” để bỏ qua dòng nhắc lệnh tiếp tục hay dừng)

  • Với Ubuntu/Debian

sudo apt install zip

  • Với CentOS/Redhat

sudo yum install zip unzip -y

Ví dụ: Trên Ubuntu

sudo apt install zip
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following package was automatically installed and is no longer required:
grub-pc-bin
Use 'apt autoremove' to remove it.
The following additional packages will be installed:
unzip
The following NEW packages will be installed:
unzip zip
0 upgraded, 2 newly installed, 0 to remove and 117 not upgraded.
Need to get 334 kB of archives.
After this operation, 1196 kB of additional disk space will be used.
Do you want to continue? [Y/n]

Chọn “y” để tiếp tục cài đặt

Sau khi cài đặt xong bạn sẽ cần tiếp tục bên dưới để Backup source code.

B. Backup dữ liệu VPS trên Linux Server

1. Backup source code VPS

Để backup các file và folder có trong VPS chúng ta sẽ sử dụng lệnh zip với cấu trúc câu lệnh là :

zip [options] [zip_file_name] [zip_folder_name]

Trong đó:

  • -r : để nén toàn bộ file và thư mục con có trong thư mục cần nén
  • zip_file_name : tên file cần nén
  • zip_folder_name : tên thư mục cần nén

Để xem phần trợ giúp lệnh zip bạn có thể sử dụng lệnh zip --help để có thể tùy biến hơn

zip --help
Copyright (c) 1990-2008 Info-ZIP - Type 'zip "-L"' for software license.
Zip 3.0 (July 5th 2008). Usage:
zip [-options] [-b path] [-t mmddyyyy] [-n suffixes] [zipfile list] [-xi list]The default action is to add or replace zipfile entries from list, which
can include the special name - to compress standard input.
If zipfile and list are omitted, zip compresses stdin to stdout.
-f freshen: only changed files -u update: only changed or new files
-d delete entries in zipfile -m move into zipfile (delete OS files)
-r recurse into directories -j junk (don't record) directory names
-0 store only -l convert LF to CR LF (-ll CR LF to LF)
-1 compress faster -9 compress better
-q quiet operation -v verbose operation/print version info
-c add one-line comments -z add zipfile comment
[email protected] read names from stdin -o make zipfile as old as latest entry
-x exclude the following names -i include only the following names
-F fix zipfile (-FF try harder) -D do not add directory entries
-A adjust self-extracting exe -J junk zipfile prefix (unzipsfx)
-T test zipfile integrity -X eXclude eXtra file attributes
-y store symbolic links as the link instead of the referenced file
-e encrypt -n don't compress these suffixes
-h2 show more help

Sau khi đã nắm rõ câu lệnh cần sử dụng, bây giờ chúng ta sẽ tiến hành đi vào backup dữ liệu website với câu lệnh như sau :

zip [options] [zip_file_name] [zip_folder_name]

Ví dụ : MZE lưu source code với đường dẫn thư mục là /home/mzengineer.com/public_html

Nếu bạn cần sao lưu và nén toàn bộ file và subfolder trong folder đó thành một file *.zip với tên là mzengineer.zip, bạn sẽ thực hiện câu lệnh sau, file nén sẽ được tạo ra và được lưu trữ tại vị trí bạn thao tác lệnh hoặc thư mục người dùng, ví dụ như MZE đang sử dụng quyền root sẽ được lưu tại /root

zip -r mzengineer.zip /home/mzengineer.com/public_html/*

Lưu ý :

Trường hợp trên không cd vào folder cần tạo file zip thì sau khi zip nó sẽ gom toàn bộ cây thư mục trong folder lại, nếu bạn unzip thì bạn sẽ có cấu trúc folder chứa source code là /home/mzengineer.com/public_html chứ không phải chỉ riêng folder chứa source code.

Sao lưu file nén vào folder được chỉ định trước, ví dụ ở đây MZE sẽ sao lưu file nén tại đường dẫn thư mục là /home/mzengineer.com/backups bạn sử dụng câu lệnh sau :

zip -r /home/mzengineer.com/backups/mzengineer /home/mzengineer.com/public_html/*

Tới đây bạn cũng phần nào hiểu rõ những việc chúng ta sẽ chuẩn bị thực hiện, để tạo file nén với tên là mzengineer.zip, và được lưu tại đường dẫn thư mục là /home/mzengineer.com/public_htmlchúng ta sẽ thực hiện các dòng lệnh sau

Đi tới  cd /home/mzengineer.com/public_html

Tạo file nén với tên là “mzengineer

zip -r mzengineer *

Sau khi đã tạo file nén với tên mzengineer.zip, bạn hãy kiểm tra file nén đã được tạo chưa bằng lệnh ls

2. Backup database trong MySQL hoặc MariaDB

Sau khi đã backup source code trên VPS, giờ chúng ta sẽ đi backup database trên VPS, có 2 cách để bạn có thể backup database :

Sử dụng phần mềm phpMyAdmin nếu bạn đã cài phpMyAdmin, bạn có thể sử dụng nó để sao lưu cơ sở dữ liệu, nếu bạn vẫn chưa cài phpMyAdmin trên VPS thì hãy xem qua bài viết hướng dẫn cài phpMyAdmin trên Ubuntu và cách backup database trên phpMyAdmin tại đây

Cách tiếp theo MZE sẽ hướng dẫn bạn thực hiện trong bài viết này, đó là sử dụng lệnh mysqldump, để xem thêm các cú pháp, và đối số khác của lệnh bạn có thể sử dụng mysqldump --help để tìm hiểu

sudo mysqldump -u [database_name] -p [database_user] > [backup_file].sql

Trong đó :

  • database_name : tên cơ sở dữ liệu cần sao lưu
  • database_user : tên người dùng database
  • backup_file.sql : file sao lưu với định dạng *.sql

Ví dụ:

MZE có 1 cơ sở dữ liệu là cosodulieu với người dùng database là cosodulieu_user, để dump file mzengineer.sql bạn sẽ thực hiện câu lệnh như sau, muốn biết tên người dùng databasedatabase_user bạn có thể xem ở file cấu hình wp-config.php

sudo mysqldump -u cosodulieu -p cosodulieu_user > mzengineer.sql

Sau khi thực hiện lệnh, sẽ có dòng nhắc nhập mật khẩu truy cập database, file mzengineer.sql sẽ được tạo ra trong đường dẫn thư mục mà bạn đang truy cập khi thực hiện lệnh, hãy kiểm tra và tải về lưu trữ ở máy tính của bạn để dành sau này cần restore nhé.

Nên xem Hướng Dẫn Sử Dụng Bitvise Truy Cập SSH Client Quản Lý VPS

Tới đây là bạn đã thực hiện xong công việc sao lưu dữ liệu trên VPS, hãy tiếp tục xem phần bên dưới nếu như bạn cần Restore lại dữ liệu lên VPS

C. Restore dữ liệu VPS trên Linux Server

Sau khi đã sao lưu dữ liệu website trên VPS, trường hợp khi cần thiết phục hồi dữ liệu quay về trạng thái khi trước khi sao lưu dữ liệu bạn có thể giải nén dữ liệu vào folder chứa source code, sau đó import cơ sở dữ liệu vào database để khôi phục trạng thái khi bạn backup, để làm việc này bạn sẽ cần thực hiện các công việc sau

1. Restore source code từ file backup

Để khôi phục mã nguồn từ file dự phòng trước đó, bạn có thể sử dụng unzip để giải nén hay còn gọi là xả nén file đã nén với định dạng zip như trong bài viết này vào folder chứa mã nguồn website (hãy tải file lên thư mục chứa source code nếu chưa có sẵn trên server), trường hợp sử dụng định dạng khác như tar, bạn có thể xem qua đoạn nén và giải nén Tar trên Linux

Trong bài viết này MZE sẽ cùng bạn thực hiện lệnh unzip để thực hiện công việc khôi phục dữ liệu do chúng ta đã có sẵn file zip từ cách thực hiện ở phần backup phía trên, tùy trường hợp mà bạn sử dụng theo 2 cách bên dưới cho hợp lý

a. Trường hợp File cần giải nén nằm ở folder khác folder đích

unzip -o [file_name.zip] -d [destination_folder]

Trong đó:

  • -o : cho phép ghi đè tập tin không cần nhắc (nếu không ghi đè thì không cần ghi -o)
  • -d : xác định đường dẫn thư mục giải nén
  • file_name.zip : tệp cần giải nén
  • destination_folder : thư mục đích cần xả nén

Ví dụ:

unzip -o /home/mzengineer.com/backups/mzengineer.zip -d /home/mzengineer.com/public_html

b. Trường hợp file cần giải nén nằm trong folder đích

unzip [file_name.zip]

Ví dụ:

unzip mzengineer.zip

Để xem thêm chi tiết về lệnh unzip hãy gõ lệnh unzip -help

Output:

sudo unzip --help
UnZip 6.00 of 20 April 2009, by Debian. Original by Info-ZIP.

Usage: unzip [-Z] [-opts[modifiers]] file[.zip] [list] [-x xlist] [-d exdir]Default action is to extract files in list, except those in xlist, to exdir;
file[.zip] may be a wildcard. -Z => ZipInfo mode ("unzip -Z" for usage).

-p extract files to pipe, no messages -l list files (short format)
-f freshen existing files, create none -t test compressed archive data
-u update files, create if necessary -z display archive comment only
-v list verbosely/show version info -T timestamp archive to latest
-x exclude files that follow (in xlist) -d extract files into exdir
modifiers:
-n never overwrite existing files -q quiet mode (-qq => quieter)
-o overwrite files WITHOUT prompting -a auto-convert any text files
-j junk paths (do not make directories) -aa treat ALL files as text
-U use escapes for all non-ASCII Unicode -UU ignore any Unicode fields
-C match filenames case-insensitively -L make (some) names lowercase
-X restore UID/GID info -V retain VMS version numbers
-K keep setuid/setgid/tacky permissions -M pipe through "more" pager
-O CHARSET specify a character encoding for DOS, Windows and OS/2 archives
-I CHARSET specify a character encoding for UNIX and other archives

See "unzip -hh" or unzip.txt for more help. Examples:
unzip data1 -x joe => extract all files except joe from zipfile data1.zip
unzip -p foo | more => send contents of foo.zip via pipe into program more
unzip -fo foo ReadMe => quietly replace existing ReadMe if archive file newer

2. Import database từ file backup

Sau khi đã thực hiện bước giải nén tệp vào folder chứa source code, bước tiếp theo chúng ta sẽ đi import cơ sở dữ liệu, để import cơ sở dữ liệu bạn có thể sử dụng phpmyadmin để import database, hoặc gõ dòng lệnh nếu dùng command line

mysql -u database_username -p new_database < old_database.sql

Trong đó:

  • database_username : tên người dùng cơ sở dữ liệu
  • new_database : cơ sở dữ liệu mới cần nhập hoặc cần khôi phục
  • old_database.sql : cơ sở dữ liệu cần khôi phục
mysql -u [mzengineer] -p [db_mzengineer] < [mzengineer.sql]

Sau khi nhập lệnh trên, sẽ yêu cầu nhập password, hãy nhập password, nếu không xuất hiện thông báo nào là bạn đã import thành công cơ sở dữ liệu.

Kiểm tra database đã được import hay chưa, truy cập vào MySQL bằng lệnh mysql -u root -p

mysql> show databases;
mysql> use db_mzengineer;
mysql> show tables;

Nếu đã hiển thị các bảng trong cơ sở dữ liệu là thành công

Chú ý :

Để tránh bị lỗi trong quá trình import dữ liệu, bạn nên tạo một cơ sở dữ liệu mới sau đó mới tiến hành import cơ sở dữ liệu cũ, ví dụ trên là bạn sẽ tạo một database mới có tên là db_mzengineer sau đó import file mzengineer.sql vào nó, tham khảo thêm các lệnh thao tác trong MySQL thường dùng trên Linux

Để tạo cơ sở dữ liệu mới hãy sử dụng cách lệnh sau

Đăng nhập MySQL, nhập mật khẩu hoặc sử dụng “-pPassWord” để không cần thao tác nhập mật khẩu bước tiếp theo

mysql -u root -p

Tạo database mới

CREATE DATABASE new_database;

Xóa database hiện hữu

DROP DATABASE old_database;

Lời kết

Qua bài viết này, bạn có thể tự mình backup và restore VPS trên Linux server một cách dễ dàng, để thuận tiện trong quá trình backup và restore VPS, bạn hãy lưu lại các câu lệnh cần thiết, để tiện sử dụng sau này.

 

Nếu bài viết có ích hãy LikeShare, và đừng quên đánh giá bài viết bên dưới nhé.

Nguồn MzEngineer.com

LEAVE A REPLY

Please enter your comment!
Please enter your name here