transfer over 1gb large files over internet via ssh

當你有大於 1GB 的資料要在網路上傳輸, 利用現有大部份的 httpd, ftpd 等伺服器都沒辦法識別傳輸這類大檔案。

假設大檔案位於本地端 source@local 帳號下,你要傳輸到遠地端 destin@remote 帳號下。 則你可以使用如下任一方法:

其中,port_num 為 ssh 的 tcp 連線埠號,預設值為22。
path/from/file 為 source@local 帳號下的大檔案。
path/to/file 為 destin@remote 帳號下打算存放大檔案的位置

A.利用 sftp
remote> sftp  -oPort=port_num  source@local:path/from/file

B.利用 scp
remote> scp  -P port_num  source@local:path/from/file  path/to/file
或
local> scp  -P port_num path/from/file destin@remote:path/to/file

C.利用 rsync+ssh,具續傳功能,不怕中途斷線
remote> rsync  --copy-links  --progress  --partial  --append \
  -vtpre 'ssh -p port_num '  source@local:path/from/file  path/to/file
或
local> rsync  --copy-links  --progress  --partial  --append \
  -vtpre 'ssh -p port_num '  path/from/file  destin@remote:path/to/file


上述3方法適用於 Linux 或 Cygwin 平台。
尤其最後一個方法的 rsync 支援中斷續傳功能,很適合大資料夾之傳輸。

註:
1.若只想在本機硬碟之間進行大量資料夾之備份,也可使用如下 rsync 語法,少掉 e 參數:
   $ rsync --stats --progress --partial --append \
       -vtpr  path/from/folder/  path/to/folder/
   或
   $ rsync -aP path/from/folder    path/from/folder/  # 來源放入去處
   $ rsync -aP path/from/folder/   path/from/folder/  # 來源覆寫去處
       # -a 包含 -r, -l (保留軟連結), -p, -t, -g (保留群組), 
       #        -o (保留擁有者), -D (保留設備檔)
       # -P 包含 --progress, --partial

2.rsync 參數說明:
   rsync source@local:path/from/folder/  destin@remote:path/to/folder/
     --copy-links  將符號連結(軟連結或捷徑)進行實體拷貝
     --progress   顯示傳輸進度
     --stats     顯示檔案統計資訊
     --partial   傳輸中斷時,去處端將留下接收一半的檔案
     --append    傳輸時,遇到去處端長度有較小的檔案將自動從來源端補齊剩餘長度
     --rsync-path="sudo rsync"   讓遠方切換特權模式,取得特權目錄內容
     -v    傳輸時列印檔名訊息
     -t    去處端維持來源端的修改時間
     -p    去處端維持來源端的存取權限
     -r    傳輸包含所有子資料夾
     -e 'ssh -p port_num'  利用後面的指令字串進出連線傳輸
     -n    乾跑,只看清單,不實際拷貝

3.如果整理重複目錄時,只想找出本機硬碟之間兩目錄的差異,
  可自訂如下批次檔 ~/bin/backup.sh:
    #!/bin/bash
    #
    #rsync --stats -hlPrtv source/ destin/
    # [P]: keep (partial)ly transferred files, show (progress) during transfer
    # [h]: output numbers in (human-readable) format
    # [l]: copy sym(links) as symlinks readable
    # [r]: get (recursive) into directories
    # [t]: preserve modification (times)
    # [v]: increase (verbose) level
    echo "rsync --stats --append --partial --progress -vtprn $*"
    rsync --stats --append --partial --progress -vtprn $*

  實際比對時,可利用如下指令,

    host> bash ~/bin/backup.sh    source_path/    destin_path/

  得到source_path/須要搬動到destin_path/的檔案清單。
  搬完後,source_path/ 目錄將完全包含於 destin_path/ 目錄,也就是
  前者有的後者必有,故前者目錄即使刪除也沒關係。

  又因為有參數-n,執行結果只列印差異,沒有實際搬動。
  故當兩者差異為0檔案,無須搬動,即可確認前目錄已完全同步到後目錄。
  這時就可安心刪除前目錄。

how to install and use Jeddict AI Assistant on NetBeans IDE 23+

Jeddict AI Assistant  為適用於  NetBeans IDE 23 以上版本的插件,能夠連接大語言模型,協助編寫程式碼,大幅提升開發體驗,讓程式撰寫更輕鬆、更智慧。以下簡介其安裝方法及功能。 A.安裝與解除安裝 安裝步驟: ...

總網頁瀏覽量