2011-05-11 22 views
3

我想安全地將一個大文件從一臺計算機移動到另一臺計算機,在存儲之前必須對其進行處理。校驗和同時輸入一個輸入

我認爲要將文件傳輸到ssh中運行處理腳本。

local.example.com$ cat file | ssh remote.example.com process.sh 

(如果你有比我更好的任何想法,請建議)

在這個過程中劇本我想這兩個校驗和保存之前對文件進行加密。問題來了。

解可以是兩個:

  • 管輸入到兩個命令(校驗和和OpenSSL);但是我發現的所有方式看起來都很複雜並且是可選的。
  • 黑客校驗和也做stderr中的貓一樣工作和打印結果,這樣我可以做

    cksum --pipe | openssl enc > myfile 
    

    ,並獲得校驗通過stderr回來。 不幸的是,我看着代碼,它似乎對我來說很難做,沒有做一些性能/緩存損壞;)

有可能是cksumming-transfering工具,做這一切,但它沒」讓我想起來。 無論如何,我想避免非標準和複雜的東西。

非常感謝。

編輯:有關應答http://www.linuxjournal.com/content/shell-process-redirection

回答

4

有用的鏈接如果你開始你的接收腳本cat > inputfile,會吃掉所有STDIN直到EOF,那麼你的腳本可以運行所需的inputfile中的任何行動。

您也可以使用tee;

echo foo | tee >(sha1sum) >(md5sum) 
d3b07384d113edec49eaa6238ad5ff00 - 
f1d2d2f924e986ac86fdf7b36c94bcdf32beec15 - 
+0

是的,我知道,但需要將輸入存儲在文件_before_處理和我想執行流操作(RC4和CRC),這將是次優的,不是嗎? – FiloSottile 2011-05-11 15:55:41

+0

你也可以在流程重定向中使用'tee'。我將編輯並添加一個示例。 – Daenyth 2011-05-11 15:57:42

+0

就是這樣!我看着'tee',但我不知道進程重定向。你認爲在進程重定向或ssh管道中會有性能下降嗎? – FiloSottile 2011-05-11 16:09:32