シェルスクリプトでラップする必要があると思います。
シェルスクリプトは、たとえば次のようなlftpスクリプトを生成する必要があります。
set xfer:log true
set xfer:log-file "/path/to/somewhere/$DATESTAMP.log"
lcd "/path/of/source"
open -u $UN,$Pass sftp://$Server
mirror -R $Directory
quit
によって実行しlftp -f $ScriptName
ます。
その後、生成されたログファイルを解析します。AFAIKには、成功した転送のみが含まれています。
awk '{print $3,$6}' $DATESTAMP.log | sed -r -e 's/ [0-9]+-/ /'
上記は、ファイルごとに転送されるファイルとバイトのリストを生成します。たとえば、結果をループして実際のファイルサイズと比較できます。
# WARNING: Script assumes that filename contains no space.
while read fname fsize; do
# The following line used if the lftp runs from e.g. the source folder
actualname=$Prefix/$fname
actualsize=$(stat -c "%s" "$actualname")
if (( actualsize != fsize )); then
# Some error handling code here
fi
done <<< "$(awk '{print $3,$6}' $DATESTAMP.log | sed -r -e 's/ [0-9]+-/ /')"
注:while
ループ内の変数の操作を可能にするために、配管の代わりに「herestring」を使用しています。