Backup định kỳ Database và Web Source từ OpenShift lên Dropbox

backup openshift to dropbox

Bài này sẽ hướng dẫn thiết lập sao lưu tự động mã nguồn và database trang web đăng ký tại Openshift lên Dropbox.

Chú ý

Ở đây tôi backup cả mã nguồn vì tất cả các file media (nhạc, ảnh…) tôi để trên máy chủ khác nên mã nguồn của tôi rất nhẹ, nếu các bạn sử dụng với forum, blog mà không dùng CDN riêng (tức lưu trữ file media luôn trên Host) thì tôi e rằng sau khi backup thì khối dữ liệu của bạn sẽ tương đối lớn, về thời gian dài sẽ phát sinh rắc rối do việc upload 1 file quá lớn là không khả thi.

Cập nhật

Những Application gần đây (khoảng tháng 5-2014 trở về hiện tại) thì thư mục chứa mã nguồn đã không còn là /repo/php nữa mà chuyển về /repo luôn. Vì thế mà cần phải chỉnh sửa 1 chút về đường dẫn trong file script. Việc cập nhật này mình đã update lại trong file tải về.

I. Cài đặt CRON 1.4 cho Openshift Application của bạn

Đăng nhập vào Openshift, vào ứng dụng của bạn và cài đặt CRON 1.4 trong danh mục các ứng dụng có sẵn.

Nếu bạn đã cài rồi thì bỏ qua bước này.

II. Tạo 1 cái App trên tài khoản Dropbox của bạn

Đầu tiên, hãy đăng nhập tài khoản của bạn tại Dropbox.

Tạo 1 thư mục có tên “BackupMyWebsite” trong thư mục chính của bạn tại Dropbox.

Sau khi đăng nhập Dropbox, vào phần dành cho các nhà phát triển tại đây(https://www.dropbox.com/developers/apps/create)

– Chọn DROPBOX API APPS

What type of data does your app need to store on Dropbox?

– Chọn Files and Datastores

Can your app be limited to its own, private folder?

– Chọn No

What type of files does your app need access to?

– Chọn All File Types

Sau đó gõ tên App Dropbox của bạn vào.

Sau khi nhấn Create thì bạn sẽ có AppkeyAppSecret code Chúng ta sẽ sử dụng 2 code này để điền vào khi khởi tạo kết nối xác thực từ Openshift.

III. Upload mã nguồn Backup lên Openshift và xác thực kết nối đến Dropbox

Bạn tải file mã nguồn tôi đã làm sẵn về và chỉnh sửa nó theo thông số cụ thể của bạn.

Dropbox-Openshift Source

 Sau khi giải nén, bạn sẽ có 3 file (autobackup.sh, dropbox_uploader.sh, backup.sh)

Dùng WinSCP kết nối đến Openshift, ban tạo 1 folder có tên “dropboxbackup” tạ:

$HOME/app-root/runtime/ cùng cấp với folder repo.

Upload file dropbox_uploader.sh lên folder mới tạo.

*Tạo kết nối đến Dropbox để xác thực với App Dropbox

Mở terminal có trên WinSCP, di chuyển đến thư mục $HOME/app-root/runtime/dropboxbackup

Gõ lệnh:

Sau đó hệ thống sẽ hỏi đến Appkey và AppSecret

Điền 2 code mà ta đã có vào sau đó nhấn F và Y để đồng ý.

Sau khi chạy xong, trong Folder chứa autobackup.sh và dropbox_uploader.sh sẽ có thêm file .dropbox_uploader ở dạng ẩn. => Đã kết nối OK. File .dropbox_uploader này chứa token để máy chủ Openshift có thể access file trên máy chủ Dropbox của bạn.

Mở file autobackup.sh và chỉnh sửa những thông số sau:

Các thông số về MySQL bạn có thể tra tại đường dẫn /var/lib/openshift/[yourID]/.env/mysql/OPENSHIFT_MYSQL_DB_URL

Trong file này sẽ chứa toàn bộ các câu lệnh tương tác với hệ thống, xuất dữ liệu từ mysql, zip folder… (nếu bạn hiểu về câu lệnh hệ thống Linux thì có thể thêm bớt tùy ý)

Sau khi chỉnh sửa xong, upload tập tin autobackup.sh này lên cùng thư mục với file dropbox_uploader.sh.

Rồi! Xong! Bạn có thể test tại chỗ bằng cách chạy câu lệnh:

(sau khi đã chuyển đến folder $HOME/app-root/runtime/dropboxbackup)

Tại đây bạn sẽ thấy quá trình đóng gói, xuất dữ liệu và upload lên Dropbox. Khá nhanh!

IV. Cho phép hệ thống tự động 1 cách hoàn toàn

Nhớ rằng để có thể chạy autobackup thì các bạn phải add thêm vào Openshift App của mình bộ CRON 1.4 (thời điểm hiện tại)

Trong thư mục $OPENSHIFT_REPO_DIR/.openshift/cron sẽ có 5 loại: – theo phút – theo giờ – theo ngày – theo tuần – theo tháng

Bạn muốn hệ thống thực hiện tự động sau thời gian bao lâu thì upload file backup.sh lên folder tương ứng.

Video cho sinh động (Đây là của bác Admin bên Congthuong.net – của bác ấy chỉ backup database thôi)

 

Update

Cập nhật thêm phần tùy chỉnh Cron:

Mặc định OpenShift chỉ hỗ trợ cronjob vào các mốc thời gian: minutely, hourly, daily, weekly, monthly

Vấn đề đặt ra: nếu chúng ta cần chạy chương trình ở thời điểm khác thì sao? Ví dụ: vào 10AM mỗi ngày, sau 5 – 10 – 15 phút thì sao?

Vậy, cách giải quyết sẽ theo hướng cho chương trình chạy liên tục, nhưng có các lệnh điều kiện để có thể khớp với yêu cầu.

Ví dụ:

 Chạy lệnh lúc 5AM

 Chạy lệnh sau mỗi 15 phút

Leave a Reply

26 Comments on "Backup định kỳ Database và Web Source từ OpenShift lên Dropbox"

Notify of
avatar
Sort by:   newest | oldest | most voted
phimonline
Guest

cậu cho mạch cảm biến à hic hic.
Mà cậu làm nhanh thế coi sao được
gửi lại file 3 file (autobackup.sh, dropbox_uploader.sh, backup.sh)
đi cậu hi
cám ơn nhiều ha

tranthai
Guest

bác cho e hỏi tí.
Để tự chạy 1 file.php bằng cron trên openshift thì phải config như thế nào hả bác.

Tranthai
Guest

Không được a ơi.
E thử cả 2 đoạn mã trên mà kô được.
sub này php 5.4 e mới tạo đc vài bũa. e đã add cron 1.4.
A có thể cho e mail hoặc sdt e gửi link manager qua a xem hộ e cái.
E ql bằng côde manader.

Tranthai
Guest

Cảm ơn bác nhiều. :D

Tam Thiếu Hiệp
Guest

hi bạn . mình làm theo các bước của bạn . nhưng sao mình ko kết nối được dropbox có nghĩa là nó ko tạo ra file .dropbox_uploader . mong bạn hổ trợ giúp nhé. thanks

Trung Thành
Guest

Bạn đã có AppKey và AppSecret khi tạo app trên DropBox chưa?

Tam Thiếu Hiệp
Guest

Có rồi bạn/ nó hiện ra bản đã kết nối thành công cho mình xát nhận. nhưng ko tạo ra file .dropbox_uploader . mong bạn hổ trợ giúp nhé. thanks

Trung Thành
Guest

mình test trên host của mình vẫn ok mà bạn. Bạn coi lại trong phần cài đặt trên Dropbox coi có bị giới hạn quyền gì ko?

Trung Thành
Guest

Mình mới cập nhật lại file script. Bạn thử check lại coi nhé. :)

