Ubuntu使用SFTP備份數據的方法
SFTP基于SSH協議,默認集成在Ubuntu的openssh-server
中,無需額外安裝SFTP組件,只需配置即可使用。
sudo apt update && sudo apt install openssh-server
/etc/ssh/sshd_config
),確保以下關鍵配置未被注釋:Subsystem sftp /usr/lib/openssh/sftp-server
若需限制用戶僅能通過SFTP訪問(增強安全性),可添加以下配置(需提前創建sftpusers
組并添加用戶):Match Group sftpusers
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
保存文件后,重啟SSH服務使配置生效:sudo systemctl restart sshd
sudo mkdir -p /backup/data # 創建備份目錄
sudo chown your_username:your_group /backup/data # 修改所有者(替換為你的用戶名和組)
sudo chmod 700 /backup/data # 僅所有者可讀寫執行
通過命令行工具sftp
可直接傳輸文件,適用于臨時或手動備份場景。
username
(服務器用戶名)、remote_host
(服務器IP/域名):sftp username@remote_host
輸入密碼后進入SFTP會話(提示符變為sftp>
)。put
命令,指定本地路徑和遠程目標路徑(如將本地~/documents/report.pdf
備份到服務器/backup/data
目錄):put ~/documents/report.pdf /backup/data/
-r
參數遞歸上傳(如備份本地~/photos
目錄):put -r ~/photos /backup/data/
exit
或bye
結束SFTP連接。通過腳本和cron
定時任務可實現每日自動備份,減少手動操作。
/home/your_username/backup_script.sh
),內容如下(替換為實際路徑和用戶名):#!/bin/bash
# 定義變量
LOCAL_DIR="/home/your_username/documents" # 本地待備份目錄
REMOTE_USER="your_username" # 服務器用戶名
REMOTE_HOST="remote_host" # 服務器IP/域名
REMOTE_DIR="/backup/data" # 服務器備份目錄
TIMESTAMP=$(date +%Y%m%d_%H%M%S) # 時間戳(用于區分備份版本)
# 使用SFTP上傳目錄(遞歸)
sftp $REMOTE_USER@$REMOTE_HOST <<EOF
put -r $LOCAL_DIR $REMOTE_DIR/$TIMESTAMP
bye
EOF
保存后賦予執行權限:chmod +x /home/your_username/backup_script.sh
crontab -e
),添加以下行(如每天凌晨2點執行備份):0 2 * * * /home/your_username/backup_script.sh >> /home/your_username/backup.log 2>&1
說明:>> /home/your_username/backup.log 2>&1
會將腳本輸出(包括錯誤信息)追加到日志文件,便于后續排查問題。gpg
等工具加密。700
),防止未授權訪問;若使用chroot
限制用戶,需確保目錄結構符合要求(如ChrootDirectory
的父目錄需屬root
)。rsync
(支持斷點續傳)替代put
命令。