git批量備份

2022-02-10 05:06:15 字數 3077 閱讀 9386

我用git的目的主要是為了資料的完整性,資訊不丟失,雖然repository的**伺服器和本地都會存乙份,但有時候自己的小片段**很多(比如github的gist),不可能每天都用得到,需要定期的備份,以備不時之需(比如網路斷開、伺服器當機等因素)。

通過某種方法獲取需要備份repository的名稱(比如靜態配置等),如果在指定目錄裡面該repository存在(即資料夾存在), 進入資料夾,執行git pull操作; 如果不存在,執行git clone操作。

git伺服器ip:192.168.1.100

git賬戶:git

repositories:/home/git/test1.git,/home/git/test2.git

正常訪問:

git clone [email protected]:test1.git  

git clone [email protected]:test2.git

1、配置config檔案

config配置如下:

host host100 

hostname

192.168.1.100

user git

identityfile c:/users/admin/.ssh/id_rsa_gitbackup

這個不懂的可以參考這裡:

2、批量獲取

python**:

import

oshostname = "

host100

"dirs =[

'test1',

'test2']

for dirname in

dirs:

print dirname,": "

,

if os.path.exists(dirname): #

如果存在執行pull操作

strcmd = "

cd %s && git pull && cd ..

" %dirname

os.system(strcmd)

else: #

不存在則執行clone操作

strcmd = "

git clone %s:%s.git

" %(hostname,dirname)

os.system(strcmd)

1、配置config檔案

host github

hostname github.com

user git

identityfile c:/users/admin/.ssh/id_rsa_github

host gist

hostname gist.github.com

user git

identityfile c:/users/admin/.ssh/id_rsa_github_gist

2、備份repositories(以我的github為例)

(1)命令列訪問方式:

git clone github:mike-zhang/cppcalllua.git
(2)python指令碼批量操作:

#

for github

import

oshostname = "

github

"username = "

mike-zhang

"reponames =[

'cppcalllua',

'testcodes']

for repo in

reponames:

print repo,": "

,

ifos.path.exists(repo):

strcmd = "

cd %s && git pull && cd ..

" %repo

os.system(strcmd)

else

:

strcmd = "

git clone %s:%s/%s.git

" %(hostname,username,repo)

os.system(strcmd)

(3)執行效果 

3、備份gist(以我的gist為例)

(1)命令列操作

git clone [email protected]:4166192.git gist-4166192

(2)python指令碼批量操作

這裡以兩個gist例子:

view code

#

for gist

import

oshostname = "

gist

"username = "

mike-zhang

"reponames =[

'4166192',

'4084385']

for gist in

reponames:

print gist,": "

,

ifos.path.exists(gist):

strcmd = "

cd %s && git pull && cd ..

" %gist

os.system(strcmd)

else

:

strcmd = "

git clone %s:%s.git

" %(hostname,gist)

os.system(strcmd)

(3)執行效果 

我這裡考慮的比較簡單,更強大的功能還需讀者自行擴充套件。

原始碼位址(gist):

批量備份.md

歡迎補充

批量備份指令碼

寫個小指令碼紀念一下tee這個命令,批量備份http的源 執行命令如下 1 2 jason at xjx macin script fab f backup.py backup teebackup.log 輸出 生成已當前日期命名的xz壓縮包,例如 httpd 20160104.tar.xz 指令碼...

git批量pull Git批量拉取

最近發現我的 git 倉庫越來越多了!因為很多倉庫都是開源組織維護的,還有一些是資源庫,用來多台機器共享使用的,因此需要經常保持最新。由於乙個個拉太浪費時間了,所以需要乙個批量拉取這些 git 倉庫的工具。在網上找了一圈,找到乙個 python 寫的開源工具 gitup,看介紹挺滿足我的需要,但是在...

git批量pull Git批量拉取

最近發現我的 git 倉庫越來越多了!因為很多倉庫都是開源組織維護的,還有一些是資源庫,用來多台機器共享使用的,因此需要經常保持最新。由於乙個個拉太浪費時間了,所以需要乙個批量拉取這些 git 倉庫的工具。在網上找了一圈,找到乙個 python 寫的開源工具 gitup,看介紹挺滿足我的需要,但是在...