Quỳnh Nguyễn
Guest

bạn ơi trước mình nén được : zip tên file.zip cách thư mục mà jo không nén được vậy có cách nào nén không bạn ơi

Trung Thành
Guest

Để nén thư mục (directory) thì bạn thêm option -r vào nữa nhé.
zip -r file.zip /directory

Quỳnh Nguyễn
Guest

uh đứng rồi cám ơn cậu nhé hii.À cậu ơi có thể gửi cho mình một số câu lệnh hay dùng không à ? trước mình có nhưng mà lâu ngày để đâu nên mất hết rồi hi

Trung Thành
Guest

uhm, mình sẽ làm 1 bài về một số lệnh trong linux hay dùng. Chắc phải tuần nữa mới có, dạo này đang bận quá không viết lách được gì. :D

Quỳnh Nguyễn
Guest

uh kaka mà cóa vài câu lênh thôi mà đâu coa nhiều đâu chứ hì. Cái tự động backup lên drobox ý nóa cứ làm sao ý mình không làm được nhé hì. Vps này chạy nuột thiệt hi

Trung Thành
Guest

Mình vừa update file script lên bản mới. Bạn tải về check lại nhé. :D
VPS này chạy để làm mấy site chơi chơi thì khá ổn, lại thêm đc mấy trò tương tác như đồ xịn. Mình thấy nghịch cũng được. :)

Quỳnh Nguyễn
Guest

Hi mình nghĩ nóa chắc nóa không del đâu hii tốc độ cũng khá nuột thỉ thoảng hơi chậm à.
Mấy site mình toàn làm trên đóa hết hii

Nguyễn Việt Anh
Guest

Folder chứa source code của mình nó nằm ở app-root/data/current cơ bạn à! Mình đã sửa lại rồi nhưng chỉ backup được data thôi. Làm sao để nó backup được cả source đây?

Nguyễn Việt Anh
Guest

À! Mình làm được rồi. Đổi ./php thành ./* là được. Cảm ơn bạn nhé.

Trung Thành
Guest

:D đổi đường dẫn file nén là ok. Mình cũng mới cập nhật lại phần nội dung config cho dễ thay đổi hơn. Thanks!

Bảo Huỳnh
Guest

sao lúc backup nó báo lỗi port và file sql backup ko có dữ liệu

Trung Thành
Guest

Bạn kiểm tra lại giùm mình coi bạn đã khai báo đúng địa chỉ, port chưa?
Check lại các giá trị địa chỉ, port trong file:
.env/mysql/OPENSHIFT_MYSQL_DB_URL

mr quynh
Guest

Mình chạy thử nó không hiện thêm file mới và làm theo các bước k được :(( ko thấy báo lỗi j hết

Trung Thành
Guest

Có lẽ Dropbox đã thay đổi gì đó phần cấu hình của họ. Mình sẽ chỉnh sửa lại code.
Thanks!

wpDiscuz