Hướng Dẫn Sao Lưu Kho Lưu Trữ Git Vào DataOnline Spaces Đơn Giản, Hiệu Quả

Hướng Dẫn Sao Lưu Kho Lưu Trữ Git Vào DataOnline Spaces Đơn Giản, Hiệu Quả

Việc dựa vào kho lưu trữ mã nguồn để quản lý phiên bản là một thực tiễn tốt giúp chúng ta khôi phục lại hệ thống khi một thay đổi mã gây ra lỗi hoặc khiến ứng dụng hoạt động không ổn định. Tuy nhiên, trong trường hợp xảy ra sự cố thảm họa như toàn bộ nhánh bị xoá nhầm hoặc mất quyền truy cập vào kho lưu trữ, chúng ta nên áp dụng thêm các chiến lược khôi phục thảm họa.

Việc sao lưu kho lưu trữ mã nguồn của chúng ta lên hạ tầng lưu trữ đối tượng cung cấp một bản sao dữ liệu ngoài site để khôi phục khi cần thiết.

Tương thích với API S3, DataOnline Spaces cho phép chúng ta sử dụng các công cụ S3 như S3cmd để giao tiếp với nó. S3cmd là công cụ dòng lệnh giúp tải lên, truy xuất và quản lý dữ liệu từ lưu trữ đối tượng thông qua giao diện dòng lệnh hoặc kịch bản.

Nếu bạn đang tìm cách sao lưu an toàn kho lưu trữ Git, sử dụng VPS Việt Nam là lựa chọn tối ưu. Với hạ tầng mạnh mẽ, VPS Việt Nam giúp bạn quản lý dữ liệu hiệu quả, đảm bảo tốc độ cao và bảo mật tối ưu khi tích hợp với DataOnline Spaces. Khám phá VPS Việt Nam ngay!

Trong hướng dẫn này, chúng ta sẽ trình bày cách sao lưu một kho Git từ xa vào DataOnline Space sử dụng S3cmd. Để đạt được mục tiêu này, chúng ta sẽ cài đặt và cấu hình Git, cài đặt S3cmd, và tạo các kịch bản để sao lưu kho Git lên Space của mình.

Yêu cầu tiên quyết

Để làm việc với Spaces, bạn cần có một tài khoản DataOnline. Nếu chưa có, bạn có thể đăng ký tại trang đăng ký.

Sau đó, bạn cần thiết lập DataOnline Space và tạo một API key theo hướng dẫn “How To Create a DigitalOcean Space and API Key”

Sau khi tạo, hãy lưu lại các thông tin sau về Space của bạn:

Access Key
Secret Key (còn gọi là token)

Ngoài ra, bạn cần có một máy chủ Ubuntu 16.04 được thiết lập với người dùng không phải root có quyền sudo. Bạn có thể tham khảo hướng dẫn thiết lập máy chủ Ubuntu 16.04 ban đầu để biết thêm chi tiết.

Khi đã có thông tin của Space và máy chủ được thiết lập, hãy chuyển sang cài đặt Git.

Cài đặt Git

Trong hướng dẫn này, chúng ta sẽ làm việc với một kho Git từ xa mà chúng ta sẽ clone về máy chủ. Ubuntu đã cài sẵn Git trong các kho mặc định, nhưng phiên bản đó có thể cũ hơn phiên bản mới nhất.

Chúng ta có thể sử dụng các công cụ quản lý gói apt để cập nhật chỉ mục và tải, cài đặt phiên bản Git mới nhất:

sudo apt-get update
sudo apt-get install git

Để cài đặt Git một cách linh hoạt hơn và đảm bảo có phiên bản mới nhất, bạn có thể cân nhắc cài đặt Git từ Source.

Chúng ta sẽ sao lưu từ URL của kho Git, do đó hướng dẫn này không yêu cầu cấu hình Git.

Tiếp theo, chúng ta sẽ clone kho Git từ xa.

Clone Kho Git Từ Xa

Để clone kho Git của mình, chúng ta sẽ tạo một kịch bản để tự động thực hiện việc này, giúp tránh sai sót khi nhập lệnh.

Tạo file shell script mới có tên cloneremote.sh bằng nano:

nano cloneremote.sh

Trong file trống, hãy nhập nội dung sau:

cloneremote.sh
#!/bin/bash

remoterepo=your_remote_repository_url
localclonedir=repos
clonefilename=demoprojectlocal.git

