溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎樣在Linux系統(tǒng)之間傳輸文件

發(fā)布時間:2022-01-25 10:57:53 來源:億速云 閱讀:208 作者:kk 欄目:開發(fā)技術(shù)

這篇文章的內(nèi)容主要圍繞怎樣在Linux系統(tǒng)之間傳輸文件進行講述,文章內(nèi)容清晰易懂,條理清晰,非常適合新手學習,值得大家去閱讀。感興趣的朋友可以跟隨小編一起閱讀吧。希望大家通過這篇文章有所收獲!

我第一次覺得Linux的強大是在學習Linux系統(tǒng)中兩臺系統(tǒng)進行傳輸文件,當時瞬間被Linux系統(tǒng)的強大而震撼到,下面一起來看看Linux系統(tǒng)怎樣傳輸文件。

scp傳輸


當兩臺LINUX主機之間要互傳文件時可使用SCP命令來實現(xiàn)

scp傳輸速度較慢,但使用ssh通道保證了傳輸?shù)陌踩?/p>

復制文件


  • 將本地文件拷貝到遠程

scp 文件名 –用戶名@計算機IP或者計算機名稱:遠程路徑

  • 從遠程將文件拷回本地

scp –用戶名@計算機IP或者計算機名稱:文件名 本地路徑

命令格式

 scp local_file remote_username@remote_ip:remote_folder
 或者
 scp local_file remote_username@remote_ip:remote_file
 或者
 scp local_file remote_ip:remote_folder
 或者
 scp local_file remote_ip:remote_file

第1,2個指定了用戶名,命令執(zhí)行后需要再輸入密碼,第1個僅指定了遠程的目錄,文件名字不變,第2個指定了文件名; 第3,4個沒有指定用戶名,命令執(zhí)行后需要輸入用戶名和密碼,第3個僅指定了遠程的目錄,文件名字不變,第4個指定了文件名;

復制目錄


  • 將本地目錄拷貝到遠程

scp -r 目錄名 用戶名@計算機IP或者計算機名稱:遠程路徑

  • 從遠程將目錄拷回本地

scp -r 用戶名@計算機IP或者計算機名稱:目錄名 本地路徑

命令格式

 scp -r local_folder remote_username@remote_ip:remote_folder
 或者
 scp -r local_folder remote_ip:remote_folder

第1個指定了用戶名,命令執(zhí)行后需要再輸入密碼; 第2個沒有指定用戶名,命令執(zhí)行后需要輸入用戶名和密碼;

例子

 scp -r /home/space/music/ root@www.cumt.edu.cn:/home/root/others/
 scp -r /home/space/music/ www.cumt.edu.cn:/home/root/others/

參數(shù)詳解


參數(shù)描述
-a盡可能將檔案狀態(tài)、權(quán)限等資料都照原狀予以復制
-r若 source 中含有目錄名,則將目錄下之檔案亦皆依序拷貝至目的地
-f若目的地已經(jīng)有相同檔名的檔案存在,則在復制前先予以刪除再行復制
-v和大多數(shù) linux 命令中的 -v 意思一樣 , 用來顯示進度 . 可以用來查看連接 , 認證 , 或是配置錯誤
-C使能壓縮選項
-P選擇端口 . 注意 -p 已經(jīng)被 rcp 使用
-4強行使用 IPV4 地址
-6強行使用 IPV6 地址

舉例說明


  1. 把計算機名為“v111.nn”下所有的東西都拷貝到本機/home/admin/目錄下

 scp -r * v111.nn:/home/admin/
  • 1

  1. 以admin的身份把IP地址為“192.168.219.125”,/home/admin/test目錄下所有的東西都拷貝到本機/home/admin/目錄下

 scp -r  admin@192.168.219.125:/home/admin/test  /home/admin/
  • 1

怎樣在Linux系統(tǒng)之間傳輸文件

參考


