मैं अपने विंडोज सिस्टम के लिए बैकअप के रूप में git का उपयोग करता हूं, और यह अविश्वसनीय रूप से उपयोगी है। पोस्ट के निचले भाग में, मैं उन लिपियों को दिखाता हूं जिनका उपयोग मैं विंडोज सिस्टम पर कॉन्फ़िगर करने के लिए करता हूं। किसी भी सिस्टम के लिए बैकअप के रूप में git का उपयोग करने से 2 बड़े लाभ मिलते हैं:
- व्यावसायिक समाधानों के विपरीत अक्सर अपने स्वयं के स्वामित्व प्रारूप का उपयोग करते हैं, आपका बैकअप एक खुले स्रोत प्रारूप में होता है जो व्यापक रूप से समर्थित होता है और बहुत अच्छी तरह से प्रलेखित होता है। इससे आपको अपने डेटा का पूरा नियंत्रण मिल जाता है। यह देखना बहुत आसान है कि कौन सी फाइलें बदलीं और कब। यदि आप अपने इतिहास को तोड़ना चाहते हैं, तो आप ऐसा भी कर सकते हैं। अपने इतिहास से कुछ करना चाहते हैं? कोई दिक्कत नहीं है। आपकी फ़ाइल का एक संस्करण प्राप्त करना किसी भी git कमांड की तरह सरल है।
- जितने चाहें उतने या कुछ दर्पण, और सभी में अनुकूलित बैकअप समय हो सकता है। आपको अपना स्थानीय दर्पण मिलेगा, जो धीमी गति से इंटरनेट ट्रैफ़िक द्वारा बसा हुआ है, और इस तरह आपको (1) पूरे दिन और अधिक बैकअप करने की क्षमता देता है (2) एक त्वरित बहाली का समय। (बार-बार बैकअप एक बहुत बड़ा प्लस है, क्योंकि मुझे सबसे अधिक समय लगता है कि मैं एक दस्तावेज खो देता हूं उपयोगकर्ता-त्रुटि से। उदाहरण के लिए, आपका बच्चा गलती से एक दस्तावेज़ को ओवरराइट कर देता है जो वह पिछले 5 घंटों से काम कर रहा है।) लेकिन आप अपना प्राप्त करेंगे। रिमोट मिरर, जो स्थानीय आपदा या चोरी के मामले में डेटा सुरक्षा का लाभ देता है। और मान लें कि आप अपने दूरस्थ दर्पण को अपने इंटरनेट बैंडविड्थ को बचाने के लिए अनुकूलित समय पर बैकअप लेना चाहते हैं? कोई दिक्कत नहीं है।
नीचे पंक्ति: एक git बैकअप आपको यह नियंत्रित करने की शक्ति देता है कि आपके बैकअप कैसे होते हैं।
मैंने इसे अपने विंडोज सिस्टम पर कॉन्फ़िगर किया है। पहला कदम स्थानीय git रेपो बनाना है जहां आप अपने सभी स्थानीय डेटा के लिए प्रतिबद्ध होंगे। मैं एक स्थानीय दूसरी हार्ड ड्राइव का उपयोग करने की सलाह देता हूं, लेकिन उसी हार्डड्राइव का उपयोग करने से काम चलेगा (लेकिन यह उम्मीद है कि आप इसे कहीं दूर धकेल देंगे, या अन्यथा हार्डड्राइव से आपकी मृत्यु हो जाएगी।)
आपको सबसे पहले cygwin (rsync के साथ) इंस्टॉल करना होगा, और Windows के लिए git भी स्थापित करना होगा: http://git-scm.com/bownload/win
अगला, अपना स्थानीय git रेपो बनाएं (केवल एक बार चलाएं):
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%
अगला, हमारे पास हमारी बैकअप स्क्रिप्ट आवरण है, जिसे नियमित रूप से Windows समयबद्धक द्वारा कहा जाएगा:
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
अगला, हमारे पास बैकअप स्क्रिप्ट ही है जिसे रैपर कॉल करता है:
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%
हमारे पास बाहर से आने वाली फ़ाइल है, जहाँ हमने सभी फ़ाइलों को अनदेखा करने के लिए रखा है:
को बाहर-from.txt:
target/
logs/
AppData/
Downloads/
trash/
temp/
.idea/
.m2/
.IntelliJIdea14/
OLD/
Searches/
Videos/
NTUSER.DAT*
ntuser.dat*
आपको किसी भी दूरस्थ रेपो में जाने और उन पर 'गिट इनिट - बेयर' करने की आवश्यकता होगी। आप बैकअप स्क्रिप्ट को निष्पादित करके स्क्रिप्ट का परीक्षण कर सकते हैं। सब कुछ काम करता है, विंडोज शेड्यूलर पर जाएं और vbs फ़ाइल की ओर एक घंटे का बैकअप इंगित करें। उसके बाद, आपके पास हर घंटे के लिए आपके कंप्यूटर का एक इतिहास होगा। यह बहुत सुविधाजनक है - हर गलती से पाठ के एक हिस्से को हटा दें और इसे याद करें? बस अपने गिट रिपॉजिटरी की जाँच करें।