git clone --mirror $remoterepo $localclonedir/$clonefilename

Giải thích từng phần:

  • Dòng đầu tiên #!/bin/bash xác định kịch bản chạy trên Bash.

  • Các biến:

    • remoterepo: URL của kho Git từ xa cần sao lưu.

    • localclonedir: Thư mục trên máy chủ để clone kho về, ở đây đặt tên là repos.

    • clonefilename: Tên file cho kho được clone, ví dụ demoprojectlocal.git.

Mỗi biến này sau đó được gọi trực tiếp trong lệnh ở cuối kịch bản.

Dòng cuối của kịch bản sử dụng công cụ dòng lệnh Git, bắt đầu bằng lệnh git. Từ đó, chúng ta yêu cầu clone một kho lưu trữ với lệnh clone, và thực thi nó dưới dạng phiên bản mirror của kho lưu trữ bằng tùy chọn --mirror. Điều này có nghĩa là kho được clone sẽ hoàn toàn giống hệt với kho gốc. Ba biến mà chúng ta đã định nghĩa ở trên được gọi bằng ký hiệu $.

Khi bạn đã xác nhận rằng kịch bản bạn đã viết là chính xác, bạn có thể thoát nano bằng cách nhấn tổ hợp phím CTRL + x, và khi được nhắc lưu file, nhấn y.

Tại thời điểm này, chúng ta có thể chạy kịch bản shell với lệnh sau.

sh cloneremote.sh

Kết quả đầu ra sẽ tương tự:

Output
Cloning into bare repository './repos/demoprojectlocal.git'...
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (3/3), done.
Checking connectivity... done.

Tại thời điểm này, nếu bạn liệt kê các mục trong thư mục hiện tại, bạn sẽ thấy thư mục sao lưu của mình ở đó. Nếu bạn di chuyển vào thư mục đó, bạn sẽ thấy thư mục con với tên tệp mà bạn đã cung cấp trong kịch bản. Thư mục con này chính là bản clone của kho Git.

Sau khi đã clone kho Git từ xa, chúng ta sẽ chuyển sang cài đặt S3cmd, công cụ giúp sao lưu kho lưu trữ vào hệ thống lưu trữ đối tượng.

Cài đặt S3cmd

S3cmd cho phép kết nối đến DataOnline Spaces thông qua dòng lệnh. Chúng ta sẽ tải phiên bản mới nhất của S3cmd từ GitHub và làm theo hướng dẫn cài đặt.

Trước tiên, cài đặt Setuptools của Python (S3cmd được viết bằng Python):

sudo apt-get install python-setuptoolsNhấn
 để tiếp tục.

Sau đó, tải file tar.gz của S3cmd bằng curl:

cd /tmp
curl -LO https://github.com/s3tools/s3cmd/releases/download/v2.0.1/s3cmd-2.0.1.tar.gz

Lưu ý rằng chúng ta đang tải tệp về thư mục tmp. Đây là một thực tiễn phổ biến khi tải tệp xuống máy chủ.

Bạn có thể kiểm tra xem có phiên bản mới hơn của S3cmd hay không bằng cách truy cập trang Releases của kho GitHub của công cụ này. Nếu tìm thấy phiên bản mới, bạn có thể sao chép URL của tệp tar.gz và thay thế vào lệnh curl ở trên.

Khi quá trình tải xuống hoàn tất, hãy giải nén và mở tệp bằng tiện ích tar:

cd ~
tar xf /tmp/s3cmd-*.tar.gz

Trong các lệnh trên, chúng ta đã chuyển về thư mục home, sau đó thực thi lệnh tar. Chúng ta đã sử dụng hai tham số với lệnh này:

  • x cho biết chúng ta muốn giải nén tệp tar.

  • f chỉ ra rằng chuỗi ngay sau đó sẽ là đường dẫn đầy đủ của tệp cần giải nén.

Trong đường dẫn tệp tar, chúng ta cũng xác định rằng nó nằm trong thư mục tmp.

Sau khi tệp được giải nén, hãy chuyển vào thư mục kết quả và cài đặt phần mềm bằng sudo:

cd s3cmd-*
sudo python setup.py install

Để chạy lệnh trên, chúng ta cần sử dụng sudo. Lệnh python được sử dụng để gọi trình thông dịch Python nhằm cài đặt script setup.py.

Kiểm tra quá trình cài đặt bằng cách yêu cầu S3cmd hiển thị thông tin phiên bản:

