在 shell 中恢复 mget

在 shell 中恢复 mget

我在主机 B 中有大量文件,我正尝试从主机 A 的 shell 中获取这些文件(主机 A 允许 shell 访问,而主机 B 不允许但允许 ftp 访问)。在工作过程中,连接丢失,主机 B 中只有一半的文件被传输到主机 A。我试图在不覆盖主机 A 中已传输的文件的情况下恢复获取文件,但不知道该怎么做。大家有什么想法吗?

PS:主机 A 的 shell 中没有 mreget

答案1

更通用的方法是捕获有关 B 上的内容的信息,确认它们都到达 A 或继续重新尝试直到获得它们全部。

就像是

until ${allFilesTransfered:-false} ; do
    # get in file list of remote Files
ftp -in  > ${mgetTargets} <<-EOS
    open ${RemoteHost}
    $passwd
    cd $remoteDir
    ls ${fileSpec}*
    quit
    EOS

    # transport files with mget
    ftp -in <<-EOS
    open ${RemoteHost}
    $passwd
    prompt
    binary
    cd $remoteDir
    lcd $localDir
    mget $( cat mgetTargets )
    quit
    EOS

    # make a tmp file with files that are
    # now on your local machine
    cd $localDir
    ls -l > ${localDirOutput)

    # compare the 2 lists with diff,
    # if not diffs, then all files were copied
    diffOut="$(diff - ${localDirOutput} ${mgetTargets})"
case "${diffOut:-no_outputFound}" in
   no_outputFound ) allFilesTransfered=true ;;
esac
done

其中 mgetTargets 和 locaDirOutput 将被定义为指向文件。

我确实没有资源或时间来实现这一点,但希望你能明白我的想法。

相关内容