GIT như một công cụ sao lưu


101

Trên máy chủ, cài đặt git

cd /
git init
git add .
git commit -a -m "Yes, this is server"

Sau đó, /.git/trỏ đến một ổ đĩa mạng (SAN, NFS, Samba bất cứ thứ gì) hoặc đĩa khác. Sử dụng công việc định kỳ mỗi giờ / ngày, vv để cập nhật các thay đổi. Thư mục .git sẽ chứa một bản sao được phiên bản của tất cả các tệp máy chủ (không bao gồm các tệp vô dụng / phức tạp như / Proc, / dev, v.v.)

Đối với một máy chủ phát triển không quan trọng, nơi tôi không muốn rắc rối / chi phí thiết lập nó trên một hệ thống sao lưu phù hợp và khi sao lưu chỉ để thuận tiện (IE chúng tôi không cần sao lưu máy chủ này nhưng sẽ tiết kiệm đôi khi nếu có sự cố xảy ra), đây có thể là một giải pháp sao lưu hợp lệ hay nó sẽ rơi vào một đống phân lớn?


3
không phải Spark Meatare sử dụng ý tưởng tương tự ??
B14D3

@ B14D3 Tôi nghĩ rằng Spark Meatare giống một loại dropbox hơn, nhưng tôi sẽ xem xét nó
Smudge

2
bạn đúng, nhưng nó sử dụng git để tạo ra một số thứ không ổn định (sao chép vào một số phiên bản máy tính và kiểm soát tệp);)
B14D3

Vấn đề lớn với điều này là không có điều khiển trung tâm - bạn cần có quyền truy cập trực tiếp (ssh) vào máy để tạo ra bất kỳ hình thức bảo trì hoặc xác thực sao lưu nào. Tôi luôn thấy việc cài đặt một ứng dụng trên các hộp để được sao lưu sau đó quản trị chúng từ một vị trí trung tâm là một chiến thắng lớn hơn nhiều.
hafichuk

@hafichuk Với các công cụ như Puppet / Chef không phải là vấn đề lớn, nhưng tôi thấy quan điểm của bạn.
Smudge

Câu trả lời:


88

Bạn không phải là một người ngớ ngẩn. Sử dụng gitnhư một cơ chế sao lưu có thể hấp dẫn và bất chấp những gì người khác đã nói, gitchỉ hoạt động tốt với các tệp nhị phân. Đọc trang này từ Sách Git để biết thêm thông tin về chủ đề này. Về cơ bản, vì gitkhông sử dụng một cơ chế lưu trữ đồng bằng, nó không thực sự quan tâm đến những gì tập tin của bạn trông giống như (nhưng tiện ích của git difflà khá thấp cho các tập tin nhị phân với một cấu hình chứng khoán).

Vấn đề lớn nhất khi sử dụng gitđể sao lưu là nó không bảo tồn hầu hết siêu dữ liệu của hệ thống tệp. Cụ thể, gitkhông ghi lại:

  • nhóm tập tin
  • chủ sở hữu tập tin
  • quyền truy cập tệp (khác với "là thực thi này")
  • thuộc tính mở rộng

Bạn có thể giải quyết điều này bằng cách viết các công cụ để ghi lại thông tin này một cách rõ ràng vào kho lưu trữ của bạn, nhưng thật khó để có được điều này đúng.

Một tìm kiếm Google cho siêu dữ liệu sao lưu git mang lại một số kết quả có vẻ đáng đọc (bao gồm một số công cụ đã cố gắng bù đắp cho các vấn đề tôi đã nêu ra ở đây).

etckeeper được phát triển để sao lưu /etcvà giải quyết nhiều vấn đề này.


16
+1 để đề cập đến ACL / quyền
Larry Silverman

23
Git cũng không lưu trữ các thư mục trống.
Flimm

và nó cũng hút để theo dõi di chuyển / đổi tên tập tin, thông qua lịch sử.
cregox

1
Vì git không xử lý tốt các tệp nhị phân, bạn cũng có thể muốn xem xét phụ lục git , giúp làm điều đó tốt hơn. Tuy nhiên, nó thay đổi ý tưởng về những gì git là một phần.
Wouter Verhelst

