我想安全地将一个大文件从一台计算机移动到另一台计算机,在存储之前必须在那里进行处理。
我想通过管道将文件导入运行处理脚本的ssh。
local.example.com$ cat file | ssh remote.example.com process.sh
(如果你有比我更好的主意,请建议)
在进程脚本中,我希望在保存文件之前对其进行校验和和和加密。问题来了。
解决方案可能有两种:
管道输入到两个命令(cksum和openssl)中;但是我发现所有的方法看起来都很复杂,而且都是可选的。
hack cksum还可以做类似猫的工作并在stderr上打印结果,这样我就可以
cksum --pipe | openssl enc > myfile
然后通过stderr获取校验和。
不幸的是,我查看了代码,似乎很难在不造成性能/缓冲损害的情况下做到这一点;)
可能有一个cksumming传输工具可以完成这一切,但我并没有想到。
无论如何,我想避免非标准和复杂的东西。
谢谢。
编辑:关于答案的有用链接http://www.linuxjournal.com/content/shell-process-redirection
最佳答案
如果使用cat > inputfile
启动接收脚本,它将吃掉所有STDIN直到EOF,那么脚本可以对inputfile运行所需的任何操作。
您也可以使用tee
;
echo foo | tee >(sha1sum) >(md5sum)
d3b07384d113edec49eaa6238ad5ff00 -
f1d2d2f924e986ac86fdf7b36c94bcdf32beec15 -