① 10.Macbook上如何使用Git備份普通資料
想讓自己的Macbook上的普通文件都在碼雲上有備份,該如何配置?
查看git版本,在終端中鍵入指令如下:
在碼雲上創建一個遠程空倉庫,拷貝遠程倉庫的地址。在Mac的終端中,克隆項目:
在終端中鍵入指令如下:
在科隆遠程倉庫時,需要校碼雲上的驗賬號和密碼。
當看到截圖所示第三個箭頭時,說明已經科隆成功了。接下來就是把需要雲備份的文件放到這個本地倉庫中即可。
根據自己的情況,把需要雲備份的文件放到這個本地倉庫中後,進入本地倉庫,利用 git status 查看文件狀態。接下來就是git常規操作了。
git add . 、 git commit -m 備注 、 git push
git add . 、 git commit -m 備注 、 git push 操作後,push本地倉庫到遠程,就實現雲備份了。
② GitLab 遠程 定時備份
一、環境准備
1.gitlab所在的伺服器A(centos7,192.168.1.1)
2.備份伺服器B(centos7,192.168.1.2)
3.gitlab本地備份目錄設置為/var/opt/gitlab/backups/log,本篇也是以此展開
gitlab已經配置了本地備份。如果沒有配置,可以參考 http://www.cnblogs.com/straycats/p/7671204.html 。
二、通過密鑰配對取消scp傳輸密碼的限制
手動備份數據費時費力。最好的方法就是通過腳本實現遠程自動備份。但遠程無論是通過SSH登陸,還是通過scp拷貝文件都需要輸入密碼。
為了克服這個問題,首先需要實現不需要密碼的SSH登陸,這樣就可以使用 rsync,scp,rexec等命令來做的遠程備份了。
2.1 生成密鑰對
假設A,B兩伺服器,現在需要在A機上用root登陸B機,而不需要輸入密碼。那我們可按照下面的步驟來做:
** 1)在gitlab伺服器A上生成rsa證書 **
1、生成的過程中提示輸入密鑰對保存位置,直接回車,接受默認值就行了。
2、因為之前已經有/root/.ssh/id_rsa 文件存在,因此提示你是否覆蓋,輸入y表示覆蓋
3、接著會提示輸入一個密碼,直接回車,讓它空著。當然,也可以輸入一個密碼。
4、接著輸入確認密碼,輸入完之後,回車密鑰對就生成完了。
這樣,在/root/.ssh下生成id_rsa 和 id_rsa.pub 兩個文件,其中公共密鑰保存在 /root/.ssh/id_rsa.pub,私有密鑰保存在/root/.ssh/id_rsa。
** 2)在gitlab伺服器A上cp生成rsa公鑰證書 **
在/root/.ssh下復制備份一份id_rsa.pub 命名為 id_rsa.pub.A,以便拷貝到遠程伺服器B。
2.2 生成rsa公鑰證書上傳到備份伺服器B
先在伺服器B上創建目錄/root/.ssh。
使用scp命令進行遠程復制,將伺服器A生成的id_rsa.pub.A拷貝到伺服器B的/root/.ssh目錄下。
此時使用scp命令需要輸入密碼,當把下面的「2.3 密鑰配對」執行後,以後gitlab伺服器A使用scp命令復制文件到備份伺服器B的話,就不需要輸入密碼了。
2.3 密鑰配對
1)創建authorized_keys文件
在備份伺服器B的/root/.ssh下創建authorized_keys文件。
2)將id_rsa.pub.A文件內容追加到authorized_keys 文件中
通過 cat 命令 把id_rsa.pub.A 追寫到 authorized_keys 文件中。
3)修改authorized_keys文件的許可權
authorized_keys文件的許可權很重要,如果設置為777,那麼登錄的時候,還是需要提供密碼的。
4)測試上傳文件是否還要輸入密碼
不放心的話,立刻測試下gitlab伺服器A使用scp命令復制文件到備份伺服器B是否還要輸入密碼。
發現在2.3之前,由於沒有設置ssh證書授權認證時,上傳需要輸入密碼;2.3操作完後,由於授權認證,已經不需要輸入密碼了。
三、定時將備份文件傳到備份伺服器
3.1 創建遠程備份腳本
在gitlab伺服器A上 ,在/root目錄下創建定期備份腳本auto_backup_to_remote.sh。
添加下面的內容,並wq保存。
3.2 修改遠程備份腳本auto_backup_to_remote.sh的許可權
要能讓系統執行 auto_backup_to_remote.sh ,必須修改該腳本的許可權。
3.3 創建日誌存放目錄
3.4 測試遠程備份腳本的功能是否可用
現在為了驗證腳本是否可以正常運行,我們需要手動執行腳本。
在gitlab伺服器A上執行find命令,看是否能夠正常查找出我們要scp到遠程伺服器的Gitlab備份文件。
手動執行腳本auto_backup_to_remote.sh,看是否能夠正常上傳
等待1-2分鍾左右,查看備份伺服器B的目錄/root/gitlab_backup下是否有伺服器A傳過來的備份文件。
在備份伺服器B上能找到伺服器A傳過來的備份文件,說明遠程備份腳本的功能OK。
如果每次上傳都通過人工運行腳本的方式,人工的消耗太大,接著配置定時執行該腳本。
3.5 添加定時計劃
定時備份的思路建立在手動的基礎上,通過crontab添加定時計劃就可以解決這個問題。
一般添加定時計劃可以有2種方式:
1.使用命令crontab -e,將定時任務添加後保存。
2.將定時任務添加到/etc/crontab文件中。
我這里採取第一種,使用crontab -e。
結合我之前對公司gitlab本地備份的設計,故設計在備份完10分鍾後上傳,故分別在每天12:10、19:10進行備份,故添加下面的內容,wq保存。
重啟crontab
四、定時刪除備份伺服器上的備份文件
每個Gitlab備份文件都很大。因此每天備份兩次,過不了多久的話,備份伺服器B上的磁碟空間可能就會被Gitlab備份文件佔用完。
故需要定期清理備份文件,參考備份伺服器的空間,暫定保留14天的備份文件。
4.1 創建刪除過期備份文件的腳本
設計備份伺服器B的/root/gitlab_backup作為接收遠程上傳備份文件的目錄, 故在備份伺服器B上 ,先創建該目錄。
創建刪除過期備份文件的腳本auto_remove_old_backup.sh。
添加下面的內容,並wq保存。
4.2 修改auto_remove_old_backup.sh腳本的許可權
4.3 添加定時計劃
定時備份的思路建立在手動的基礎上,通過crontab添加定時計劃就可以解決這個問題。
一般添加定時計劃可以有2種方式:
1.使用命令crontab -e,將定時任務添加後保存。
2.將定時任務添加到/etc/crontab文件中。
我這里採取第一種,使用crontab -e。
設計凌晨0點執行刪除過期備份文件的腳本,故添加下面的內容,wq保存。
重啟crontab
③ 把公司代碼上傳到了git上,被leader發現了怎麼辦
個人層面,法律意識不足只是一個方面,另一個方面是對代碼的歸屬和代碼的安全性不夠重視。當然,有些程序員可能會認為把代碼上傳到GitHub可以作為備份來管理代碼,也就是防止代碼丟失。但是我沒有意識到開放圖書館的危害性。從公司層面來說,可能沒有代碼管理和代碼安全的重要性來普及和教育員工。員工之所以把代碼上傳到GitHub進行備份,可能是因為公司沒有代碼管理倉庫和代碼管理規范。
由於個人習慣,你可能寫的測試賬號的密碼就是你經常使用的賬號密碼。從那以後,你也開始裸奔。而且有些程序員會用Python抓取GitHub上的開源代碼,用正則表達式匹配密碼可能出現的地方,收集密碼。果然收集了一大堆密碼,而GitHub上的賬號名稱是可見的,密碼已經存在,賬號也是可見的。於是,很多程序員也開始在GitHub上裸奔。
④ 移動硬碟作為git遠程倉庫備份本地文件夾
1、在移動硬碟上新建一個文件夾share,並用git命令建立倉庫(名稱自取,例子repos)
2、git初始化本地文件夾
3、設置遠程倉庫(名稱自取,例子rmrepos),並同步到倉庫
此時倉庫已經存在,但無法查看文件,還需要在移動硬碟上拉取文件
4、在移動硬碟上建立文件夾,並初始化git信息後拉取文件
【我的個人文稿】文件夾
5、本地或硬碟上改動文件後,及時提交倉庫更新,拉取即可
⑤ git 使用全局記住用戶名密碼後是明文,有沒有加密的方式
在mac機器上可以下載osxkeychain工具(https://github-media-downloads.s3.amazonaws.com/osx/git-credential-osxkeychain),將下載的git-credential-osxkeychain挪到git安裝目錄下,然後使用命令
gitconfig--globalcredential.helperosxkeychain
來告訴git使用osxkeychain方式加密保存密碼。
在windows上可以下載winstore工具(https://gitcredentialstore.codeplex.com/),但是這個工具不再繼續被維護了,是否和當前git版本兼容只能你自己試一試了。
在其他linux系統上是明文保存的,git假設用戶的home文件夾是安全的,其中用來存儲git密碼信息的文件是只有這個用戶自己能讀寫的。