1
ý kiến ​​của tôi là bạn có thể sử dụng git để sao lưu dữ liệu nhưng không phải toàn bộ máy chủ
EKanadily

21

Tôi chưa sử dụng nó, nhưng bạn có thể xem bup là công cụ sao lưu dựa trên git.


Chưa bao giờ thấy bup trước đây, trông thú vị
Smudge

1
Gần đây tôi đã bắt đầu sử dụng bup, chỉ vài ngày trước khi ổ cứng của tôi bị hỏng;) Khôi phục đã ổn, rất khuyến khích!
André Paramés

1
@ AndréParamés vì vậy những gì bạn đang nói chỉ là sau khi bạn cài đặt bup, ổ cứng của bạn bị hỏng ... mmmmhh ... :) chỉ đùa thôi
hofnarwillie

12

Nó có thể là một giải pháp sao lưu hợp lệ, vvkeeper dựa trên ý tưởng này. Nhưng hãy chú ý đến các .gitquyền của thư mục nếu không việc đẩy /etc/shadowcó thể được đọc trong .gitthư mục.


11

Trong khi về mặt kỹ thuật bạn có thể làm điều này, tôi sẽ đặt hai cảnh báo chống lại nó:

1, Bạn đang sử dụng hệ thống kiểm soát phiên bản nguồn cho dữ liệu nhị phân. Do đó, bạn đang sử dụng nó cho một cái gì đó mà nó không được thiết kế cho.

2, Tôi lo lắng về quy trình phát triển của bạn nếu bạn không có quy trình (tài liệu hoặc tự động) để xây dựng một máy mới. Điều gì sẽ xảy ra nếu bạn gặp phải mua xe buýt, ai sẽ biết phải làm gì và điều gì là quan trọng?

Khôi phục thảm họa rất quan trọng, tuy nhiên, tốt hơn hết là tự động hóa (tập lệnh) thiết lập hộp phát triển mới thay vì chỉ sao lưu mọi thứ. Chắc chắn sử dụng git cho tập lệnh / tài liệu của bạn nhưng không phải cho mọi tệp trên máy tính.


4
Tất cả các hộp phát triển đều đến từ các tệp KickStart và thực tế hộp trung bình tồn tại trong khoảng 2 hoặc 3 tháng trước khi được xây dựng lại. Nhưng mọi người thay đổi cấu hình và thực hiện mọi thứ, chúng tôi xây dựng lại các hộp và mọi người nói "này, tôi biết tôi đã không đặt nó trong kiểm soát nguồn nhưng tôi có một số shit trên hộp đó" và tôi cười nhạo họ vì ngu ngốc. Xung quanh, thời gian tốt đẹp. Dữ liệu nhị phân sẽ là một con chó cái, đó là thứ tôi hoàn toàn bỏ qua khi đang tắm.
Smudge

Tôi hoan nghênh thái độ của bạn đối với những người không tuân theo các hiệu trưởng cơ bản. Cá nhân tôi có một tình huống tương tự với bạn, tuy nhiên tôi có một kho git liên kết trong tất cả các tệp cấu hình có thể quan trọng hơn là bắt tất cả. Cộng với một tài liệu txt với các bước thiết lập.
Phil Hannent

1
Tôi nghĩ rằng git hoạt động khá tốt đối với các tệp nhị phân, vide phần lớn của Google Android là kho lưu trữ git của các tệp thực thi dựng sẵn.
dùng377178

6

