Việc sao lưu dữ liệu website là việc thường phải làm với các webmaster. Khi bạn sử dụng shared hosting thì việc backup đã được các hosting provider tự động thực hiện, tuy nhiên với VPS thì khác. Bạn sẽ phải tự thực hiện backup bằng tay. Trong bài viết này mình sẽ hướng dẫn các bạn thực hiện quá trình tự động sao lưu toàn bộ dữ liệu của VPS thông qua Duplicity.

Duplicity là một công cụ hữu ích để có thể thực hiện remoted backup tự động. Một số ưu điểm của duplicity như:

  • Có chế độ Incremental backups (chỉ backup những file mới so với lần trước đó)
  • Có nhiều chế độ lưu trữ (SSH, rsync, FTP, Amazon S3, IMAP, Google Drive…)
  • Tích hợp chức năng mã hóa.
  • Dễ dàng cài đặt và sử dụng.

Trong bài viết này mình sẽ hướng dẫn các bạn backup web https://canhme.com chạy trên VPS CentOS của Cloudzin và lưu trên một VPS khác chuyên chứa dữ liệu (mình sử dụng Ramnode, chỉ cần 128MB RAM (14.48$/năm) là đủ) thông qua ssh, những cái khác các bạn có thể tìm hiểu trên mạng.

Quá trình backup được thực hiện từ động mỗi ngày 1 lần vào 24h đêm.

Cấu trúc dữ liệu

– Toàn bộ dữ liệu được nén và lưu theo ngày trong thư mục /var/backups/. Điều này đảm bảo tốc độ tối ưu nhất và dễ dàng quản lý. Ví dụ:

  • /var/backups/2014-03-23/
    • db_2014-03-23.sql.gz
    • files_2014-03-23.zip

– Trên backup VPS cũng lưu theo ngày trong thư mục /var/backups/domain/. Ví dụ:

  • /var/backups/chiasecoupon.com/2014-03-23/
    • db_2014-03-23.sql.gz
    • files_2014-03-23.zip

Các bạn có thể tự sắp xếp dữ liệu phù hợp với nhu cầu bản thân và add thêm domain tùy ý.

Quy trình tự động sao lưu

  1. Sử dụng mysqldump để sao lưu database
  2. Dùng zip nén toàn bộ file lại
  3. Duplicity chuyển dữ liệu lên backup VPS

Chuẩn bị

– Tạo folder backup trên server và folder ngày hiện tại (mục đích để test, sau này quá trình tự động):

mkdir /var/backups/
mkdir /var/backups/2014-03-23/

– Tạo folder lưu trữ dữ liệu trên backup VPS

mkdir /var/backups/
mkdir /var/backups/chiasecoupon.com/
mkdir /var/backups/chiasecoupon.com/2014-03-23/

Giờ thì hãy tiến hành theo các bước sau, chú ý trong các lệnh mình hard code folder là /2014-03-23/ để các bạn dễ dàng thực hiện theo. Ở bash script cuối cùng thì folder sẽ tự động được tạo theo như thời gian hiện tại của VPS.

Cài đặt duplicity

Sử dụng lệnh sau:

sudo yum install duplicity

Sao lưu MySQL

Sử dụng mysqldump:

mysqldump --single-transaction --routines --triggers --add-drop-table --extended-insert -u TaiKhoan -pMatKhauCuaBan Database | gzip -9 > /var/backups/2014-03-23/db_2014-03-23.sql.gz

Xem thêm Backup và Restore MySQL Database bằng dòng lệnh

Zip dữ liệu

