通過SFTP(SSH File Transfer Protocol)在Linux系統之間傳輸大文件是一種安全且高效的方法。以下是詳細的步驟指南,幫助你順利完成大文件的傳輸:
首先,確保目標服務器上已經安裝并啟用了SFTP服務。大多數Linux發行版默認使用OpenSSH,其中包含SFTP功能。
檢查SSH服務狀態:
sudo systemctl status sshd
如果未啟動,可以使用以下命令啟動:
sudo systemctl start sshd
啟用SSH服務開機自啟:
sudo systemctl enable sshd
為了提高安全性并避免每次傳輸時輸入密碼,建議使用SSH密鑰進行認證。
生成SSH密鑰對(如果尚未生成):
ssh-keygen -t rsa -b 4096
按照提示操作,通常密鑰會保存在~/.ssh/id_rsa
(私鑰)和~/.ssh/id_rsa.pub
(公鑰)。
將公鑰復制到目標服務器:
ssh-copy-id username@remote_host
替換username
為目標服務器的用戶名,remote_host
為目標服務器的IP地址或域名。系統會提示輸入目標服務器用戶的密碼。
測試無密碼登錄:
ssh username@remote_host
如果無需輸入密碼即可登錄,說明配置成功。
有多種方法可以通過SFTP傳輸大文件,以下介紹兩種常用的方法:
連接到遠程服務器:
sftp username@remote_host
傳輸文件:
上傳文件到遠程服務器:
put /path/to/local/largefile.zip /remote/path/largefile.zip
這里/path/to/local/largefile.zip
是本地文件的路徑,/remote/path/largefile.zip
是遠程服務器上的目標路徑。
從遠程服務器下載文件:
get /remote/path/largefile.zip /path/to/local/largefile.zip
退出SFTP會話:
bye
雖然SCP不是純粹的SFTP工具,但它通過SSH進行加密傳輸,適合大文件操作。
上傳文件:
scp /path/to/local/largefile.zip username@remote_host:/remote/path/largefile.zip
下載文件:
scp username@remote_host:/remote/path/largefile.zip /path/to/local/largefile.zip
a. 增加SSH緩沖區大小
對于非常大的文件,可能需要增加SSH的緩沖區大小以避免傳輸中斷。
編輯或創建/etc/ssh/sshd_config
文件,添加或修改以下行:
ClientAliveInterval 60
ClientAliveCountMax 3
然后重啟SSH服務:
sudo systemctl restart sshd
b. 使用rsync
進行斷點續傳
rsync
不僅可以同步文件,還支持斷點續傳,適合在網絡不穩定的情況下傳輸大文件。
安裝rsync(如果尚未安裝):
sudo apt-get install rsync # Debian/Ubuntu
sudo yum install rsync # CentOS/RHEL
上傳文件:
rsync -avz --progress /path/to/local/largefile.zip username@remote_host:/remote/path/
下載文件:
rsync -avz --progress username@remote_host:/remote/path/largefile.zip /path/to/local/
--progress
選項可以顯示傳輸進度,便于監控。
如果你更喜歡使用圖形界面進行文件傳輸,可以考慮以下工具:
這些工具通常提供拖放功能、斷點續傳和詳細的傳輸日志,適合不熟悉命令行的用戶。
對于大文件傳輸,監控進度非常重要,以確保傳輸順利完成并及時發現潛在問題。
使用pv
命令監控傳輸進度:
首先安裝pv
:
sudo apt-get install pv # Debian/Ubuntu
sudo yum install pv # CentOS/RHEL
上傳文件時監控:
pv /path/to/local/largefile.zip | ssh username@remote_host "cat > /remote/path/largefile.zip"
下載文件時監控:
ssh username@remote_host "pv /remote/path/largefile.zip" > /path/to/local/largefile.zip
通過以上步驟,你可以安全且高效地在Linux系統之間傳輸大文件。使用SSH密鑰認證提高了安全性,選擇合適的工具和方法可以優化傳輸過程,確保大文件順利傳輸。如果在傳輸過程中遇到問題,可以參考相關日志或使用監控工具進行排查。