配置scp在Linux或Unix之間傳輸文件無需密碼

Linux之cp/scp命令+scp命令詳解

[CentOS 不能使用scp命令 解決方法](http://www.linuxidc.com/Linux/2014-09/106569.htm_

兩臺Linux主機之間scp復制文件

rsync差異化傳輸(支持斷點續(xù)傳,數(shù)據(jù)同步)


 rsync -av /backup/ -e ssh root@192.168.1.110:/bak
  • 1

-a: archive歸檔模式,表示以遞歸方式傳輸文件,并保持所有文件屬性,鏈接等,等于-rlptgoDrsync——remote sync。

rsync是Linux系統(tǒng)下的文件同步和數(shù)據(jù)傳輸工具,它采用“rsync”算法,可以將一個客戶機和遠程文件服務器之間的文件同步,也可以在本地系統(tǒng)中將數(shù)據(jù)從一個分區(qū)備份到另一個分區(qū)上。

如果rsync在備份過程中出現(xiàn)了數(shù)據(jù)傳輸中斷,恢復后可以繼續(xù)傳輸不一致的部分。rsync可以執(zhí)行完整備份或增量備份。

它的主要特點有:

  1. 可以鏡像保存整個目錄樹和文件系統(tǒng);

  2. 可以很容易做到保持原來文件的權(quán)限、時間、軟硬鏈接;無須特殊權(quán)限即可安裝;

  3. 可以增量同步數(shù)據(jù),文件傳輸效率高,因而同步時間短;

  4. 可以使用rcp、ssh等方式來傳輸文件,當然也可以通過直接的socket連接;

  5. 支持匿名傳輸,以方便進行網(wǎng)站鏡象等;

  6. 加密傳輸數(shù)據(jù),保證了數(shù)據(jù)的安全性;

Rsync實現(xiàn)文件備份同步詳解

Rsync同步兩臺服務器

CentOS 6.5下Rsync遠程同步

Linux下用Rsync進行數(shù)據(jù)備份和同步配制

Linux使用Rsync客戶端與服務端同步目錄進行備份

管道傳輸(降低IO開銷)


 gzip -c sda.img | ssh root@192.168.1.110 "gunzip -c - > /image/sda.img"
  • 1

對sda.img使用gzip壓縮,-c參數(shù)表示輸出到stdout,即通過管道傳送

gunzip -c – 中的”-“表示接收從管道傳進的sdtin

nc傳輸(一種網(wǎng)絡的數(shù)據(jù)流重定向)


nc所做的就是在兩臺電腦之間建立tcp或udp鏈接,并在兩個端口之間傳輸數(shù)據(jù)流,是一種網(wǎng)絡的數(shù)據(jù)流重定向

使用dd結(jié)合nc命令網(wǎng)絡克隆磁盤分區(qū)

主機:

 dd if=/dev/vda | gzip -c | nc -l 50522
  • 1

待恢復機:

 nc 192.168.215.63 50522 | gzip -dc | dd of=/dev/sda
  • 1

dd命令克隆/dev/vda磁盤,并使用gzip壓縮,把數(shù)據(jù)流重定向到本機50522端口,待恢復機上使用nc連接主機50522端口,就能接收主機50522端口的比特數(shù)據(jù)流,然后使用gzip解壓縮,并恢復到/dev/sda磁盤

dd命令讀取的是磁盤扇區(qū),所以不論磁盤文件系統(tǒng),或者分區(qū)表,磁盤MBR信息,dd都能夠復制,可以使用bs,count參數(shù)控制要克隆的大小

例如dd bs=512 count=1 if=/dev/vda of=mbr.img 只復制磁盤vda的第一個扇區(qū)512K字節(jié)數(shù)據(jù)(引導程序和分區(qū)表)

通常,可以用scp完成兩臺主機間的文件傳輸任務,但在主機間未建立信任關(guān)系的情況下,scp每次都需要輸入密碼,用起來感覺不是很方便,之前這篇筆記介紹過不用輸入密碼執(zhí)行腳本或傳輸文件的方法,但對于一些臨時性的任務,準備工作還是比較麻煩。

what is nc ?


nc是netcat的簡寫,關(guān)于nc是什么,man如是說:arbitrary TCP and UDP connections and listens

nc可以方便地實現(xiàn)任意TCP/UDP端口的偵聽,連接的建立,端口的掃描,等等。也即,nc既可以作為server以TCP或UDP方式偵聽指定端口,也可以作為client發(fā)起TCP連接或方式UDP包。下面要介紹的技巧就是借助其TCP連接來實現(xiàn)主機間文件傳輸?shù)摹?/p>

