七牛雲測試域名過期後如何備份檔案

JamesGeek發表於2019-01-16

qiniu-logo.jpg

之前很多人都會使用【七牛雲】作為圖床,非常方便,但是後來七牛雲政策做了修改,測試域名只有30個自然日的試用期,到期將自動回收。導致儲存空間中檔案或圖片既不能外鏈下載,也無法從七牛雲的控制檯下載或預覽,因此很多部落格中的圖片無法顯示。

如果想要繼續正常使用的話,需要繫結完成 ICP 備案的域名才可以,但是進行 ICP 備案,還需要一臺國內主機,及一系列的手續,產生了不必要的費用及麻煩。

那麼如何將失效儲存空間中的檔案或圖片下載下來呢?本篇將告訴你方法。

一、使用自定義域名

如果您有一個完成 ICP 備案的域名,可以與失效儲存空間進行繫結,繫結之後可以繼續使用,也可以將檔案或圖片下載下來進行備份。

此方法在此不再贅述。

二、使用 qshell 備份檔案

除了繫結自定義域名進行備份外,我們還可以通過 qshell 工具進行檔案的備份。

qshell 工具是七牛雲官方提供得,方便開發者測試和使用七牛雲API的一個命令列工具。

qshell 官方文件

qshell Github地址

快速模式

# 在同儲存區域內建立一個新的儲存空間

# 賬號賦權
./qshell.exe account <AccessKey> <SecretKey> <Name>

# 獲取失效儲存空間的檔案列表
./qshell.exe listbucket bucketError -o list.txt

# 處理檔案,僅獲取第一列檔名
cat list.txt | awk '{print $1}' >list_final.txt

# 將失效儲存空間的檔案複製到新的儲存空間
./qshell.exe batchcopy --force --overwrite bucketError bucketNew -i list_final.txt

# 下載檔案
./qshell.exe qdownload download.conf
複製程式碼

2.1 在七牛雲控制檯新建空間

使用瀏覽器進入七牛雲控制檯,在物件儲存中新建一個儲存空間,此儲存空間需要與失效的儲存空間在同一個【儲存區域】上(比如都在華東,不在同一儲存區域無法拷貝)。此儲存空間被用來將失效儲存空間中的檔案複製進去,因為新建的儲存空間有一個可以使用30天的測試域名,所以可以從這個新建的儲存空間中將原來的檔案下載下來進行備份。

2.2 安裝 qshell 工具

qshell 工具下載地址為:devtools.qiniu.com/qshell-v2.3…

下載完成後解壓,將會得到對應三種作業系統的程式。

|-qshell-v2.3.5
  |-qshell_darwin_x64
  |-qshell_linux_arm
  |-qshell_linux_x64
  |-qshell_linux_x86
  |-qshell_windows_x64.exe
  |-qshell_windows_x86.exe
複製程式碼

如果你是 Windows 系統的話,那麼你應該使用 qshell_windows_x64.exe 這個程式,因為這是一個命令列工具,所以雙擊開啟會閃退,應該在命令列中操作。為了簡化命令,可將其重新命名為 qshell.exe ,命令使用形式如下:

# CMD 命令格式
qshell.exe 命令 引數

# Git Bash 等類 Linux 終端命令格式
./qshell.exe 命令 引數
複製程式碼

2.3 設定賬號金鑰

想要使用 qshell 操作七牛空間,需要新增賬戶金鑰 AccessKey 和 SecretKey, 賦予 qshell 許可權。

# qshell-2.3.5 版本命令
./qshell.exe account <AccessKey> <SecretKey> <Name>

# qshell-2.2.0 版本命令
./qshell.exe account <AccessKey> <SecretKey>
複製程式碼

AccessKey, SecretKey 兩個引數可以從七牛雲-金鑰管理中獲取。

Name是使用者可以任意取的名字,表示當前在本地記錄的賬戶的名稱,和在七牛註冊的郵箱資訊沒有關係。

注:qshell-2.2.0 版本qshell-2.3.5 版本 命令上稍有差異。

qshell account 命令文件

2.4 複製失效儲存空間檔案至新儲存空間

  • 假設失效儲存空間名為:bucketError
  • 假設新建儲存空間名為:bucketNew

