七牛雲測試域名過期後如何備份文件
之前很多人都會使用【七牛雲】作爲圖牀,非常方便,但是後來七牛雲政策做了修改,測試域名只有30個自然日的試用期,到期將自動回收。導致存儲空間中文件或圖片既不能外鏈下載,也無法從七牛雲的控制檯下載或預覽,因此很多博客中的圖片無法顯示。
如果想要繼續正常使用的話,需要綁定完成 ICP 備案的域名纔可以,但是進行 ICP 備案,還需要一臺國內主機,及一系列的手續,產生了不必要的費用及麻煩。
那麼如何將失效存儲空間中的文件或圖片下載下來呢?本篇將告訴你方法。
一、使用自定義域名
如果您有一個完成 ICP 備案的域名,可以與失效存儲空間進行綁定,綁定之後可以繼續使用,也可以將文件或圖片下載下來進行備份。
此方法在此不再贅述。
二、使用 qshell 備份文件
除了綁定自定義域名進行備份外,我們還可以通過 qshell 工具進行文件的備份。
qshell 工具是七牛雲官方提供得,方便開發者測試和使用七牛雲API的一個命令行工具。
快速模式
# 在同存儲區域內創建一個新的存儲空間
# 賬號賦權
./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 工具下載地址爲:http://devtools.qiniu.com/qshell-v2.3.5.zip
下載完成後解壓,將會得到對應三種操作系統的程序。
|-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 版本 命令上稍有差異。
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
(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選項。
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域名,此處爲新建空間的測試域名。默認爲空表示從存儲源站下載,需支付源站流量費用,無法減免!!! |
備註:
- 在Windows系統下面使用的時候,注意dest_dir的設置遵循D:\jemy\backup這種方式。也就是路徑裏面的要有兩個(\)。
- 在默認不指定cdn_domain的情況下,會從存儲源站下載資源,這部分下載產生的流量會生成存儲源站下載流量的計費,請注意,這部分計費不在七牛CDN免費10G流量覆蓋範圍。
(2) 文件下載
配置好文件之後,可以使用下面的命令進行文件下載:
# qshell-2.2.0 與 qshell-2.3.5 版本命令相同
./qshell.exe qdownload download.conf
下載完成後可以在對應的文件夾中查看下載的文件。不管是備份,還是更換圖牀都是可以的了。