nc的控制參數(shù)不少,常用的幾個參數(shù)如下所列:

備注:nc要連接的目的端口可以是具體的整數(shù),也可以直接通過服務名指定,這種情況下,nc會負責將name映射至某個well-known port(可用cat /etc/services查看這些端口跟服務名的映射關(guān)系)

參數(shù)描述
-l用于指定nc將處于偵聽模式。指定該參數(shù),則意味著nc被當作server,偵聽并接受連接,而非向其它地址發(fā)起連接
-p port指定nc要使用的端口。若之前已指定-l,則這里的-p指定具體的偵聽端口;若未指定-l,則表示向這個端口發(fā)起連接
-s hostname/ip-address指定發(fā)送數(shù)據(jù)的源IP地址,適用于多網(wǎng)卡機器
-u指定nc使用UDP協(xié)議,默認為TCP
-v輸出交互或出錯信息,新手調(diào)試時尤為有用

use nc to transmit data between hosts


經(jīng)過上面對nc的簡介,估計不少同學已經(jīng)知道怎么用nc來實現(xiàn)兩臺機器間的文件傳輸了。這里對實現(xiàn)流程做簡單說明。

在數(shù)據(jù)接收方的機器上偵聽指定端口


 nc -l -p 8210 > demo.txt        # 在本機8210端口偵聽TCP連接,將收到的數(shù)據(jù)寫入文本文件
 nc -l -p 8210 > demo.tar.bz2    # 在本機8210端口偵聽TCP連接,將收到的數(shù)據(jù)寫成壓縮文件
  • 1

  • 2

在數(shù)據(jù)發(fā)送方機器上向指定地址(ip+port)以TCP方式發(fā)送數(shù)據(jù)


 nc dest_ip 8210
  • 1

  • 2

-v打印出錯信息


 接收方:nc -v -l -p 8210  
 發(fā)送方:nc -v dest_ip 8210
  • 1

  • 2

注意:使用nc傳文件時,需注意操作次序,receiver先偵聽端口,sender向receiver所在機器的該端口發(fā)送數(shù)據(jù)。否則發(fā)送失敗。

建立文件服務器


除了上面集中傳輸文件的方式之外,還可以通過簡歷文件服務器,然后通過網(wǎng)絡掛載的方式傳輸,這種適用于經(jīng)常性的拷貝,下面是一個掛載ftp服務器的例子 掛載ftp服務器

 yum install curlftpfs
 mkdir /data/ftp
 curlftpfs username:password@ftp.yourdomain.com /data/ftp

什么是Linux系統(tǒng)

Linux是一種免費使用和自由傳播的類UNIX操作系統(tǒng),是一個基于POSIX的多用戶、多任務、支持多線程和多CPU的操作系統(tǒng),使用Linux能運行主要的Unix工具軟件、應用程序和網(wǎng)絡協(xié)議。

感謝你的閱讀,相信你對“怎樣在Linux系統(tǒng)之間傳輸文件”這一問題有一定的了解,快去動手實踐吧,如果想了解更多相關(guān)知識點,可以關(guān)注億速云網(wǎng)站!小編會繼續(xù)為大家?guī)砀玫奈恼拢?/p>

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI