第一種方式,很容易想到,先在源伺服器gzip進行壓縮,然後再scp到目標伺服器,最後在目標伺服器進行gunzip解壓:
server1執行命令:
server1$: gzip -c data.txt > data.gz
server1$: scp data.gz root@server2:/data/
server2執行命令:
server2$: gunzip /data/data.gz
這大概是最簡單的實現方法了,但是效率不高,因為涉及到壓縮、複製、解壓縮等序列化操作。涉及了3輪磁碟讀寫:
在sever1gzip需要讀和寫,scp需要在server1上讀而在server2上寫,gunzip在server2上既要讀又要寫。
那有沒有更快速,更有效率的方式?
在sever1上執行命令:
gzip -c data.txt | ssh root@server2 「gunzip -c - > dtat.txt」這個方法比方案一更有效率,一次壓縮、複製、在另一端解壓一次完成。用管道來壓縮和解壓,降低了磁碟io。
這是最好的辦法了嗎?還能更快嗎?當然,還有。
ssh並不是跨網傳輸資料的最快方式,因為它增加了加解密的系統開銷。
如果不需要加解密,可以使用nc把裸資料進行跨網複製。
server2上執行命令:
nc -l -p 12345 | tar xvzf -server1上執行命令:
tar cvzf - data.txt | nc server2 12345
伺服器遠端拷貝檔案
有多台伺服器a b c,每台伺服器的程式每小時都生成大量的日誌檔案,日誌處理程式部署在伺服器a,伺服器b和c生成的日誌需要拷貝到遠端伺服器a上處理。那麼b和c生成的日誌檔案如何以小時為單位拷貝到遠端伺服器上呢?常用方法有ftp和scp,這裡主要敘述scp secure copy 的使用。scp的命令...
mysql 關於跨伺服器間的資料拷貝
按目前的情況,mysql是不支援跨伺服器間的資料拷貝的,也就是不能使用類似insert into db1.xx select from db2.xx的語句。可以想到的主要有兩種方法 1 先通過mysqdump將需要的資料導到sql檔案中,再通過mysql u p h x.db2 xx.sql的方式匯...
scp跨伺服器取檔案
實戰測試 1.登入26,把64的11.txt拷貝到26 2.登入26,把26的 test0423.txt檔案拷貝到64 總結 上面兩個命令其實是一樣的。格式 scp 要拷貝的檔案 目標路徑 功能 將前面的無論是檔案還是路徑拷貝到後面位址 其中要拷貝的檔案是本地的就只要乙個檔名,是遠端的就ip 檔名 ...