Tôi sử dụng git như một bản sao lưu cho hệ thống Windows của mình và nó cực kỳ hữu ích. Ở dưới cùng của bài viết, tôi hiển thị các tập lệnh tôi sử dụng để cấu hình trên hệ thống Windows. Sử dụng git làm bản sao lưu cho bất kỳ hệ thống nào cũng cung cấp 2 lợi thế lớn:

  1. Không giống như các giải pháp thương mại thường sử dụng định dạng độc quyền của riêng họ, bản sao lưu của bạn ở định dạng nguồn mở được hỗ trợ rộng rãi và được ghi chép rất tốt. Điều này cho phép bạn kiểm soát hoàn toàn dữ liệu của bạn. Rất dễ dàng để xem tập tin nào đã thay đổi và khi nào. Nếu bạn muốn cắt ngắn lịch sử của mình, bạn cũng có thể làm điều đó. Bạn muốn xóa sạch một cái gì đó từ lịch sử của bạn? Không vấn đề gì. Lấy lại một phiên bản của tệp của bạn cũng đơn giản như bất kỳ lệnh git nào.
  2. Nhiều hoặc ít gương như bạn muốn, và tất cả đều có thể có thời gian sao lưu tùy chỉnh. Bạn sẽ có được tấm gương cục bộ, không bị gánh nặng bởi lưu lượng truy cập Internet chậm và do đó cung cấp cho bạn (1) khả năng sao lưu thường xuyên hơn trong suốt cả ngày và (2) thời gian phục hồi nhanh chóng. (Sao lưu thường xuyên là một điểm cộng rất lớn, bởi vì tôi thấy rằng tôi mất tài liệu nhiều nhất là do lỗi người dùng. Ví dụ: con bạn vô tình ghi đè lên một tài liệu mà nó đang làm việc trong 5 giờ qua.) Nhưng bạn sẽ nhận được gương từ xa, mang lại lợi thế bảo vệ dữ liệu trong trường hợp xảy ra thảm họa hoặc trộm cắp cục bộ. Và giả sử bạn muốn nhân bản từ xa sao lưu vào thời gian tùy chỉnh để tiết kiệm băng thông Internet của bạn? Không vấn đề gì.

Tóm lại: Một bản sao lưu git cung cấp cho bạn sức mạnh đáng kinh ngạc trong việc kiểm soát cách thức sao lưu của bạn xảy ra.

Tôi đã cấu hình cái này trên hệ thống Windows của tôi. Bước đầu tiên là tạo repo git cục bộ nơi bạn sẽ cam kết tất cả dữ liệu cục bộ của mình. Tôi khuyên bạn nên sử dụng ổ cứng thứ hai cục bộ, nhưng sử dụng cùng một ổ cứng sẽ hoạt động (nhưng dự kiến ​​bạn sẽ đẩy cái này ở một nơi nào đó từ xa, hoặc nếu không thì bị hỏng nếu ổ cứng chết.)

Trước tiên, bạn cần cài đặt cygwin (với rsync) và cài đặt git cho Windows: http://git-scm.com/doad/win

Tiếp theo, tạo repo git cục bộ của bạn (chỉ chạy một lần):

init-repo.bat:

@echo off
REM SCRIPT PURPOSE: CREATE YOUR LOCAL GIT-REPO (RUN ONLY ONCE)

REM Set where the git repository will be stored
SET GBKUP_LOCAL_MIRROR_HOME=E:\backup\mirror


REM Create the backup git repo. 
SET GIT_PARAMS=--git-dir=%GBKUP_LOCAL_MIRROR_HOME%\.git --work-tree=%GBKUP_LOCAL_MIRROR_HOME% 
mkdir %GBKUP_LOCAL_MIRROR_HOME%
git %GIT_PARAMS% init
git %GIT_PARAMS% config core.autocrlf false
git %GIT_PARAMS% config core.ignorecase false 
git %GIT_PARAMS% config core.fileMode false
git %GIT_PARAMS% config user.email backup@yourComputerName
git %GIT_PARAMS% config user.name backup

REM add a remote to the git repo.  Make sure you have set myRemoteServer in ~/.ssh/config   
REM The path on the remote server will vary.  Our remote server is a Windows machine running cygwin+ssh.  
REM For better security, you could install gitolite on the remote server, and forbid any non-fast-forward merges, and thus stop a malicious user from overwriting your backups.
git %GIT_PARAMS% remote add origin myRemoteServer:/cygdrive/c/backup/yourComputerName.git

REM treat all files as binary; so you don't have to worry about autocrlf changing your line endings
SET ATTRIBUTES_FILE=%GBKUP_LOCAL_MIRROR_HOME%\.git\info\attributes
echo.>> %ATTRIBUTES_FILE% 
echo *.gbkuptest text>> %ATTRIBUTES_FILE% 
echo * binary>> %ATTRIBUTES_FILE% 
REM compression is often a waste of time with binary files
echo * -delta>> %ATTRIBUTES_FILE% 
REM You may need to get rid of windows new lines. We use cygwin's tool
C:\cygwin64\bin\dos2unix %ATTRIBUTES_FILE%