若想要將失效儲存空間的檔案複製到新的儲存空間,首先需要獲取失效儲存空間的檔案列表,使用 listbucket 命令進行檔案列表的匯出。獲取到檔案列表後,使用 batchcopy 命令將 bucketError 中的檔案全部複製到 bucketNew 中。

(1) 使用 listbucket 匯出檔案列表

# qshell-2.3.5 版本命令
./qshell.exe listbucket bucketError -o list.txt

# qshell-2.2.0 版本命令
./qshell.exe listbucket bucketError list.txt
複製程式碼

list.txt 檔案結構如下:

Hexo.png	33446	Fmmc-_RoRE19Gy86M_p3sEqt-Ue3	15475323542679537	image/png	0
atom.xml	249682	FhtSZviyys9iSIMyPBmuohWEJDcE	15475323543559808	application/xml	0
favicon.ico	4286	FiXUxb856CirSyQ78t3VQNQmCIZO	15475323543881185	image/x-icon	0
ssh_rsa.png	17895	FsImghWkk55vj06DIt6DAhhLzAxQ	15475323564546303	image/png	0
複製程式碼

qshell listbucket 命令文件

(2) 修改檔案列表結構

這裡需要修改檔案,只保留第一列的檔名,可以用awk獲取list檔案的第一列,不然無法進行復制。

cat list.txt | awk '{print $1}' >list_final.txt
複製程式碼

windows 系統中CMD無法使用上面的命令,可以使用 Git Bash 終端或手動修改檔案。 list_final.txt 檔案結構如下:

Hexo.png
atom.xml
favicon.ico
ssh_rsa.png
複製程式碼

(3) 複製檔案到新儲存空間

獲取到需要的檔案列表 - list_final.txt 後,就可以進行檔案的複製了。使用 batchcopy 命令進行復制。 檔案複製方向: bucketError -> bucketNew

# qshell-2.3.5 版本命令
./qshell.exe batchcopy --force --overwrite bucketError bucketNew -i list_final.txt

# qshell-2.2.0 版本命令
./qshell.exe batchcopy --force --overwrite bucketError bucketNew list_final.txt
複製程式碼
  • force : 沒有此選項,需要輸入驗證碼,加入此項則不需要輸入。
  • overwrite :如果批量複製的檔案列表中存在目標空間已有同名檔案的情況,針對該檔案的複製會失敗,如果希望能夠強制覆蓋目標檔案,那麼可以使用-overwrite選項。

qshell batchcopy 命令文件

2.5 下載新儲存空間的檔案

使用 qdownload 命令可以將儲存空間中的檔案下載到本地。但是該功能預設需要收取流量費用,如果想要免費下載,還需進行以下配置。

(1) 配置 download.conf

qshell 目錄下建立新檔案 download.conf ,並將以下資訊新增進去。

{
    "dest_dir"   :   "D:\\Images\\",
    "bucket"     :   "bucketNew",
    "cdn_domain" :   "xxxxxx.bkt.clouddn.com"
}
複製程式碼
引數名 描述
dest_dir 本地資料備份路徑,為全路徑,並且資料夾需要事先建立好,不然無法下載
bucket 空間名稱
cdn_domain 設定下載的CDN域名,此處為新建空間的測試域名。預設為空表示從儲存源站下載,需支付源站流量費用,無法減免!!!

備註:

  1. 在Windows系統下面使用的時候,注意dest_dir的設定遵循D:\jemy\backup這種方式。也就是路徑裡面的\要有兩個(\)。
  2. 在預設不指定cdn_domain的情況下,會從儲存源站下載資源,這部分下載產生的流量會生成儲存源站下載流量的計費,請注意,這部分計費不在七牛CDN免費10G流量覆蓋範圍。

(2) 檔案下載

配置好檔案之後,可以使用下面的命令進行檔案下載:

# qshell-2.2.0 與 qshell-2.3.5 版本命令相同
./qshell.exe qdownload download.conf
複製程式碼

下載完成後可以在對應的資料夾中檢視下載的檔案。不管是備份,還是更換圖床都是可以的了。

qshell qdownload 命令文件

三、參考

  1. 七牛雲 qshell 官方文件
  2. qshell Github地址
  3. Github 中關於此問題的issues

點選閱讀原文

相關文章