2015-06-25 57 views
1
ssh [email protected] "sudo tar -czf - -C /path/To/Directory *.properties" | tar xzf - 

它失敗,下面的錯誤 -爲什麼在ssh調用中作爲字符串傳遞時,此tar命令失敗?

焦油的* .properties:無法統計:沒有這樣的文件或目錄

焦油與失敗狀態退出由於先前的錯誤

如果我SSH服務器,然後在服務器上,而不是tar -czf -使用tar -czf abc.tgz並刪除管道命令在最後,它工作正常,即壓縮目錄中的所有.properties文件?

我已經嘗試使用--wildcards參數以及-P和以* .properties結尾的完整路徑,但它們也不起作用。

+0

我還應該補充說 - 當有的時候。而不是* .properties,該命令正常工作。 – Ani

回答

3

遠端的shell在user的主目錄下展開* .properties,然後執行tar。我猜測~user中沒有匹配的文件。

你可能需要的是更多的東西一樣(假設user可以訪問該目錄)

ssh [email protected] 'cd /path/To/Directory && sudo tar -czf - *.properties' \ 
    | tar xzf - 

或者,使用tar--wildcards選項,並停止遠程shell擴展參數:

ssh [email protected] 'sudo tar -czf - -C /path/To/Directory --wildcards \*.properties' 
+0

但-C標誌是假設改變目錄,不是嗎?此外,我不能cd到目錄,因爲我需要有root privelege,並且sudo cd path/to /目錄不起作用 – Ani

+0

我找到了解決我的問題的方法 - ssh user @ server「sudo sh -c'cd/path/To/Directory; tar -czf - * .properties'「 |焦油xzf - – Ani

+0

接受答案作爲原來的命令確實在尋找主目錄,但我相信與-C標誌它不應該有。 – Ani

相關問題