Tiếp theo, chúng tôi có trình bao bọc kịch bản sao lưu, sẽ được Windows Lập lịch gọi thường xuyên:

gbackup.vbs:

' A simple vbs wrapper to run your bat file in the background
Set oShell = CreateObject ("Wscript.Shell") 
Dim strArgs
strArgs = "cmd /c C:\opt\gbackup\gbackup.bat"
oShell.Run strArgs, 0, false

Tiếp theo, chúng ta có tập lệnh sao lưu mà trình bao bọc gọi:

gbackup.bat:

    @echo off

REM Set where the git repository will be stored
SET GBKUP_LOCAL_MIRROR_HOME=E:\backup\mirror
REM the user which runs the scheduler
SET GBKUP_RUN_AS_USER=yourWindowsUserName
REM exclude file
SET GBKUP_EXCLUDE_FILE=/cygdrive/c/opt/gbackup/exclude-from.txt

SET GBKUP_TMP_GIT_DIR_NAME=git-renamed
for /f "delims=" %%i in ('C:\cygwin64\bin\cygpath %GBKUP_LOCAL_MIRROR_HOME%') do set GBKUP_LOCAL_MIRROR_CYGWIN=%%i

REM rename any .git directories as they were (see below command)
for /r %GBKUP_LOCAL_MIRROR_HOME% %%i in (%GBKUP_TMP_GIT_DIR_NAME%) do ren "%%i" ".git" 2> nul

SET RSYNC_CMD_BASE=C:\cygwin64\bin\rsync -ahv --progress --delete --exclude-from %GBKUP_EXCLUDE_FILE%

REM rsync all needed directories to local mirror
%RSYNC_CMD_BASE% /cygdrive/c/dev %GBKUP_LOCAL_MIRROR_CYGWIN%
%RSYNC_CMD_BASE% /cygdrive/c/Users/asmith %GBKUP_LOCAL_MIRROR_CYGWIN%
%RSYNC_CMD_BASE% /cygdrive/c/Users/bsmith %GBKUP_LOCAL_MIRROR_CYGWIN%

cacls %GBKUP_LOCAL_MIRROR_HOME% /t /e /p  %GBKUP_RUN_AS_USER%:f

REM rename any .git directories as git will ignore the entire directory, except the main one
for /r %GBKUP_LOCAL_MIRROR_HOME% %%i in (.git) do ren "%%i" "%GBKUP_TMP_GIT_DIR_NAME%" 2> nul
ren %GBKUP_LOCAL_MIRROR_HOME%\%GBKUP_TMP_GIT_DIR_NAME% .git

REM finally commit to git
SET GIT_PARAMS=--git-dir=%GBKUP_LOCAL_MIRROR_HOME%\.git --work-tree=%GBKUP_LOCAL_MIRROR_HOME% 
SET BKUP_LOG_FILE=%TMP%\git-backup.log
SET TO_LOG=1^>^> %BKUP_LOG_FILE% 2^>^&1
echo ===========================BACKUP START=========================== %TO_LOG%
For /f "tokens=2-4 delims=/ " %%a in ('date /t') do (set mydate=%%c-%%a-%%b)
For /f "tokens=1-2 delims=/:" %%a in ('time /t') do (set mytime=%%a%%b)
echo %mydate%_%mytime% %TO_LOG%
echo updating git index, committing, and then pushing to remote %TO_LOG%
REM Caution: The --ignore-errors directive tells git to continue even if it can't access a file.
git %GIT_PARAMS% add -Av --ignore-errors %TO_LOG%
git %GIT_PARAMS% commit -m "backup" %TO_LOG%
git %GIT_PARAMS% push -vv --progress origin master %TO_LOG%
echo ===========================BACKUP END=========================== %TO_LOG%

Chúng tôi có tệp loại trừ-from.txt, nơi chúng tôi đặt tất cả các tệp để bỏ qua:

loại trừ-from.txt:

target/
logs/
AppData/
Downloads/
trash/
temp/
.idea/
.m2/
.IntelliJIdea14/
OLD/
Searches/
Videos/
NTUSER.DAT*
ntuser.dat*

