1. 程式人生 > 其它 >linux中如何複製檔案並重命名_linux伺服器之間遠端複製檔案

linux中如何複製檔案並重命名_linux伺服器之間遠端複製檔案

技術標籤:linux中如何複製檔案並重命名

bd417315fd2336f0c4299b9d4c7777e0.png

前幾天在linux伺服器上部署專案時需要把程式從測試伺服器上拷貝過來,以前處理類似問題的邏輯都是先從源伺服器上把檔案下載到我的電腦裡,然後再從我的電腦裡上傳到目標伺服器。由於這次的程式比較大(1G左右),按照之前的操作會比較耗時,有沒有一個從A伺服器直接複製檔案到B伺服器的方法?

我從網上零零散散找了一些資料,用linux的scp命令可以解決以上問題,這裡做一個彙總。還是老規矩,本文先講怎麼操作,然後講各項引數的意義,最後講注意事項。總之,跟著做就對了,有疑問就帶著問題往下做,如果看完後還有問題可以在留言區提問

開始操作之前你首先得有兩臺linux伺服器,並且保證兩臺伺服器之間網路互通,可以使用ping測試一下網路互通情況。如果網路互通,那麼就可以愉快的開始了,先登入到一臺伺服器上,我們稱之為本地伺服器,另一臺伺服器稱之為遠端伺服器(假設遠端伺服器ip為192.168.101.1,使用者名稱為root)

在本地伺服器的/home目錄下建立local.txt檔案,然後把local.txt複製到遠端伺服器的根目錄下,依次執行下面3個命令

cd /home
touch local.txt
scp /home/local.txt [email protected]:/local.txt

執行完後會提示你輸入遠端伺服器的密碼,如下,輸入完後就複製成功了,快到遠端伺服器上的根目錄下看一下是否有local.txt檔案吧

3c59e37bc06cb715e6601fc6765e2f36.png

現在我們要把剛才複製到遠端伺服器上的local.txt在複製回來,並重命名為local_copy.txt,執行如下命令

scp [email protected]:/local.txt /home/local_copy.txt

執行該命令後同樣會提示你輸入遠端伺服器的密碼,輸入完成後檢視一下本地伺服器的/home目錄下是不是有一個local_copy.txt

命令詳解

linux遠端複製命令為scp,語法如下

//從本地複製到遠端 
scp [可選引數] local_file [[email protected]]remote_ip:remote_file 
// 從遠端複製到本地 
scp [可選引數] [[email protected]]remote_ip:remote_file local_file
local_file表示本機檔案,remote_file表示遠端伺服器檔案
remote_username和 remote_ip分別表示遠端伺服器ip和使用者名稱

可選引數

-1強制scp命令使用ssh1協議 -2強制scp命令使用ssh2協議 -4強制scp命令只使用IPv4定址 -6強制scp命令只使用IPv6定址 -B使用批處理模式(傳輸過程中不詢問傳輸口令或短語) -C允許壓縮(將-C標誌傳遞給ssh,從而開啟壓縮功能) -p保留原檔案的修改時間,訪問時間和訪問許可權。 -q靜默模式,不顯示傳輸進度條。 -r遞迴複製整個目錄,複製資料夾時必須帶上此引數 -v詳細方式顯示輸出。 -c cipher以cipher將資料傳輸進行加密,這個選項將直接傳遞給ssh。 -F ssh_config指定一個替代的ssh配置檔案,此引數直接傳遞給ssh。 -i identity_file從指定檔案中讀取傳輸時使用的金鑰檔案,此引數直接傳遞給ssh。 -l limit限定使用者所能使用的頻寬,以kb/s為單位。 -P port大寫的P, port是指定資料傳輸用到的埠號 -S program指定加密傳輸時所使用的程式,此程式必須能夠理解ssh1的選項。

注意事項

1. 兩臺伺服器之間必須可以網路通訊,否則不能完成複製。使用 ping 命令可以測試兩臺伺服器是否互通

2. remote_username引數可選,不加這個引數預設使用的是root使用者

3. 複製到目的地的同時可以重新命名檔案

// 將本地的local.txt檔案複製到遠端機並重命名為remote.txt
scp /home/local.txt [email protected]:/home/remote.txt

4. 複製資料夾時需要加上 -r 引數,否則會報錯。

// 複製logs資料夾要加上-r引數
scp -r /home/logs [email protected]:/home/logs

5. 指定的目的地的目錄必須存在,否則會報錯。

// 如果/usr/logs目錄不存在就會報錯
scp -r /home/logs/catalina.out [email protected]:/usr/logs/catalina.out 

-- 赫連小伍 原創,微信公眾號同名