Назад | Перейти на главную страницу

Прогресс при загрузке большого файла через 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. Есть какое-нибудь рациональное объяснение?

Почему бы вам вместо этого просто не использовать одну команду SCP?

scp -P 678 marek@server:/backup/database.gz /Volumes/www/backup/

Я также считаю, что использование этого метода даст вам желаемый результат при запуске из сценария.

rsync over sftp сделает это за вас, никаких сценариев не требуется:

rsync -av --progress -e 'ssh -p 678' marek@server:backup/database.gz /Volumes/www/backup/