跨伺服器拷貝檔案,你能想到最快的方式是什麼?

2021-10-19 11:11:02 字數 885 閱讀 8356

第一種方式,很容易想到,先在源伺服器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 檔名 ...