1. 程式人生 > >使用 qshell 將本地檔案同步到七牛雲

使用 qshell 將本地檔案同步到七牛雲

專案升級,打算把 public 目錄下的 css、js、image等檔案,上傳到七牛雲,一直想搞來著,今天又想起來,正好 laravel 也從 5.2 升級到了 5.7,接下來把這邊一搞,專案就更加優化了。

首先查詢文件:

	// 文件中心 - 物件儲存
	https://developer.qiniu.com/kodo

	// 技術支援
	https://support.qiniu.com/

	主要是從這 2 個地方,查詢相關資料

	關於上傳,因為從本地上傳檔案,需要批量將整個目錄上傳到七牛雲,同時在七牛雲上還需要保持跟本地專案的目錄結構。查詢有沒有批量上傳的文件:

		// 資源批量上傳和多檔案上傳
		https://developer.qiniu.com/kodo/kb/1374/batch-upload-and-file-upload-more-resources

		// 命令列工具 - qshell
		https://developer.qiniu.com/kodo/tools/1302/qshell

		// 使用 qshell 同步目錄
		https://developer.qiniu.com/kodo/kb/1685/using-qshell-synchronize-directories

看幾篇文件大概瞭解了:
	批量上傳藉助 qshell 命令列工具,這也是我最希望用到的,尤其是以後,能不能通過自動化之前的工具,前端自動化執行完畢之後,再借助 qshell,同時更新七牛雲上使用的靜態檔案。

	我本機是 mac,列出 mac 下安裝 qshell 的步驟:

		// 下載
		wget http://devtools.qiniu.com/qshell-v2.1.8.zip

		// 解壓
		unzip qshell-v2.1.8.zip

		// 將 qshell-darwin-x64 移動到 /usr/local/bin/qshell
		mv qshell-v2.1.8/qshell-darwin-x64 /usr/local/bin/qshell

		// 更改許可權
		chmod +x /usr/local/bin/qshell

		// 檢視是否安裝成功
		qshell

	qshell 的介紹:

		qshell 的使用,需要配置祕鑰,這裡分了一個 '單使用者模式' 和 '多使用者模式':
			單使用者模式:
				qshell account ak sk

			多使用者模式:
				qshell -m account ak sk

			注意:
				有關多使用者模式的介紹,參考文件,我們使用單使用者模式。

		qshell 命令選項:
			-d - 設定是否輸出DEBUG日誌,如果指定這個選項,則輸出DEBUG級別的日誌
			-m - 切換到多使用者模式,這樣所有的臨時檔案寫入都在命令執行的目錄下(多使用者模式的介紹,參考文件,要不這裡不理解)
			-h - 檢視幫助
			-v - 版本號

		qshell 命令列表:
			account - 設定或顯示當前使用者的AccessKey和SecretKey(我們上面說的配置祕鑰,就使用該命令)
			qupload - 同步資料到七牛空間, 帶同步進度資訊,和資料上傳完整性檢查(我們批量上傳本地檔案,就使用該命令)
			...

			注意:
				qshell 提供了一系列命令,可供我們藉助命令列,來進行各種操作,每個命令,都有詳細的文件介紹,應該基本都能滿足我們的需求。

	利用 qshell 同步本地目錄:
		1.單使用者模式,配置賬戶,使用 account 命令
			qshell account ak sk

			// 會在 ~/.qshell/ 下生成一個 account.json 賬號配置檔案

		2.使用 qupload 命令,進行上傳

			參考文件:
				https://github.com/qiniu/qshell/blob/master/docs/qupload.md

			1>建立上傳配置檔案,我們也建立到 ~/.qshell 目錄下
				vim ~/.qshell/qupload.conf

				{
					"src_dir": "/var/www/pinxuejianyou_57/public/",
					"bucket": "test",
				    "skip_path_prefixes": "data,uploads",
				    "skip_fixed_strings": ".htaccess,favicon.ico",
				    "skip_suffixes": ".DS_Store,.gitkeep"
				}

				注意:
					配置項很多,我們需仔細看文件!

			2>執行同步命令
				qshell qupload [ThreadCount] [LocalUploadConfig]

				ThreadCount - 併發上傳的協程數量,預設為1,即檔案一個個上傳,對於大量小檔案來說,可以通過提高該引數值來提升同步速度(可選引數)

				LocalUploadConfig - 資料同步的配置檔案(必選引數)(本例中我們使用上面建立的 ~/.qshell/qupload.conf)

		3.注意事項:
			1>我們可以指定 'skip_*' 幾個配置,來忽略一些檔案或目錄,切記,多個匹配規則以 ',' 分隔,但是 ',' 兩邊,不可以有任何空格!!!

			2>同步過程中,我們可能會測試一些上傳是否是我們想要的結果,可以使用 qshell 的 listbucket 和 batchdelete 命令,檢視&刪除,我們上傳過的檔案,來不斷進行測試
				qshell listbucket <空間名> <匯出檔名>
				qshell batchdelete -force <空間名> <listbucket 命令匯出的檔案列表名>