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值位元組。
- 建立實驗素材
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
- 在server中配置ssh免密連接配接
ssh-keygen
ssh-copy-id -i /root/.ssh/id_rsa.pub. [email protected]
- 使用腳本測試傳輸時間
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
-
執行以上腳本後會發現使用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