Bạn sẽ cần phải đi đến bất kỳ repos từ xa nào và thực hiện một 'git init --bare' trên chúng. Bạn có thể kiểm tra tập lệnh bằng cách thực thi tập lệnh sao lưu. Giả sử mọi thứ hoạt động, hãy truy cập Windows Lập lịch và chỉ một bản sao lưu hàng giờ về phía tệp vbs. Sau đó, bạn sẽ có một lịch sử git của máy tính của bạn mỗi giờ. Nó cực kỳ tiện lợi - mỗi lần vô tình xóa một phần văn bản và bỏ lỡ nó? Chỉ cần kiểm tra kho git của bạn.


Chỉ tò mò - nó cũng sẽ hoạt động đối với các ổ đĩa mạng chậm hoặc không chuẩn, như các ổ đĩa được mô phỏng bởi NetDrive hoặc Expandrive? Tôi thấy hầu hết các phần mềm sao lưu đều thất bại với các ổ đĩa mạng này. Ngoài ra mọi thứ trở nên chậm chạp và có xu hướng hết thời gian, nếu tôi muốn liệt kê tất cả các tệp trong bản sao lưu và trích xuất các tệp riêng lẻ. Là git có thể giải quyết những vấn đề này?
JustAMartin

@JustAMartin Tôi chưa bao giờ thử nghiệm nó trên các ổ đĩa mạng, vì vậy tôi không thể nói. Khi bạn nhận được các tệp IN một git repo, git rất hiệu quả.
dùng64141

4

Chà đó không phải là một ý tưởng tồi, nhưng tôi nghĩ có 2 lá cờ đỏ được giương lên:

  • Nếu ổ cứng bị lỗi, bạn sẽ mất tất cả mọi thứ nếu bạn không đẩy cam kết của mình sang máy chủ / ổ đĩa khác. (Sự kiện nếu bạn có kế hoạch cho nó, tôi muốn đề cập đến.)

... nhưng vẫn có thể là một bản sao lưu tốt cho những thứ liên quan đến tham nhũng. Hoặc như bạn đã nói, nếu thư mục .git / ở một nơi khác.

  • Sao lưu này sẽ luôn tăng kích thước. Không có cắt tỉa hoặc xoay hoặc bất cứ điều gì theo mặc định.

... Vì vậy, bạn có thể cần nói với cronjob của mình để thêm thẻ, và sau đó đảm bảo rằng cam kết không được gắn thẻ sẽ được xóa sạch.


Chúng tôi có thể sẽ gắn thư mục .git trên một máy chủ từ xa, mặc dù clasic rm -Rf /sẽ gây ra cho chúng tôi một số vấn đề. Hệ thống sao lưu hiện tại của chúng tôi giữ công cụ trong 2 năm hoặc 50 phiên bản (tùy theo lần cuối) vì vậy sao lưu của chúng tôi không ngừng tăng lên. Nhưng tôi thích ý tưởng thêm thẻ, chúng ta có thể có thẻ "hàng ngày", "hàng tuần", v.v.
Smudge

+1 cho các yêu cầu không gian ngày càng tăng
hafichuk

@sam git không ngừng phát triển. Bạn không thể cắt tỉa lịch sử cũ hơn N năm. Tôi cho rằng hệ thống hiện tại của bạn không.
rds

1
Về việc tăng kích thước, vui lòng thực hiện 'git gc' thường xuyên hoặc trước khi bạn đẩy sang máy chủ (trung tâm) khác. Không có điều này, git repo có thể phát triển (lớn hơn) so với bình thường. Tôi đã từng có một repo 346 MB có thể thu nhỏ xuống còn 16 MB.
Hendy I Girls

3

Tôi đã không thử nó với một hệ thống đầy đủ nhưng tôi đang sử dụng nó cho các bản sao lưu MySQL của mình (với tùy chọn --skip-extend-insert) và nó thực sự hoạt động tốt với tôi.

Bạn sẽ gặp vấn đề với các tệp dữ liệu nhị phân (toàn bộ nội dung của chúng có thể và sẽ thay đổi) và bạn có thể gặp vấn đề với .gitthư mục trở nên rất lớn. Tôi khuyên bạn nên thiết lập một .gitignoretệp và chỉ sao lưu các tệp văn bản mà bạn thực sự biết bạn cần.


