为什么这个发球台输掉了?

Modified on: Sat, 17 Aug 2019 22:20:02 +0800

简单的脚本:

#!/bin/bash remote_ssh_account="depesz@localhost" directory_to_tar=pgdata exec nice tar cf - "$directory_to_tar" | \ tee >( md5sum - | \ ssh "$remote_ssh_account" 'cat - > /tmp/h3po4-MD5-2012-03-13.tar' ) | \ ssh "$remote_ssh_account" 'cat - > /tmp/h3po4-data-2012-03-13.tar'

理论上它应该将数据和校验和传递给远程机器。

但不知怎的,发球台失败了:

#!/bin/bash
remote_ssh_account="depesz@localhost"
directory_to_tar=pgdata
exec nice tar cf - "$directory_to_tar" | \
    tee >(
        md5sum - | \
        ssh "$remote_ssh_account" 'cat - > /tmp/h3po4-MD5-2012-03-13.tar'
    ) | \
    ssh "$remote_ssh_account" 'cat - > /tmp/h3po4-data-2012-03-13.tar'

确实没过,但没有任何事情发生。我看到两个ssh都开始了,并且tee写了两个,但只有管道到(md5sum | ssh)获取数据 - ssh“data”的strace没有得到任何数据,5秒后tee显示错误。

除此之外所有作品。建立了2个连接,tar工作,md5sum及其交付工作。

作者:user13185

最佳答案

试试这个,这是另一种破坏管道的方法:

#!/bin/bash remote_ssh_account="depesz@localhost" directory_to_tar=pgdata nice tar cf - "$directory_to_tar" | \ tee >( md5sum | \ ssh "$remote_ssh_account" 'cat > /tmp/h3po4-MD5-2012-03-13.sum' ) > >( ssh "$remote_ssh_account" 'cat > /tmp/h3po4-data-2012-03-13.tar' )

作者:lhunath

相关问答

添加新评论