# 📤 NAS 傳送檔案至接收方的 SFTP 腳本教學 --- ## 📄 範例腳本:`sftp_upload.sh` ```bash #!/bin/bash # === 設定參數 === REMOTE_USER="username" # 接收方的帳號 REMOTE_HOST="sftp.example.com" # 接收方的主機 IP 或網域 REMOTE_PORT=22 # SFTP 連接埠(預設為 22) REMOTE_PATH="/remote/folder/" # 接收方的儲存路徑 LOCAL_FILE="/volume1/shared/file_to_send.txt" # NAS 上要傳送的檔案路徑 LOG_FILE="/volume1/shared/sftp_upload.log" # 日誌檔案(可選) # === 傳送檔案 === echo "[$(date)] 傳送開始..." >> "$LOG_FILE" sftp -oPort=$REMOTE_PORT $REMOTE_USER@$REMOTE_HOST <<EOF >> "$LOG_FILE" 2>&1 put $LOCAL_FILE $REMOTE_PATH exit EOF if [ $? -eq 0 ]; then echo "[$(date)] ✅ 傳送成功:$LOCAL_FILE -> $REMOTE_HOST:$REMOTE_PATH" >> "$LOG_FILE" else echo "[$(date)] ❌ 傳送失敗,請檢查設定。" >> "$LOG_FILE" fi ``` --- ## ✅ 使用方式 1. 開啟 Synology DSM 的 `控制台 → 排程任務`,新增一個「**排程的 Script 任務**」。 2. 將上述內容直接貼入「執行命令」欄位,或另存為 `.sh` 檔並呼叫: ```bash sh /volume1/shared/sftp_upload.sh ``` 3. 可透過日誌檔 `sftp_upload.log` 檢查是否傳送成功。 --- ## 🔐 若使用 SSH 金鑰登入 1. 在 NAS 上建立金鑰對: ```bash ssh-keygen ``` 2. 將公鑰 `~/.ssh/id_rsa.pub` 提供給接收方,請他加入至主機的: ``` ~/.ssh/authorized_keys ``` 3. 若要在腳本中使用金鑰,請修改 SFTP 指令如下: ```bash sftp -i ~/.ssh/id_rsa -oPort=$REMOTE_PORT $REMOTE_USER@$REMOTE_HOST <<EOF put $LOCAL_FILE $REMOTE_PATH exit EOF ``` --- ## 📌 建議 - 建議將 `id_rsa` 權限設定為 `600`,避免連線問題: ```bash chmod 600 ~/.ssh/id_rsa ``` - 腳本可搭配「排程任務」自動執行,例如每日定時備份。 --- ## 🛠️ 客製化支援 如你提供以下資訊,我可以幫你產生對應的腳本: - NAS 上檔案的實際路徑 - 接收方主機名稱或 IP - 接收方 SFTP 帳號 - 是否使用金鑰認證或密碼 - 接收方指定儲存路徑 ---
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up