起因
本地拉取docker映象timeout,然後就準備把阿里雲上已經在執行的映象打包下載下來。
指令1:rsync
rsync
是一個非常強大的工具,用於檔案同步和高效的資料傳輸。它可以用於備份、檔案傳輸以及資料同步等多種場景。
rsync
的主要優點在於其高效性和靈活性,特別是在處理大量檔案和遠端傳輸時表現優異。
主要特點
- 增量傳輸:
rsync
只傳輸兩個檔案之間的差異部分,而不是整個檔案,從而顯著減少了傳輸時間。 - 多平臺支援:
rsync
可以在多種作業系統上執行,包括 Linux、macOS 和 Windows。 - 安全傳輸:透過 SSH 或 SSL/TLS 進行加密傳輸,保證資料的安全性。
- 靈活的選項:支援多種選項來定製傳輸行為,如保留檔案後設資料、壓縮資料等。
- 遠端檔案同步:可以輕鬆地在本地計算機和遠端伺服器之間同步檔案。
基本語法
rsync
的基本語法如下:
rsync [options] SOURCE DESTINATION
其中:
- options:一系列用於控制
rsync
行為的選項。 - SOURCE:要同步或傳輸的原始檔或目錄。
- DESTINATION:目標檔案或目錄的位置。
常用選項
基礎選項
- -a(archive):歸檔模式,保留檔案屬性(如許可權、時間戳、符號連結等)。
- -v(verbose):詳細模式,顯示更多輸出資訊。
- -z(compress):啟用壓縮,減少資料傳輸量。
- -P(progress):顯示進度條,並在傳輸完成後列印統計資料。
- -r(recursive):遞迴複製目錄。
- -u(update):只傳輸那些源端比目標端新或不存在的檔案。
進階選項
- -e(program):指定用於遠端 shell 的程式,預設為
ssh
。 - -H(hard-links):保持硬連結的關聯。
- -L(links):將符號連結作為普通檔案傳輸。
- -B(block-size):指定塊大小,用於提高傳輸效率。
- -S(sparse):保留稀疏檔案的稀疏性。
- -I(ignore-errors):忽略錯誤,繼續處理其他檔案。
- -q(quiet):安靜模式,減少輸出資訊。
示例
1. 本地檔案同步
將本地目錄 source_dir
同步到本地目錄 dest_dir
:
rsync -avz /path/to/source_dir /path/to/dest_dir
2. 從遠端伺服器拉取檔案到本地
將遠端伺服器上的檔案 remote_file
拉取到本地目錄 local_dir
:
rsync -avz user@remote_server:/path/to/remote_file /path/to/local_dir
3. 將本地檔案推送到遠端伺服器
將本地目錄 local_dir
推送到遠端伺服器的 remote_dir
:
rsync -avz /path/to/local_dir user@remote_server:/path/to/remote_dir
應用場景
資料備份
定期將重要資料備份到另一個儲存裝置或遠端伺服器上:
rsync -avz --delete /path/to/data user@backup_server:/path/to/backup_dir
檔案同步
實時同步工作目錄到遠端伺服器:
rsync -avz --delete /path/to/workdir user@remote_server:/path/to/remotedir
--delete:該選項表示在同步過程中刪除目標端(destination)中不再存在於源端(source)的檔案或目錄。這有助於保持目標端與源端的一致性。
親測
將我筆記本上的ollama.tar的包傳輸到辦公室的Pi5上。之前從阿里雲伺服器上下載下來操作類似,網速也差不多,不過沒截圖。
指令2 scp
scp
(Secure Copy)是一個用於透過 SSH 協議安全地傳輸檔案的工具。它主要用於簡單的檔案傳輸任務,特別適合在本地計算機和遠端伺服器之間傳輸單個檔案或目錄。
基本語法
scp
的基本語法如下:
scp [options] source destination
常用選項
- -r:遞迴複製目錄。
- -p:保留檔案的許可權、時間戳等屬性。
- -v:詳細模式,顯示更多輸出資訊。
- -C:啟用壓縮(預設不壓縮)。
- -P
:指定 SSH 埠(預設為 22)。 - -i <identity_file>:指定私鑰檔案,用於金鑰認證。
常見用法
1. 從本地傳輸檔案到遠端伺服器
將本地的 file.txt
檔案傳輸到遠端伺服器的 /home/user/
目錄:
scp -P 22 file.txt user@remote_server:/home/user/
這裡的 -P 22
指定使用預設的 SSH 埠 22。
2. 從遠端伺服器拉取檔案到本地
將遠端伺服器上的 file.txt
檔案拉取到本地的當前目錄:
scp -P 22 user@remote_server:/home/user/file.txt .
3. 傳輸目錄
將本地的 directory
目錄傳輸到遠端伺服器的 /home/user/
目錄:
scp -Pr directory user@remote_server:/home/user/
這裡的 -Pr
表示遞迴複製目錄。
示例
1. 從本地傳輸檔案到遠端伺服器
假設你要將本地的 ~/Documents/file.txt
檔案傳輸到遠端伺服器的 ~/backups
目錄:
scp -P 22 ~/Documents/file.txt user@remote_server:~/backups
2. 從遠端伺服器拉取檔案到本地
假設你要將遠端伺服器上的 ~/data/file.txt
檔案拉取到本地的 ~/Downloads
目錄:
scp -P 22 user@remote_server:~/data/file.txt ~/Downloads
3. 傳輸目錄
假設你要將本地的 ~/Projects/project
目錄傳輸到遠端伺服器的 ~/projects
目錄:
scp -Pr ~/Projects/project user@remote_server:~/projects
與 rsync
的區別
雖然 scp
和 rsync
都可以用來傳輸檔案,但它們有一些不同之處:
- 功能複雜度:
rsync
提供了更豐富的功能,如增量傳輸、檔案同步等。 - 效能:對於大型檔案或目錄,
rsync
通常更高效,因為它只傳輸檔案的不同部分。 - 易用性:
scp
更適合簡單的檔案傳輸任務,而rsync
更適合複雜的同步和備份場景。