s3cmd --version
Output
s3cmd version 2.0.1

Nếu nhận được đầu ra như trên, S3cmd đã cài đặt thành công. Tiếp theo, chúng ta sẽ cấu hình S3cmd.

Cấu hình S3cmd

Quá trình cấu hình S3cmd tương tác giúp tạo file cấu hình cần thiết để kết nối đến DataOnline Spaces. Bạn sẽ được yêu cầu nhập Access KeySecret Key (hãy chuẩn bị sẵn chúng).

Bắt đầu cấu hình bằng lệnh:

s3cmd --configure

Chúng ta sẽ được nhắc nhập Access Key và Secret Key, hãy dán chúng vào, sau đó chấp nhận US làm Default Region.

Lưu ý rằng việc có thể chỉnh sửa Default Region liên quan đến hạ tầng AWS, nơi mà công cụ S3cmd ban đầu được thiết kế để làm việc. Tuy nhiên, vì DataOnline yêu cầu ít thông tin cấu hình hơn, nên điều này không quan trọng và chúng ta có thể chấp nhận giá trị mặc định.

Enter new values or accept defaults in brackets with Enter.
Refer to user manual for detailed description of all options.
Access key and Secret key are your identifiers for Amazon S3. Leave them empty for using the env variables.
Access Key []: EXAMPLE7UQOTHDTF3GK4
Secret Key []: b8e1ec97b97bff326955375c5example
Default Region [US]:

Tiếp theo, chúng ta sẽ nhập endpoint của DataOnline, đó là:

Use "s3.amazonaws.com" for S3 Endpoint and not modify it to the target Amazon S3.
S3 Endpoint [s3.amazonaws.com]: nyc3.digitaloceanspaces.com

Ở lời nhắc tiếp theo, nhập mẫu DNS cho bucket:

%(bucket)s.nyc3.digitaloceanspaces.com
Use "%(bucket)s.s3.amazonaws.com" to the target Amazon S3. "%(bucket)s" and "%(location)s" vars c
an be used if the target S3 system supports dns based buckets.
DNS-style bucket+hostname:port template for accessing a bucket []: %(bucket)s.nyc3.digitaloceanspaces.com

Tại thời điểm này, hệ thống sẽ yêu cầu chúng ta nhập mật khẩu mã hóa. Hãy nhập một mật khẩu để sử dụng trong trường hợp bạn muốn bật tính năng mã hóa dữ liệu.

Encryption password is used to protect your files from reading
by unauthorized persons while in transfer to S3
Encryption password: secure_password
Path to GPG program [/usr/bin/gpg]:

Tiếp theo, hệ thống sẽ yêu cầu chúng ta kết nối qua HTTPS. Vì DataOnline Spaces không hỗ trợ truyền tải dữ liệu không mã hóa, chúng ta chỉ cần nhấn ENTER để chấp nhận mặc định là Yes.

When using secure HTTPS protocol all communication with Amazon S3
servers is protected from 3rd party eavesdropping. This method is
slower than plain HTTP, and can only be proxied with Python 2.7 or newer
Use HTTPS protocol [Yes]:

Khi sử dụng giao thức HTTPS an toàn, tất cả dữ liệu trao đổi với máy chủ S3 sẽ được mã hóa, giúp bảo vệ khỏi bị nghe lén. Tuy nhiên, phương thức này có thể chậm hơn HTTP và chỉ có thể được proxy với Python 2.7 hoặc phiên bản mới hơn.

Vì chúng ta không sử dụng HTTP Proxy, hãy để trống lời nhắc tiếp theo và nhấn ENTER.

On some networks all internet access must go through a HTTP proxy.
Try setting it here if you can't connect to S3 directly
HTTP Proxy server name:

Trên một số mạng, tất cả lưu lượng internet phải đi qua HTTP Proxy. Nếu gặp vấn đề kết nối với S3, bạn có thể thiết lập proxy tại đây.

Sau khi nhập các thông tin cần thiết, script cấu hình sẽ hiển thị bản tóm tắt các giá trị đã nhập và cho phép bạn kiểm tra chúng. Nếu kiểm tra thành công, nhập Y để lưu cấu hình.

Sau khi lưu, bạn sẽ nhận được thông báo xác nhận về vị trí lưu file cấu hình.