zip -r /var/backups/2014-03-23/files_2014-03-23.zip  /home/chiasecoupon.com/public_html/ -q -x /home/chiasecoupon.com/public_html/wp-content/cache/**\*

Trong ví dụ trên mình không nén folder cache, nếu các bạn không muốn thì có thể bỏ đoạn -x /home/chiasecoupon.com/public_html/wp-content/cache/**\* đi.

Chú ý chỉnh lại đường dẫn chứa website của bạn cho phù hợp.

Nếu như báo lỗi -bash: zip: command not found thì bạn cần chạy yum install zip trước.

Duplicity

Ở đây mình dùng một VPS bảo mật chỉ chuyên chứa dữ liệu thôi, duplicity sẽ dùng ssh để gửi lên. Nếu các bạn muốn dùng Amazon S3 hoặc Google Drive thì hãy tìm hiểu trên mạng nhé, cấu trúc dòng lệnh cũng tương tự.

Đầu tiên cần tạo ssh key để kết nối với ssh-keygen

ssh-keygen -C 'Duplicity Backup Key'

Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): /root/.ssh/backup_rsa
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/backup_rsa.
Your public key has been saved in /root/.ssh/backup_rsa.pub.

Chú ý bước này bạn không điền passphrase nhé, để trống.

Giờ sẽ tiến hành copy key này lên backup VPS.

ssh-copy-id -i /root/.ssh/backup_rsa.pub "-p root@22 12.34.56.78"

Và test lại xem bạn có thể login với key này hay không

ssh -i /root/.ssh/backup_rsa -p 22 root@12.34.56.78

Nếu kết nối thành công, chạy exit để thoát khỏi backup VPS và tiếp tục cài đặt.

duplicity full --no-encryption --volsize 100 --ssh-options="-oProtocol=2 -oIdentityFile=/root/.ssh/backup_rsa" /var/backups/2014-03-23/ scp://root@12.34.56.78//var/backups/chiasecoupon.com/2014-03-23/

Ở đây mình chọn chế độ backup full chứ không phải incremental. Và tự động split file 100MB nếu dung lượng quá lớn.

Nếu bạn muốn add thêm folder, hãy sử dụng option --include="/path/to/folder"

Nếu toàn bộ quá trình trên bạn thực hiện thành công, giờ hãy gộp tất cả lại vào 1 file bash script và chạy cronjob hàng ngày.

Tạo file script nano /root/backup.sh với nội dung như bên dưới của mình:

#!/bin/bash
{
    printf "subject:Chia Se Coupon Backup Report\nfrom:admin@chiasecoupon.com\n\n"
    rm -rf /var/backups/*
    mkdir /var/backups/$(date +"%Y-%m-%d")/
    echo "Starting backup database..."
    mysqldump --single-transaction --routines --triggers --add-drop-table --extended-insert -u TaiKhoan -pMatKhauCuaBan Database | gzip -9 > /var/backups/$(date +"%Y-%m-%d")/db_$(date +"%H:%M_%d-%m-%Y").sql.gz
    echo "Starting backup files..."
    zip -r /var/backups/$(date +"%Y-%m-%d")/files_$(date +"%H:%M_%d-%m-%Y").zip /home/chiasecoupon.com/public_html/ -q -x /home/chiasecoupon.com/public_html/wp-content/cache/**\*
    echo "Starting duplicity..."
    duplicity full --no-encryption --volsize 100 --ssh-options="-oProtocol=2 -oIdentityFile=/root/.ssh/backup_rsa" /var/backups/$(date +"%Y-%m-%d")/ scp://root@12.34.56.78//var/backups/chiasecoupon.com/$(date +"%Y-%m-%d")/
} | /usr/sbin/sendmail "admin@chiasecoupon.com"

Như các bạn thấy trong script trên, mình có add thêm lệnh gửi thông báo qua email sau khi chạy backup thành công.

Sau đó lưu file này lại, thêm quyền executive chmod +x /root/backup.sh, test một lần nữa xem toàn bộ quá trình sao lưu này thành công hay chưa với lệnh /root/backup.sh

Cronjob

Mình sẽ để tác vụ backup tự động thực hiện mỗi ngày bằng cách add thêm vào crontab. Ở đây mình quen sử dụng editor nano nên sẽ sử dụng thay cho vim mặc định.

EDITOR=nano crontab -e

Thêm dòng mới với nội dung:

0 3 * * * /root/backup.sh >/dev/null 2>&1

Đoạn bên trên qui định cứ 3h sáng mỗi ngày sẽ thực hiện backup 1 lần, nếu bạn muốn thay đổi thời gian thì tham khảo thêm bài viết về crontab.

Cuối cùng nhấn Ctrl + O để lưu lại và Ctrl + X để thoát.

Như vậy là toàn bộ quá trình sao lưu dữ liệu lên backup VPS server đã được thực hiện tự động.

Lưu ý: có thể bạn cần thay đổi lại timezone thì cronjob mới hoạt động chính xác được.

Restore

Giờ thì chúng ta đã có những bản backup hàng ngày rồi, tuy nhiên làm thế nào để khôi phục lại website khi có vấn đề?

Đầu tiên bạn cần truy cập vào backup VPS server, đến thư mục chứa file backup sẽ thấy rất nhiều file kiểu như sau:

duplicity-full-signatures.20140322T142037Z.sigtar.gz
duplicity-full.20140322T142037Z.manifest
duplicity-full.20140322T142037Z.vol1.difftar.gz
duplicity-full.20140322T142037Z.vol2.difftar.gz
duplicity-full.20140322T142037Z.vol3.difftar.gz

Đó là cấu trúc dữ liệu của duplicity, để khôi phục lại như file nén db và files như ban đầu, hãy sử dụng lệnh:

duplicity restore --no-encryption --file-to-restore / file:///var/backups/chiasecoupon.com/2014-03-23 /var/backups/chiasecoupon.com/extract

Synchronizing remote metadata to local cache...
Copying duplicity-full-signatures.20140322T142037Z.sigtar.gz to local cache.
Copying duplicity-full.20140322T142037Z.manifest to local cache.
Last full backup date: Sat Mar 22 21:20:37 2014
GnuPG passphrase:

Truy cập vào folder /var/backups/chiasecoupon.com/extract bạn sẽ thấy toàn bộ dữ liệu đã được giải nén.

Chúc các bạn thực hiện thành công!

Comment của bạn

Lưu ý: tất cả comment đều được kiểm duyệt cẩn thận! Nếu có code bạn hãy up lên pastebin.com rồi để lại link trong comment.

125 Comments

  1. Vinh 2 comment

    Cho mình hỏi chút:
    Làm cách nào để backup VPS tại Vultr rồi đem bản backup đó sang DO hoặc Linode để sử dụng vậy?
    Cám ơn

    1. Việt Phương Moderator

      Bạn backup những dữ liệu cần thiết rồi chuyển sang DO/Linode thôi chứ không chuyển cả VPS nhé

  2. Trường 13 comment

    cho mình hỏi tự động backup thế này thì nó có tự động xóa backup cũ không? mình muốn nó tự động backup trong 3 ngày mới nhất và tự xóa bản backup cũ tránh đầy HDD

    1. Việt Phương Moderator

      Chuyển toàn bộ lên VPS mới nhé bạn. Không bao gồm xóa dữ liệu backup cũ ở VPS mới

  3. Sơn Khiếu 33 comment

    Bài viết này cũng viết khá lâu rồi. Cho mình hỏi ở thời điểm hiện tại, mình dùng Vultr, thì giải pháp nào để backup tối ưu nhất về chi phí và độ an toàn. (Server backup có thể chấp nhận có phí ở mức chấp nhận được.)

    Thanks a lot!

    1. Việt Phương Moderator

      Ở thời điểm này, với dữ liệu lớn, bạn dùng Duplicity vẫn tốt nhé. Còn dữ liệu bình thường bạn có thể backup lên Cloud qua Rclone

          1. Việt Phương Moderator

            Block Storage chỉ có ở VPS location New Jersey và mục đích của nó là tăng dung lượng cho VPs hiện tại của bạn thôi
            Ví dụ con 2.5$/tháng có 20GB thì bạn add thêm 50Gb thành tổng 70GB

          2. Sơn Khiếu 33 comment

            Xin phép mở lại câu hỏi trong này.

            Mình thấy DigitalOcean có cái dịch vụ Space với 5$/tháng cho 250GB

            https://www.digitalocean.com/products/spaces/

            Cái này có phải giống cái BlogStorage của Vultr không nhỉ.
            Và mình thấy trong CPanel của Digital Ocean có dịch vụ backup VPS. Cái này có khác với cái duplicity không.

            Mình muốn dùng VPS cho khoảng 10 website của mình. Nếu backup VPS thì ko restore cho từng website được nhỉ.

          3. Việt Phương Moderator

            1. Không hẳn. Nó như 1 phân vùng để bạn cất dữ liệu thôi. Tức bạn chỉ có thể upload/download dữ liệu từ phân vùng này lên VPs bạn chứ không thể thao tác gì khác.
            2. Backup VPS là cả hệ điều hành. Duplicity là chỉ website, bao gồm database, source code

  4. NguyenTung 43 comment

    Chào bác Luân,

    Bác có thể hướng dẫn sơ qua cách backup theo WebDAV được không ạ

  5. long 45 comment

    những bài như này rất khó với newbie.. và cũng hay lỗi với nhiều người.. ad nên làm video cho nhìu người rõ hơn ạ!

    1. Luân Trần Admin

      Thực ra bài viết này dành cho người dùng advanced thì mới thao tác được bạn ạ, yêu cầu thêm một số kiến thức kĩ thuật nữa.

      1. long 45 comment

        nếu muốn backup restore trên vps thì cái nào nhanh và dễ dàng cho newbie hả admin

    2. Việt Phương Moderator

      Làm việc với VPS hoàn toàn trên cửa sổ lệnh terminal, không có thao tác chuột gì nên việc video là không cần thiết bạn à. Bạn gặp lỗi gì thì cứ post ra để mọi người cùng xem và giúp đỡ

  6. Hoang 13 comment

    Anh Luân ơi, cho em hỏi VPS em thuê bên Vultru chỉ còn có 200M sử dụng hết 19G rồi,
    Giới hạn là 20G,
    Anh cho em hỏi giờ em muốn backup lại web thì phải làm thế nào ạ?

    1. Việt Phương Moderator

      Nếu backup thì dữ liệu trống còn phải hơn 1 nửa mới ổn định được bạn nhé

  7. Duong 1 comment

    Hi, Anh Luân.

    Mình đã làm theo cách của Anh nhưng chỉ copy được thư mục, không copy được file zip từ client lên server. Mình đã thử chạy trực lệnh duplicity thư mục cụ thể vẫn không ăn thua, kết quả show như thể này StartTime 1476351776.99 (Thu Oct 13 16:42:56 2016)
    EndTime 1476351777.24 (Thu Oct 13 16:42:57 2016)
    ElapsedTime 0.25 (0.25 seconds)
    SourceFiles 2
    SourceFileSize 2448768 (2.34 MB)
    NewFiles 2
    NewFileSize 2448768 (2.34 MB)
    DeletedFiles 0
    ChangedFiles 0
    ChangedFileSize 0 (0 bytes)
    ChangedDeltaSize 0 (0 bytes)
    DeltaEntries 2
    RawDeltaSize 2444672 (2.33 MB)
    TotalDestinationSizeChange 2375642 (2.27 MB)
    Errors 0.

    Xin chỉ giúp. Cảm ơn

  8. Hanh Pham 39 comment

    Luân ơi hiện giờ xài vps backup ở đâu thì tốt vậy và giá rẻ vậy?
    Mình có xem ở ramnode thấy gói 128M ram giá tốt nhưng mà dung lượng có 12G ít quá trong khi nhu cầu mình dùng nhiều hơn.

    1. Luân Trần Admin

      Hiện giờ ngon nhất là Google Drive, free mà được 15GB. Đợi mình sắp tới bổ sung bài hướng dẫn chi tiết cho.

      1. Hanh Pham 39 comment

        Mong Luân sớm ra bài để mình vọc theo với.
        Hiện mình đang bị động trong việc backup quá.
        Mà ngoài ramnode ra thì còn bên nào dùng làm vps backup tốt ko Luân?
        Cảm ơn Luân

  9. V 1 comment

    Luân ơi cho mình hỏi 1 xíu về back up này.
    Chắc L cũng biết trên Vultr khi dùng window đó, cụ thể ở đây là win 2008 server, sau khi đã chạy isosetup xong, cài đặt đầy đủ các phần mềm rồi, thì họ dùng snapshot có trong vultr để tạo bản sao, sau đó dùng ngay trên account vultr của họ. Câu hỏi mình muốn hỏi ở đây là: có thể dùng back up, hay snapshot của vultr để tạo ra 1 bản sao win 2008 đã cài đặt đầy đủ phần mềm, sau đó lưu trữ ở 1 server nào khác(vd google drive) giống như mình tạo bản ghost ấy, sau đó mình reg nhiều account vultr, rồi thay vì upload iso trắng, mình upload bản ghost đã cài full soft lên, vậy có được không luân? Và bằng cách nào ạ? Xin cảm ơn!

    1. Luân Trần Admin

      Mình không sử dụng server Windows thường xuyên nên vụ này rất tiếc không trả lời bạn được rồi. Tuy nhiên bạn có thể thử trực tiếp xem sao, không được thì xóa VPS đi, không tốn kém mấy.

  10. Phan Phiêu 9 comment

    Các bạn nào biết giới thiệu mình con VPS nào rẻ rẻ để mình backup cái nhỉ!?
    Thanks!

  11. Nhan Nguyen 7 comment

    Nếu có nhiều website trên nhiều VPS thì có thể backup qua duy nhất 1 con vps backup được không vậy bạn?

    1. Trung 5 comment

      Chào bạn,

      Bạn đã sửa được lỗi này chưa
      Mình cũng bị giống bạn 🙁
      Đã login được vào vps khác bằng rsa key, nhưng lúc thử dùng duplicity để gửi backup file thì lại bị lỗi giống bạn 🙁

    2. Nguyen Long Hung 1 comment

      Mình loay hay nửa ngày nó cứ lỗi: BackendException: ssh connection to root@107.155.113.27:22 failed: Incompatible ssh peer (no acceptable kex algorithm)
      Ae nào chỉ giúp với? Trước đó kết nối sang backup VPS thì đã dược rồi

  12. Nhan Nguyen 7 comment

    Chào bạn, mình gặp lại này ạ. Mình chạy trên webvps

    ssh-copy-id -i /root/.ssh/backup_rsa.pub “-p 22 123.123.123.123”

    /usr/bin/ssh-copy-id: ERROR: failed to open ID file ‘/root/.ssh/backup_rsa.pub’: No such file or directory

  13. Kevin 6 comment

    Nếu trường hợp mình bị chết VPS chính, chỉ còn backupVPS thì sao Luân?

  14. Nam Thanh 36 comment

    Cho em hỏi, giờ em chạy vps vultr với rất nhiều site wordpress, muốn backup dữ liệu site1 để clone ra thành site2 thì làm sao vậy anh? Em có xem bên Thachpham thấy có plugin Duplicator, cài thử và thấy Database 66mb, File lên tận 1.5GB. Sau đó tải về và upload lại em thấy ko hiệu quả. Anh có cách nào ko ạ?

    1. Luân Trần Admin

      Bạn dùng lệnh cp, ví dụ cp /home/site1.com/public_html /home/site2.com/public_html để sao chép files ra 1 thư mục cho domain mới. Sau đó dùng plugin WP Migrate DB để tạo database mới cho site2, import là xong.

      1. Nam Thanh 36 comment

        Cảm ơn anh, em đã làm được. Em còn 1 thắc mắc là vps vultr tài nguyên như cpu, ram dùng khoảng bao nhiêu % thì mình nên tạo mới hoặc add thêm phần cứng. em dùng con 1cpu 1GB RAM. Dùng lệnh # top thì thấy memory free tầm 70-80MB, used khoảng hơn 900MB rồi, nhưng vps vẫn chạy khá tốt.

    1. Luân Trần Admin

      Do mình tự cài đặt cấu hình nên thích làm gì thì làm. Có thể đẩy bản backup từ các VPS khác nhau về 1 VPS lưu trữ thôi cũng được.

    1. Luân Trần Admin

      CodeGuard cũng được, nhưng nếu thích mày mò thì nên tự sao lưu bằng script như thế này, tiết kiệm hơn rất nhiều. Mình có order 1 VPS ở Ramnode, giá chỉ 12.75$/năm mà backup tẹt ga luôn :D.

  15. Trieu 9 comment

    Tự nhiên mấy bữa nay bị thông báo lỗi như này 🙁 Chạy mấy tháng nay ngon lành muh 🙁 Luân biết chỉ giúp tớ 🙁

    Starting backup database…
    Starting backup files…
    Starting duplicity…
    Import of duplicity.backends.dpbxbackend Failed: No module named dropbox
    Local and Remote metadata are synchronized, no sync needed.
    Last full backup date: none
    sftp put of /tmp/duplicity-jtcfjw-tempdir/mktemp-mLgAkK-42 (as duplicity-full.20150927T182028Z.vol41.difftar.gz) failed: (Try 1 of 5) Will retry in 10 seconds.
    sftp put of /tmp/duplicity-jtcfjw-tempdir/mktemp-mLgAkK-42 (as duplicity-full.20150927T182028Z.vol41.difftar.gz) failed: (Try 2 of 5) Will retry in 10 seconds.
    sftp put of /tmp/duplicity-jtcfjw-tempdir/mktemp-mLgAkK-42 (as duplicity-full.20150927T182028Z.vol41.difftar.gz) failed: (Try 3 of 5) Will retry in 10 seconds.
    sftp put of /tmp/duplicity-jtcfjw-tempdir/mktemp-mLgAkK-42 (as duplicity-full.20150927T182028Z.vol41.difftar.gz) failed: (Try 4 of 5) Will retry in 10 seconds.
    sftp put of /tmp/duplicity-jtcfjw-tempdir/mktemp-mLgAkK-42 (as duplicity-full.20150927T182028Z.vol41.difftar.gz) failed: (Try 5 of 5) Will retry in 10 seconds.

          1. Triều 9 comment

            Cái này nó chuyển sang VPS phụ đến Vol41 là nó báo lỗi k chuyển nữa Luân ạ 🙁

            Mà cho tớ hỏi sao mình không sài scp chuyển file backup sang VPS backup luôn nhỉ 😀

          2. Luân Trần Admin

            Vậy do đường truyền kết nối giữa 2 VPS rồi?

            Mình dùng duplicity vì nó có thể chia nhỏ dữ liệu ra để gửi, và đảm bảo dữ liệu không bị lỗi trong quá trình gửi. SCP mà đứt 1 cái là coi như xong.

            Còn một giải pháp nữa mình đã chuyển sang không dùng duplicity nữa đó là Rsync, bạn tìm hiểu thử coi nhé.

  16. Nam Duy 110 comment

    Cho mình hỏi với. Nếu vps nhiều site thì cũng phải làm lần lượt từng site như trên à ? Mình có 50 site cho 7 cái vps thì backup kiểu gì nhanh đc Luân ? mình đang sử dụng hocvps để quản lý vps. THanks Luân

    1. Luân Trần Admin

      Qui trình thì lằng nhằng, nhưng thực chất chốt lại chỉ là nội dung file backup.sh thôi bạn.
      Backup toàn bộ site trên VPS có khi lại nhanh đó.
      – Để backup toàn bộ database thì bạn dùng lệnh: mysqldump -u root -pmypass --all-databases > alldatabases.sql (https://hocvps.com/cac-cau-lenh-mysql-can-phai-biet/)
      – Còn nén file thì thay vì bạn sử dụng /home/chiasecoupon.com/public_html/, lúc này dùng /home/*/public_html/ thì nó sẽ nén toàn bộ folder public_html của tất cả các site

      1. Nam Duy 110 comment

        Ồ vậy à Luân ? Cảm ơn nhiều, để mình thử xem sao nha. Hôm qua thử dùng puty winscp rồi click all chọn Taz nén rồi down về thấy ok lắm.

          1. Nam Duy 110 comment

            Thì mình paste mysqldump -u root -pmypass –all-databases > alldatabases.sql vào ZOC
            Tất nhiên là đã thay pass tương ứng mà nó báo thế Luân ạ

          2. Luân Trần Admin

            Mình vừa thử ok nhé, bạn check lại phát nữa đi :)) (nhìn cho thật kỹ)
            mysqldump -u root -pmypass --all-databases > alldatabases.sql

          3. Nam Duy 110 comment

            Chắc do mình để ký tự trong pass nên nó báo lỗi. Mình dùng lệnh change pass mà cũng k đc

          4. Nam Duy 110 comment

            Cho mình hỏi lỗi này với. Chả hiêu sao phpmyadmin báo lỗi này:
            phpMyAdmin – Error

            Error during session start; please check your PHP and/or webserver log file and configure your PHP installation properly. Also ensure that cookies are enabled in your browser.
            Có phải do mình updae script k Luân??

  17. hkgh 5 comment

    mysqldump –single-transaction –routines –triggers –add-drop-table –extended-insert -u TaiKhoan -pMatKhauCuaBan Database | gzip -9 > /var/backups/2014-03-23/db_2014-03-23.sql.gz

    Ở câu lệnh này mình thay đổi cho phù hợp với VPS mình như sau:

    mysqldump –single-transaction –routines –triggers –add-drop-table –extended-insert -u root -p123QWE!@# test_db | gzip -9 > /var/backups/2014-03-23/db_2014-03-23.sql.gz

    Sau đó mình chạy thì bị báo lỗi -bash: !@#: event not found

    Như vậy là sao ạ? Mình làm sai bước nào vậy ạ? Thanks!

    1. Luân Trần Admin

      Do pass của bạn có ký tự lạ, thử dùng lệnh này xem sao:
      mysqldump –single-transaction –routines –triggers –add-drop-table –extended-insert -u root -p'123QWE!@#' test_db | gzip -9 > /var/backups/2014-03-23/db_2014-03-23.sql.gz

      1. hkgh 5 comment

        OK anh, em làm dc rồi, nhưng còn 1 lỗi này:

        Chạy đến phần Duplicity thì bị

        20150521T072212Z.vol41.difftar.gz) failed: Server connection dropped: (Try 1 of 5) Will retry in 10 seconds.
        sftp put of /tmp/duplicity-mbCHaG-tempdir/mktemp-2warK_-42 (as duplicity-full.20150521T072212Z.vol41.difftar.gz) failed: (Try 2 of 5) Will retry in 10 seconds.
        sftp put of /tmp/duplicity-mbCHaG-tempdir/mktemp-2warK_-42 (as duplicity-full.20150521T072212Z.vol41.difftar.gz) failed: (Try 3 of 5) Will retry in 10 seconds.
        sftp put of /tmp/duplicity-mbCHaG-tempdir/mktemp-2warK_-42 (as duplicity-full.20150521T072212Z.vol41.difftar.gz) failed: (Try 4 of 5) Will retry in 10 seconds.
        sftp put of /tmp/duplicity-mbCHaG-tempdir/mktemp-2warK_-42 (as duplicity-full.20150521T072212Z.vol41.difftar.gz) failed: (Try 5 of 5) Will retry in 10 seconds.

        File backup em tận 2,9gb lận. Ko biết xử lý làm sao nữa, anh chỉ giúp em. Thanks!

        1. Luân Trần Admin

          File backup mà 2.9GB thì không nên dùng Duplicity, tính nước khác thôi bạn 🙁

          1. hkgh 5 comment

            Hi, ok anh. em đã tìm ra cách, dùng scp qua vps backup mà không cần nhập pass. Ko biết cách này có ổn ko a nhỉ? Thanks a rất nhiều 🙂

          2. Luân Trần Admin

            Cách này cũng được, nhưng bạn nén file lại trước khi copy sẽ nhanh hơn. Ngoài ra tạo 1 user ko có quyền root để bảo mật thêm.

          3. hkgh 5 comment

            Hi anh!
            Em làm thành công bằng lệnh scp rồi. Nhưng bây giờ e muốn bên VPS phụ chứa file backup tự động xóa bản backup 2 ngày trước kể từ ngày hiện tại thì viết lệnh xóa ntn vậy a?

            Vd như e có 1 loạt file backup như này:
            files_2015-05-19.zip
            files_2015-05-20.zip
            files_2015-05-21.zip

            Thì viết lệnh nào để nó tự động xóa files_2015-05-19.zip đi hả anh?

          4. Luân Trần Admin

            Đơn giản hơn rất nhiều nếu bạn lưu trữ 1 tháng, mỗi tháng sẽ tự động chạy crontab 1 lần để xóa toàn bộ folder trước đó với ký tự *: rm -rf files_2015-05*
            Tháng hiện tại thì lấy đơn giản, ví dụ cách của mình: month=$(date +"%m")

          5. hkgh 5 comment

            Dạ, thanks anh, nhưng vấn đề là e backup hằng ngày, file backup thì dung lượng quá lớn, nếu để 1 tháng mới xóa thì ổ cứng server phụ ko chứa nổi. Nên em muốn giữ lại 2 bản backup gần nhất tính từ ngày hiện tại. Nhưng lại ko biết tham số để xóa nó ntn? 🙁

          6. Luân Trần Admin

            Cũng tương tự như thế thôi, ngày hiện tại thì bạn dùng lệnh date=$(date +"%d")

      1. Luân Trần Admin

        Em có dùng Duplicity trên Ubuntu không? Nếu có thì chỉ cần edit lại mấy lệnh backup sao cho nó backup toàn bộ thư mục và database chứa web là xong thôi.

  18. Nguyen thanh Long 23 comment

    duplicity restore –file-to-restore / file:///var/backups/chiasecoupon.com/2014-03-23 /var/backups/chiasecoupon.com/extract

    Synchronizing remote metadata to local cache…
    Copying duplicity-full-signatures.20140322T142037Z.sigtar.gz to local cache.
    Copying duplicity-full.20140322T142037Z.manifest to local cache.
    Last full backup date: Sat Mar 22 21:20:37 2014
    GnuPG passphrase:
    Đoạn này là thực hiện ở vps backup hay trên vps chứa website

    1. Luân Trần Admin

      Thao tác này để lấy lại các file đã sao lưu, do đó thực hiện trên vps backup nhé bạn.

      1. Nguyen thanh Long 23 comment

        Mình thực hiện thì bị báo như thế này

        -bash: duplicity: command not found
        Như vậy là làm sao vậy bạn?

          1. Nguyen thanh Long 23 comment

            Tức là ở cả 2 vps mình đều phải cài đúng ko?

          2. Nguyen thanh Long 23 comment

            [root@control ~]# sudo yum install duplicity
            Loaded plugins: fastestmirror
            Setting up Install Process
            Loading mirror speeds from cached hostfile
            * base: centos.sonn.com
            * extras: centos.sonn.com
            * updates: centos.sonn.com
            No package duplicity available.
            Error: Nothing to do

            Mình cài trên vultr thì ok mà cài trên ramnode thì báo thế này,mình cần làm gì để khắc phục! Cảm ơn bạn!

          3. Nguyen thanh Long 23 comment

            Mình đã thực hiện đến bước cuối.
            Import of duplicity.backends.dpbxbackend Failed: No module named dropbox
            Synchronizing remote metadata to local cache…
            Copying duplicity-full-signatures.20150408T130620Z.sigtar.gz to local cache.
            Copying duplicity-full.20150408T130620Z.manifest to local cache.
            Last full backup date: Wed Apr 8 09:06:20 2015
            GnuPG passphrase:
            Nhưng vào chẳng thấy mục extract đâu cả,là bị sao nhỉ

          4. Luân Trần Admin

            Mình mới update lại câu lệnh để restore, bổ sung thêm option –no-encryption, bạn thử lại xem sao nhé.

      1. Đạo 34 comment

        em dùng vultr để đặt web và ramnode để chứa file backup nhưng em check trong thư mục dạng /var/backups/2014-03-23/ ở vultr thì có file nhưng trong thư mục ramnode thì không có, đã test kết nối thì ok nhưng không tự động chạy file thì phải, anh có thể làm video hướng dẫn chi tiết được không anh?

        1. Luân Trần Admin

          Trên Ramnode cũng phải manual tạo các folder cần thiết. Bạn check lại xem có chưa?

          1. Đạo 34 comment

            trên ramnode em cũng tạo thư mục theo dạng /var/backups/website.com/2014-03-23/ tuy nhiên check thì không thấy có dữ liệu

          2. Luân Trần Admin

            Bạn liên hệ qua email hoặc tạo câu hỏi trong phần hỏi đáp nhé, mình sẽ hướng dẫn check lại cụ thể cho.

  19. DoremonViet 9 comment

    Mình kết nối ssh với Backup VPS rồi nhưng dùng lệnh
    duplicity full –no-encryption –ssh-options=”-oProtocol=2 -oIdentityFile=/root/.ssh/backup_rsa” /var/backups/2014-03-23/ scp://root@12.34.56.78//var/backups/chiasecoupon.com/2014-03-23/
    (Đã chỉnh đường dẫn chuẩn và IP là IP Backup VPS rồi)
    Thì báo lỗi này:

    Import of duplicity.backends.dpbxbackend Failed: No module named dropbox
    Temp space has 0 available, backup needs approx 34078720.

    Các bạn giúp mình nhé. Cảm ơn.

    1. Luân Trần Admin

      Lỗi Import of duplicity.backends.dpbxbackend Failed: No module named dropbox không quan trọng lắm.
      Temp space has 0 available, backup needs approx 34078720 thì có vẻ folder chứa backup không được phân quyền chuẩn rồi thì phải?

  20. Minh bao 2 comment

    yum install duplicity : không hoạt động, mình đang dùng CentOS 7 64bit . Vui lòng chỉ giúp.
    Cam on.

    [root@server2 ~]# yum install duplicity
    Loaded plugins: fastestmirror
    Loading mirror speeds from cached hostfile
    * base: mirror.ash.fastserv.com
    * epel: mirror.metrocast.net
    * extras: mirror.es.its.nyu.edu
    * updates: mirror.net.cen.ct.gov
    No package duplicity available.
    Error: Nothing to do

  21. Nguyễn Xuân Công 1 comment

    Hi,
    * Cho mình hỏi là có phải cấu hình sendmail không vì mình chạy thử backup.sh thành công nhưng không thấy email thông báo.
    * 2 thư mục backup ở trên 2 vps là thỉnh thoảng phải vào xóa thủ công đúng không bạn?

    1. Luân Trần Admin

      – Bạn hãy check lại chức năng sendmail của VPS xem có bị chặn không bằng cách chạy lệnh echo "Subject: test" | /usr/lib/sendmail -v me@domain.com (nhớ thay email của bạn)
      – Chính xác thế, thích thì bạn cho 1 cronjob chạy hàng tháng để xóa backup cũ đi, cái này cũng đơn giản

      1. Triều 9 comment

        Tạo như nào thế a.Luân ơi 😀 Chỉ để lại các file backup trong trong vòng 1 tháng thôi thì làm thế nào nhỉ 😀

        1. Luân Trần Admin

          Lúc đó sử dụng tham số tháng hiện tại – 1 –> tháng trước, kèm với câu lệnh xóa file rm -rf /folder/ là được.
          Sử dụng cụ thể thì tùy theo nhu cầu nhé.

          1. Triều 9 comment

            Chưa hiểu lắm a ơi @.@ tutorial chi tiết xíu a.Luân ơi :p

          2. Luân Trần Admin

            Cái này ko có tutorial được, tự viết custom theo nhu cầu thôi.
            Bạn nhìn vào code trong bài thì $(date +”%Y-%m-%d”) là ngày tháng hiện tại đó –> xóa tháng trước là rm $(date +”%Y-%m*”)

  22. Món ngon mỗi ngày 5 comment

    OK cám ơn bạn. Tại mình đang dùng Backup Buddy. Mình mới mua VPS trên DO nên hay lên blog của bạn để nghiên cứu tối ưu. Theo Luân thì nên chon severtut hay tự cài đặt và tối ưu LEMP sẽ tốt hơn?

    1. Luân Trần Admin

      Mình thường tự cài đặt và tối ưu, thích dùng cái gì thì cài cái đó, ưu điểm bạn sẽ học được nhiều hơn, nhược điểm mất thời gian :D. À nếu có dùng VPS cho nhiều site thì có thể cài servertuts, nó quản lý khá tốt.

    1. Luân Trần Admin

      Được chứ bạn, dùng plugin này thì không quan trọng shared hosting hay VPS đều ok hết

  23. Điện Lạnh Số Đỏ 7 comment

    Có cách nào đẩy trực tiếp database + source qua VPS Backup mà không cần bước duplicity restore không bạn ?

    Mình cũng đã test trên Google drive và thành công như data bị nén theo kiểu của duplicity phải Restore lại mất công quá.

    1. Luân Trần Admin

      Hôm trước mình cũng thử tìm rồi, nhưng không thấy bạn ạ. Toàn phải giải nén ra mới được file db + source

  24. Điện Lạnh Số Đỏ 7 comment

    Không thể nói gì hơn ngoài 2 từ tuyệt vời, mình mới sử dụng VPS và backup thủ công rất lâu mua vaultpress nhưng thấy cũng không hiệu quả.
    Tôi nay mình sẽ test thử cách của bạn.
    Các bài viết ở đây rất thiết thức, thanks bác nhiều !