天天看點

Linux系統基礎(9)--檔案傳輸Linux系統基礎(9)–檔案傳輸

Linux系統基礎(9)–檔案傳輸

實驗環境:

需要兩台處于同一網段的虛拟機:

client : 172.25.254.10

server : 172.25.254.20

一.SCP指令

SCP指令的主要作用是實作Linux與Linux系統之間的檔案傳輸。

SCP指令時基于SSH協定,是以兩台伺服器的sshd服務必須處于開啟狀态,否則無法完成上傳與下載下傳操作。

#1.上傳檔案
scp linux本地檔案路徑 遠端使用者名@linux主機位址:遠端路徑
#2.下載下傳檔案
scp 遠端使用者名@linux主機位址:資源路徑  linux本地檔案路徑

常用選項:
-r		#遞歸操作
-q		#靜默傳輸
           

案例:将client伺服器的/mnt/test檔案上傳到server伺服器的/root目錄下

#在client端
scp /mnt/test [email protected]:/root/
           

案例:将server伺服器的/mnt/test檔案下載下傳到client伺服器的/root目錄下

#在client端
scp [email protected]:/mnt/test /root/
           

二.rsync指令

rsync指令是一個遠端資料同步工具,可通過LAN/WAN快速同步多台主機間的檔案。rsync隻傳送兩個檔案不同的部分,而不是每次都整份傳送,是以速度相當快。但是當小檔案衆多的情況下,rsync會導緻硬碟I/O非常高。

rsync linux本地檔案路徑 遠端使用者名@linux主機位址:遠端路徑
rsync 遠端使用者名@linux主機位址:資源路徑 linux本地檔案路徑
常用選項:
-r			#遞歸複制
-l          #複制連結
-p          #複制權限
-t          #複制時間戳
-o          #複制擁有者
-g          #複制擁有組
-D          #複制裝置檔案
           

三.scp與rsync對比

dd指令:

dd if=/dev/zero of=檔案名稱 bs=1M count=1
#說明:
if代表輸入檔案
of代表輸出檔案
bs代表位元組為機關的塊大小。
count代表被複制的塊。
其中/dev/zero是一個字元裝置,會不斷傳回0值位元組。
           
  1. 建立實驗素材
dd if=/dev/zero of=/mnt/file1 bs=1M count=10
dd if=/dev/zero of=/mnt/file2 bs=1M count=20
dd if=/dev/zero of=/mnt/file3 bs=1M count=30
           

以上分别建立了三個檔案大小分别為10M 20M 30M

  1. 在server中配置ssh免密連接配接
ssh-keygen
ssh-copy-id -i /root/.ssh/id_rsa.pub. [email protected]
           
  1. 使用腳本測試傳輸時間
vim /mnt/test.sh
time scp -qr /root/Desktop [email protected]:/root/Desktop
time scp -qr /root/Desktop [email protected]:/root/Desktop
time scp -qr /root/Desktop [email protected]:/root/Desktop
           
vim /mnt/test1.sh
time rsync -raCq /root/Desktop [email protected]:/root/Desktop
time rsync -raCq /root/Desktop [email protected]:/root/Desktop
time rsync -raCq /root/Desktop [email protected]:/root/Desktop
           
  1. 執行以上腳本後會發現使用scp指令三次時間幾乎一緻,而用rsync指令後兩次時間遠小于第一次。

    這是因為scp是相當于複制,黏貼,如果有的話是覆寫,比較耗時間,不智能。rsync 第一次是把所有檔案同步過去,當檔案修改後,隻把修改的檔案同步過去。

四.檔案的歸檔和壓縮

1.打包歸檔的概念

打包:預設情況下,Linux的壓縮概念一次隻能壓縮一個檔案。針對多檔案或檔案夾無法進行直接壓縮。是以需要提前對多個檔案或檔案夾進行打包,這樣才可以進行壓縮操作。

tar [選項]  打包後的名稱.tar  多個檔案或檔案夾
[選項]:
-c				#打包
-v				#顯示打包的進度
-f				#指定打包後的檔案名稱

-t				#檢視打包的檔案内容

-r				#向歸檔檔案中添加檔案

-x				#解檔

-u				#update縮寫,更新原打封包件中的檔案

--get			#解檔指定檔案
--delete		#删除指定檔案
-C				#指定解檔路徑
           

案例:把a.txt、b.txt、c.txt檔案打包到abc.tar檔案中

tar -cvf abc.tar a.txt b.txt c.txt
           

案例:把etc檔案夾進行打包etc.tar

tar -cvf etc.tar /etc/
           

案例:檢視etc.tar中内容

tar -tf etc.tar
           

案例:向etc.tar中添加檔案

tar -rf etc.tar test1         
           

案例:将etc.tar解檔

tar -xf etc.tar 
           

案例:解檔指定檔案

tar -f etc.tar --get test1
           

案例:删除指定檔案

tar -f etc.tar --delete test1
           

案例:指定解檔路徑

tar -xf etc.tar -C /root/Desktop
           

2.壓縮檔案

zip格式壓縮

zip -r etc.tar.zip mnt.tar		#zip格式壓縮 -r遞歸
unzip etc.tar.zip				#zip格式解壓縮
可加選項:
-d			#解壓到指定路徑下
           

Tips:zip格式在Windows以及Linux中都可以使用。

gzip

gzip etc.tar 					#gzip格式壓縮
gunzip etc.tar.gz				#gzip格式解壓縮
           

bzip

bzip2 etc.tar					#bzip2格式壓縮
bunzip2 etc.tar.bz2				#bzip2格式解壓縮
           

xz

xz etc.tar						#xz格式壓縮
unxz etc.tar.xz					#xz格式解壓縮
           

壓縮速度:gzip > bzip2 > xz

壓縮率:gzip < bzip2 < xz

3.打包+壓縮

-z	:使用gzip壓縮工具把打包後的檔案壓縮為.gz
-j  :使用bzip2壓縮工具把打包後的檔案壓縮為.bz2
-J	:使用xz壓縮工具把打包後的檔案壓縮為.xz

#gzip
tar -zcf etc.tar.gz /etc
tar -zxf etc.tar.gz
 
#bzip2
tar -jcf etc.tar.bz2 /etc
tar -jxf etc.tar.bz2
 
#xz
tar -Jcf etc.tar.xz /etc
tar -Jxf etc.tar.xz
           

繼續閱讀