2014年3月18日 星期二

ssh 直接複製到檔案結尾 (ssh append to file)

scp 沒辦法,scp會直接覆蓋。rsync沒辦法,會讓兩個檔案同步變成一模一樣...

這時候就只好用ssh 原始操作方式

ssh user@remote "要處理的指令"

那麼就簡單了,如果要抓取遠端的檔案,附加到本地,那就在遠端使用cat指令,然後用>>修改資料串流附加到本地的檔案不就行了嗎?沒錯

ssh user@remote "cat filename" >> /LocalPath/FileName

那我就舉一反三,資料串流改用>就是複製!!! ... 對不起,脫褲子放屁了,直接用scprsync不就好了... 這邊就是發現scprsync只能複製,我們才去找可以附加檔案的方式,別又把這個方法,重新拿回去當複製的的功能用,有句名言當你手上拿著鎚子,你就覺得任何東西都像釘子

好,剛剛是抓遠端檔案附加到本地,那反過來,抓本地檔案附加到遠端呢?我上查到了一個很神奇的用法

cat local-source-file-name | ssh user@some.domain “cat >> remote-target-file-name“

得改用管線的指令,如果用ssh user@some.domain “cat >> remote-target-file-name“ < cat local-source-file-name,一定失敗,因為那串指令會通通送到遠端去執行,cat local-source-file-name這個指令也是在遠端執行,根本不是cat你本地的資料。

總結:

  1. 遠端到本地,直接ssh 遠端 cat 檔案 >> 本地檔案
  2. 本地到遠端,要做管線,cat 本地檔案 | ssh 遠端 cat >> 檔案

沒有留言:

張貼留言