通过 sftp 获取大文件的进度

通过 sftp 获取大文件的进度

我想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/

相关内容