Shell-Script

SFTP腳本未下載所有文件

  • May 30, 2016

我有一個包含以下詳細資訊的 sftp 文件腳本,我的伺服器文件夾如BCP11,BCP12,BCP13,BCP14.....BCPXX. 在哪個BCPDUMP文件夾中有文件。

文件名 : file_sftp.sh

#!/usr/bin/expect
spawn sftp user@xx.xxx.x.xxx
expect "user@xx.xxx.x.xxx's password:"
send "password\n"
expect "sftp>"
send "get *Backup/GetBackup/BCP*/*BCPDUMP/20150925/20150925_profile*\n"
expect "sftp>"
send "bye\n"

當我執行這個腳本時,我只得到一個文件,而伺服器大約有 12 個文件。我得到低於腳本輸出。

spawn sftp user@xx.xxx.x.xxx  
Connecting to xx.xxx.x.xxx...  
Password:  
sftp> get *Backup/GetBackup/BCP*/*BCPDUMP/20150925/20150925_profile*  
Couldn't get handle: No such file or directory^M  
Couldn't get handle: No such file or directory^M  
Couldn't get handle: No such file or directory^M  
Fetching   /rsi/Backup/GetBackup/BCP10/BCPDUMP/20150925/20150925_profile_410.list.Z to 20150925_profile_410.list.Z
^M/rsi/Backup/GetBackup/BCP10/BCPDUMP/20150925/20150925_profile_410.list.Z 0%    0     0.0KB/s   --:-- ETA^M/rsi/Backup/GetBackup/BCP10/BCPDUMP/20150925/20150925_profile_410.list.Z                                                           66% 1152KB   1.1MB/s   00:00 ETA^M/rsi/Backup/GetBackup/BCP10/BCPDUMP/20150925/20150925_profile_410.list.Z                                                          100% 1730KB 864.9KB/s   00:02  

由於您正在嘗試檢索目錄,因此您應該使用get -r. 試試看。

如果您已經知道目錄 BCP* 和 *BCPDUMP 的名稱,請嘗試對所有 ( * ) 使用此字元一次。

如果您認為在不同的行中鍵入目錄名稱不是一個好主意,您可以使用該ls命令列出所有目錄並將它們放入一個數組中,之後您將為每個不同目錄或不同的數組值下載所有可用文件小路。

引用自:https://unix.stackexchange.com/questions/232008