Tôi cũng đang sử dụng nó để sao lưu MySQL, với --extends-insert = false. Hãy chắc chắn "git gc" thường xuyên hoặc ngay sau khi cam kết.
Hendy I Girls


3

Tôi đã từng phát triển một giải pháp sao lưu dựa trên lật đổ. Mặc dù nó hoạt động khá tốt (và git nên hoạt động tốt hơn nữa), tôi nghĩ có nhiều giải pháp tốt hơn ở đây.

Tôi coi rsnapshot là một trong những điều tốt hơn - nếu không nói tốt hơn. Với việc sử dụng tốt liên kết cứng, tôi có một máy chủ tệp 300 GB (với nửa triệu tệp) với bản sao lưu hàng ngày, hàng tuần và hàng tuần sẽ quay trở lại sau một năm. Tổng dung lượng đĩa đã sử dụng chỉ là một bản sao đầy đủ + phần gia tăng của mỗi bản sao lưu, nhưng nhờ các liên kết cứng, tôi có một cấu trúc thư mục "trực tiếp" hoàn chỉnh trong mỗi bản sao lưu. Nói cách khác, các tệp có thể truy cập trực tiếp không chỉ dưới Daily.0 (bản sao lưu gần đây nhất), mà ngay cả trong hàng ngày.1 (yestarday) hoặc hàng tuần.2 (hai tuần trước), v.v.

Chia sẻ lại thư mục sao lưu bằng Samba, người dùng của tôi có thể lấy tệp từ bản sao lưu chỉ bằng cách trỏ PC của họ vào máy chủ sao lưu.

Một tùy chọn rất tốt khác là sao lưu dự phòng , nhưng vì tôi muốn có các tệp luôn có thể truy cập đơn giản bằng cách tiêu đề Explorer đến \ tên máy chủ, rsnapshot là một giải pháp tốt hơn cho tôi.


Bản phát hành cuối cùng của bản sao lưu dự phòng là từ năm 2009. Nó có được thiết kế cực kỳ tốt và không yêu cầu cập nhật gì không hay chỉ đơn giản là một dự án bị bỏ rơi?
Mateusz Konieczny

Tôi không biết nếu nó bị mất, nhưng về cơ bản là "xong".
shodanshok

Từ việc nhìn vào savannah.nongnu.org/bugs/ , có vẻ như đã có một số hoạt động vào cuối năm 2015 nhưng nhiều báo cáo lỗi đã bị bỏ qua. Tôi nghĩ rằng tôi sẽ phân loại nó như là một từ bỏ.
Mateusz Konieczny

2

Tôi có cùng ý tưởng để sao lưu bằng git, về cơ bản vì nó cho phép sao lưu theo phiên bản. Sau đó, tôi đã thấy sao lưu dự phòng , cung cấp chức năng đó (và nhiều hơn nữa). Nó có một giao diện người dùng thực sự đẹp (nhìn vào các tùy chọn CLI). Tôi khá hài lòng với điều đó. Điều --remove-older-than 2Wnày là khá mát mẻ. Nó cho phép bạn chỉ cần xóa các phiên bản cũ hơn 2 tuần. rdiff-backuplưu trữ chỉ khác nhau của các tập tin.


2

Tôi cực kỳ mới với git, nhưng không phải là các nhánh cục bộ theo mặc định và phải được đẩy rõ ràng đến các kho lưu trữ từ xa? Đây là một bất ngờ khó chịu và bất ngờ. Rốt cuộc, tôi không muốn tất cả các repo địa phương của mình được 'sao lưu' vào máy chủ? Đọc sách git :

Các chi nhánh địa phương của bạn không tự động được đồng bộ hóa với các điều khiển từ xa mà bạn viết - bạn phải đẩy mạnh các chi nhánh bạn muốn chia sẻ. Bằng cách đó, bạn có thể sử dụng các nhánh riêng cho công việc bạn không muốn chia sẻ và chỉ đẩy lên các nhánh chủ đề mà bạn muốn cộng tác.