Khi đã hoàn tất tất cả các bước cài đặt, bạn có thể kiểm tra lại xem thiết lập có đúng không bằng cách chạy lệnh sau:

s3cmd ls

Lệnh này sẽ liệt kê danh sách Spaces hiện có mà bạn đã thiết lập với thông tin xác thực vừa nhập.

Output
2017-12-15 02:52  s3://demospace

Nếu thấy kết quả như trên, điều đó có nghĩa là bạn đã kết nối thành công với DataOnline Spaces. Bây giờ, chúng ta có thể chuyển sang bước sao lưu kho Git vào hệ thống lưu trữ đối tượng.

Sao Lưu Kho Git Vào Lưu Trữ Đối Tượng

Với tất cả công cụ đã cài đặt và cấu hình, chúng ta sẽ tạo một kịch bản để nén kho Git cục bộ và đẩy nó lên DataOnline Space.

Từ thư mục home, tạo file kịch bản movetospaces.sh bằng nano:

cd ~
nano movetospaces.sh

Nhập nội dung sau:

movetospaces.sh
#!/bin/sh
 
tar -zcvf archivedemoproject.tar.gz /repos/demoprojectlocal.git
./s3cmd-2.0.1/s3cmd put archivedemoproject.tar.gz s3://demospace.

Trước đó trong hướng dẫn này, chúng ta đã sử dụng tar để giải nén s3cmd, và bây giờ chúng ta sẽ sử dụng tar để nén kho Git trước khi gửi nó lên Spaces. Trong lệnh tar, chúng ta sử dụng bốn tham số sau:

  • z: Nén tệp bằng phương pháp gzip.

  • c: Tạo một tệp mới thay vì sử dụng tệp đã có.

  • v: Hiển thị chi tiết các tệp đang được thêm vào tệp nén.

  • f: Định nghĩa tên tệp kết quả theo chuỗi tiếp theo.

Sau các tham số này, chúng ta cung cấp tên tệp nén, trong trường hợp này là archivedemoproject.tar.gz. Đồng thời, chúng ta cũng chỉ định thư mục cần nén, đó là /repos/demoprojectlocal.git.

Sau khi tạo tệp nén, kịch bản sẽ thực thi lệnh sau để gửi tệp lên Spaces:s3cmd put archivedemoproject.tar.gz s3://demospace

Một số lệnh hữu ích khác của S3cmd bao gồm:

  • put: Gửi tệp lên Spaces.

  • get: Tải tệp từ Spaces về máy.

  • delete: Xóa tệp khỏi Spaces.

Bạn có thể xem danh sách tất cả các lệnh mà S3cmd hỗ trợ bằng cách chạy lệnh sau mà không cần thêm tùy chọn:s3cmd

Để sao chép bản sao lưu của bạn vào Space, chúng ta sẽ thực thi kịch bản bằng lệnh:

sh movetospaces.sh

Kết quả đầu ra sẽ tương tự:

Output
demoprojectlocal.git/
...
demoprojectlocal.git/packed-refs
upload: 'archivedemoproject.tar.gz' -> 's3://demobucket/archivedemoproject.tar.gz'  [1 of 1]
 6866 of 6866   100% in    0s    89.77 kB/s  done

Để kiểm tra, chạy:

s3cmd ls s3://demospace
Output
2017-12-18 20:31      6866   s3://demospace/archivedemoproject.tar.gz

Nếu nhận được đầu ra như trên, nghĩa là bạn đã sao lưu thành công kho Git vào DataOnline Spaces.

Kết luận

Việc duy trì các bản sao lưu là rất quan trọng để đảm bảo có thể khôi phục mã nguồn nhanh chóng khi cần. Trong hướng dẫn này, chúng ta đã trình bày cách sao lưu kho Git từ xa vào DataOnline Spaces thông qua việc sử dụng Git, công cụ S3cmd và các kịch bản shell. Đây chỉ là một trong nhiều phương pháp sử dụng DataOnline Spaces để hỗ trợ chiến lược khôi phục thảm họa và đảm bảo tính nhất quán của dữ liệu.

Để sao lưu Git vào DataOnline Spaces mượt mà, việc thuê máy chủ VPS là giải pháp lý tưởng. Máy chủ VPS cung cấp tài nguyên mạnh mẽ, linh hoạt, hỗ trợ quản lý kho lưu trữ hiệu quả. Thuê máy chủ VPS tại DataOnline để tối ưu hóa quy trình backup của bạn!

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *