я бы хотел 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/