Đối với tôi điều này có nghĩa là các chi nhánh địa phương đó, giống như các tệp không phải git khác trên máy cục bộ của tôi, có nguy cơ bị mất trừ khi được sao lưu thường xuyên bởi một số phương tiện không phải là git. Dù sao thì tôi cũng làm điều này, nhưng nó đã phá vỡ những giả định của tôi về việc "sao lưu mọi thứ" trong repo của tôi. Tôi muốn làm rõ về điều này!


1
Khá nhiều thứ về git ngoại trừ điều khiển từ xa là cục bộ. Đó là bởi thiết kế. Bạn có thể đẩy mọi thứ để điều khiển từ xa, và nên, đặc biệt nếu được sử dụng để sao lưu như trong kịch bản này. Đối với các nhánh, một lần nữa, có, bạn cần đẩy chúng một cách rõ ràng nếu bạn muốn chúng được thêm vào một điều khiển từ xa. Để phát triển, điều này thật tuyệt vời vì thường bạn muốn thử nghiệm một cái gì đó, nhưng không cần phải có nhánh thử nghiệm đó được bảo tồn vô thời hạn. Khi bạn có những gì bạn cần từ nó, bạn có thể sẽ hợp nhất nó với một nhánh dev và xóa nhánh thử nghiệm.
LocalPCGuy

1

Tôi thấy đây là một phương pháp tốt cho các hộp dev của tôi. Nó thay đổi chúng từ một thứ gì đó cần được sao lưu thành chỉ một điểm cuối triển khai.

Tất cả các bản kê khai cài đặt cấu hình và gói được lưu trữ trong Puppet, cho phép dễ dàng triển khai lại và cập nhật cấu hình. Thư mục Puppet được sao lưu bằng git. Kickstart được sử dụng để thực hiện triển khai ban đầu.

Tôi cũng giữ một kho lưu trữ YUM tùy chỉnh cho bất kỳ gói nào đang được phát triển tại thời điểm đó. Điều này có thêm lợi ích là bất kỳ gói nào chúng tôi đang làm việc không chỉ là các tệp nhị phân không giám sát trên hệ thống cục bộ - nếu điều đó xảy ra và các tệp sẽ bị loại bỏ. Ai đó đã không làm theo đúng quy trình.



1

Đó là một cách tiếp cận được sử dụng, nó có ý nghĩa.

Keepconf sử dụng rsync và git cho công việc này, đó là một trình bao bọc cho các công cụ này để giữ cho mọi thứ dễ dàng.

Bạn chỉ cần một máy chủ trung tâm với các phím ssh được cấu hình để truy cập vào các máy chủ dự phòng và một vài dòng trong tệp cấu hình. Ví dụ: đây là tệp của riêng tôi để giữ tất cả / etc / và các gói debian được cài đặt:

[hosts]
192.168.1.10
192.168.1.11
192.168.1.12

[files]
/etc/*
/var/lib/dpkg/status

Cùng với đó, tôi có bản sao lưu rsync và cam kết git.


0

Ý kiến ​​cá nhân của tôi là về cơ bản là tất cả ngược. Bạn đang đẩy các tập tin vào một giải pháp sao lưu, thay vì kéo chúng ra.

Tốt hơn nhiều sẽ là tập trung cấu hình của máy chủ ở nơi đầu tiên, và sau đó kéo nó xuống, sử dụng một cái gì đó như con rối.

Điều đó nói rằng, nó có thể hoạt động, tôi chỉ không nghĩ rằng nó sẽ tốt như vậy.

Hãy thử nhìn vào backuppc - nó khá dễ cài đặt và thực sự tuyệt vời.


0

Nó sẽ làm việc phần nào, nhưng hai hãy cẩn thận.

  1. Bổ sung tệp sẽ không được chọn tự động khi bạn thực hiện cam kết. Sử dụng --porcelean om git status để tìm công cụ mới để thêm trước khi thực hiện cam kết.

  2. Tại sao rắc rối của một gắn kết từ xa cho .ssh? Nó rất mong manh Bd bạn sẽ không biết rằng nó đã thất bại. Sử dụng kho lưu trữ trống cho mục đích xa với đăng nhập khóa ssh bình thường. Miễn là kho lưu trữ trống và bạn chỉ đẩy từ một nguồn, nó được đảm bảo để hoạt động không bị hợp nhất.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.