我想get
通过 sftp 传输大文件。我执行以下命令:
kopparberg:dev marek$ sftp -P 678 marek@server
marek@server's password:
Connected to server.
sftp> cd backup
sftp> get database.gz /Volumes/www/backup/
Fetching /backup/database.gz to /Volumes/www/backup/database.gz
9% 44MB 1.4MB/s 05:06 ETA
因为它遵循更多命令,所以我决定编写一个 bash 脚本并将 sftp 命令放入批处理文件中。
Bash 文件如下所示:
#!/bin/bash
#get backup file
sftp -P 678 -o "BatchMode no" -b batchfile.sftp marek@server
#following commands
#...
在bacthfile.sftp中只需三个步骤:
cd backup
get database.gz /Volumes/www/backup/
quit
问题是,当我运行 bash 文件时,我看不到进度。这背后有什么合理的解释吗?
答案1
为什么不直接使用单个 SCP 命令呢?
scp -P 678 marek@server:/backup/database.gz /Volumes/www/backup/
我还相信,使用此方法,即使从脚本运行时也能获得所需的输出。
答案2
sftp 上的 rsync 将为您完成此操作,无需编写脚本:
rsync -av --progress -e 'ssh -p 678' marek@server:backup/database.gz /Volumes/www/backup/