使用Windows PowerShell 來執行 Cloudberry 的指令並進行排程備份

1. 設定 PowerShell 的環境讓其可支援 CloudBerry

cloudberry21

  • 將此 config 檔放到 WindowsPowerShell 的路徑底下(通常是在 C:\Windows\System32\WindowsPowerShell\v1.0\)

cloudberry22

  • 以 "系統管理員身分" 打開 WindowsPowerShell 並鍵入指令 "Set-ExecutionPolicy RemoteSigned"

cloudberry23

cloudberry24

  • 在 WindowsPowerShell 底下輸入指令至 "CloudBerry Explorer for Amazon S3" 底下,並執行 Snap-in 的安裝指令,如下:
    • Command:cd "C:\Program Files\CloudBerryLab\CloudBerry Explorer for Amazon S3"
    • Command:C:\Windows\Microsoft.NET\Framework\v2.0.50727\installutil.exe CloudBerryLab.Explorer.PSSnapIn.dll
  • 驗證是否設定成功,在 PowerShell 底下輸入 "Get-PSsnapin -Registered" 以及 "Add-PSSnapin CloudBerryLab.Explorer.PSSnapIn" 若沒有顯示錯誤,表示設定成功,顯示結果如下:

cloudberry25

cloudberry26

2. 撰寫可執行 CloudBerry 同步指令的 PowerShell 的 Script 檔

  • 新增一文字文件(右鍵>"新增">"文字文件"),並打開編輯其內容如下

Add-PSSnapin CloudBerryLab.Explorer.PSSnapIn

$key = "輸入 hicloud S3 的 access key"

$secret = "輸入 hicloud S3 的 secret key"

$endpoint = "s3.hicloud.net.tw"

$s3 = Get-CloudS3Connection -endpoint $endpoint -key $key -Secret $secret

$destination = $s3 | Select-CloudFolder -Path "輸入要同步至S3哪個Bucket或哪個Bucket底下的資料夾(如:anewbucket/cloud_S3_folder)"

$src = Get-CloudFilesystemConnection | Select-CloudFolder "輸入要將本地端的哪個資料夾,同步至S3上(如:C:\Users\archer0925\Desktop\local_folder\)"

$src | Copy-CloudSyncFolders $destination

 

  • 編輯完內容後,更改附檔名為 "ps.1" (如下: s3Sync_hicloud.ps1)

cloudberry27

cloudberry28

  • 上述圖中的範例程式主要功能就是將桌面名為 "local_folder" 底下的所有檔案,全部同步至 hicloud S3上名為 "anewbucket"  的 Bucket  底下名為 "cloud_S3_folder" 的資料夾
  • 指令補充說明
    • CloudBerry PowerShell 的指令可參照官方網頁,下面解釋三個常用的指令
    • Add-PSSnapin CloudBerryLab.Explorer.PSSnapIn: 此命令主要就是要讓 Windows PowerShell 看得懂 CloudBerry 指令
    • Get-CloudS3Connection: 連結hicloud S3的帳號,此指令後面可接的參數如下:
      • -endpoint: 填入 s3 compatible 的 Server Point (在此範例,我們填入 hicoloud S3 的 Server Point "s3.hicloud.net.tw")
      • -Key: 後面要接使用者 hicloud S3 帳號的 access key
      • -Secret: 後面要接使用者 hicloud S3 帳號的 secret key
      • -UseSSL: 加入此參數就會使用 SSL 連線傳輸
      • 使用範例: $s3 = Get-CloudS3Connection -endpoint $endpoint -key $key -Secret $secret -UseSSL (此段指令就是與 hicloud S3 的帳號連結,並在之後要進行傳輸動作的時候,都使用SSL連線傳輸)
    • Copy-CloudSyncFolders: 開始同步將本地端的檔案,同步至 hicloud S3 上,此指令後面可接的參數如下:
      • -DeleteOnTarget: 同步時,若本地端的檔案有被刪除,也一併刪除 hicloud S3 上的該檔案
      • -IncludeSubfolders: 同步本地端的某資料夾時,若該資料夾底下有子資料夾,也一併同步至 hicloud S3 上
      • -CompareByContent: 同步時使用 MD5 hash 去比較檔案的內容(必需購買 CloudBerry Explorer 的 PRO 版本才可加入此參數 )
      • -MissingOnly: 只同步在 hicloud S3 上沒有,可是本地端有的檔案,若是 hicloud S3 上有的話,同步時就直接忽略該檔案
      • 使用範例: $s3 = $src | Copy-CloudSyncFolders $destination -DeleteOnTarget -IncludeSubfolders (此段指令就是將本地端的某特定資料夾裡面的檔案,並包含該資料夾裡面的所有子資料夾及檔案,同步至 hicloud S3 上,並且若是本地端有刪除掉某檔案,也一併將hicloud S3上的該檔案刪除)

3. 設定排程定期備份

  • 打開工作排程器

cloudberry29

  • 點選 "執行" -> "建立基本工作"

cloudberry30

  • 填寫此排程任務的名稱跟描述

cloudberry31

  • 選擇要每隔多久處發一次(此範例為每天觸發同步程式一次)

cloudberry32

  • 選擇要在什麼時間點來執行(此範例的設定是從2014年5月26日開始,每天的下午5點整一到就執行一次同步程式)

cloudberry33

  • 選擇要執行的工作(這邊我們要執行的工作是去啟動 Windows PowerShell 執行我們剛剛編輯好的 "ps.1"檔,因此選擇 "啟動程式" 選項)

cloudberry34

  • 填入要啟動的程式以及引數(此範例是開啟 Windows PowerShell 去執行我們剛剛編輯好並存放在桌面的s3Sync_hicloud.ps1檔,所以我們在"程式或指令碼"欄位填入powershell,並在"新增引數"的欄位填入-file "C:\Users\archer0925\Desktop\s3Sync_hicloud.ps1",注意: "新增引數"的欄位,在填寫檔案的路徑名稱之前,一定要加"-file")

cloudberry35

  • 確認排程任務,點選完成開始執行

cloudberry36

  • 完成後可在"工作排程器程式庫"看到自己剛剛新增的工作排程,並可在此畫面點選某排程去設定要停用或是啟動該工作排程(若是剛新增完沒看到,可以關掉工作排程器在打開一次即可看到)

cloudberry37