簡體   English   中英

GIT克隆到外部驅動器進行備份

[英]GIT clone to external drive for backup

我們在Windows網絡中設置了GIT(使用msysgit和GitExtensions)。 我們每個人都擁有自己的存儲庫,我們將其推送到其中一台服務器上的遠程“裸”存儲庫。 都好。

我正在嘗試在服務器上設置一個預定的作業,它將一個存儲庫從C驅動器克隆到一個外部驅動器(在F上) - 在使這個工作時遇到一些困難。 我可以相對容易地在GIT bash中執行此操作,但我不確定如何將其保存到批處理文件中,然后我可以將其保存。

到目前為止我所擁有的:

rmdir F:\GitClone /s /q
mkdir F:\GitClone
mkdir F:\GitClone\Repo1
CD /D F:\GitClone\Repo1\
GIT CLONE /c/GIT/Repo1/

我還在最后一行嘗試了以下內容:

GIT CLONE C:\GIT\Repo1\

但這也不起作用......我有點難過,並會感激一些幫助。 C驅動器包含我們的裸存儲庫,而F驅動器是我們每天更換的外部驅動器...


這里有幾個答案非常有用,謝謝。 我得到的答案可能是這些的組合,因此指出如何運行bash腳本以及如何編寫pull / push腳本。

需要將這些組合在一起工作,以便在各種驅動器交換進出時很高興(例如,如果外部驅動器上不存在,則克隆存儲庫,否則只會拉出差異),但這應該是可行的。 謝謝大家。

請注意,git本身非常適合將所需的更改復制到克隆的存儲庫。

如果要定期更新repo的副本,請執行以下操作:創建裸存儲庫作為備份存儲庫,然后重復推送所有新更改(無需刪除舊備份)。

好吧,讓我們從創建你的回購開始吧

$ cd /tmp
$ mkdir myrepo && cd myrepo
$ touch hi && git add . && git commit -m "bla" 

所以,這是你的存儲庫。 現在我們創建克隆:

$ cd /tmp
$ mkdir backup && cd backup 
$ git --bare init
Initialized empty Git repository in /tmp/backup/

現在,讓我們設置你的repo進行常規備份......

$ cd /tmp/myrepo
$ git remote add backup /tmp/backup
$ git config remote.backup.mirror true

然后將所有內容復制到備份中:

$ git push backup
Counting objects: 3, done.
Writing objects: 100% (3/3), 206 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
To /tmp/backup
 * °new branch§      master -> master

看看它是否有效:

$ cd /tmp/backup
$ git log
commit d027b125166ff3a5be2d7f7416893a012f218f82
Author: Niko Schwarz <niko.schwarzàgmail.com>
Date:   Fri Dec 11 12:24:03 2009 +0100

    hi

田田,你定了。 因此,您需要做的所有腳本都是發出git push backup 完全不需要反復丟棄舊備份。

替代方案是您可以讓rsync為您完成所有操作:

rsync -av rsync://rsync.samba.org/ftp/unpacked/rsync /dest/dir/

User Offby補充說 :從版本1.5.4開始,“git remote add”采用“--mirror”選項,這樣既可以節省“git config remote.origin.mirror true”,也不必通過--mirror “git push”。

您可以隨時安排bash.exe mybashbackupscript.sh

無論如何,在windows術語中:

rmdir F:\GitClone /s /q
mkdir -p F:\GitClone\Repo1
copy c:\GIT\Repo1\.git F:\GitClone\Repo1\.git

git clone並沒有真正做到比這更好的事情。

編輯:正如其他人指出的那樣,最好只創建一個新的備份倉庫,然后只需拉/取。 您將避免使用.git :)的任何訪問問題

因為git命令有點奇怪,你必須使用call來執行批處理文件中的任何git命令:

rmdir F:\GitClone /s /q
mkdir F:\GitClone
CD /D F:\GitClone\
call GIT CLONE c/GIT/Repo1/

對不起,我無法評論帖子,但我也在考慮復制.git,但如果.git在拉動過程中被復制會怎么樣?

無論如何,為什么要復制整個東西,因為你可以不時獲取增量?

備份初始化:(在F:\\ GitClone \\ Repo1為空)

git init
git add remote origin /c/GIT/Repo1

那么你的“delta備份腳本”就是:

cd /f/GitClone/Repo1
git fetch origin

問題解決了:

h: (flash drive)
cd \
mkdir YourProject
cd YourProject
git init
git remote add origin git@github.com:user/YourProject.git
git remote add local C:\w\YourProject
git pull origin master
git push local master

為什么要一直刪除克隆? 當您只想復制文件時克隆現有存儲庫有什么意義?

只需在外部驅動器上創建repo(使用git clone 一次 ),然后定期運行git pull

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM