?一、實驗環境的設置
①該實驗需要兩臺主機,虛擬機名稱為 L2 和 L3 ,在終端分別更改主機名為 node1 和 node2,在實驗過程能夠更好分辨。
然后再重新打開終端,主機名便都更改了相應的名稱。
②用 ip a 的命令分別查看兩個主機的 IP地址。(node1?的IP地址為 192.168.10.128/24,node2 的IP地址為 192.168.10.131/24 )。
IP 地址的來源:
找到編輯,打開虛擬網絡編輯器。
選擇NAT模式,可看到VMnet 8 打開了DHCP服務,L2 和 L3 虛擬機可自動從 192.168.10.0 這個網段中獲取IP地址,DHCP設置中可看到 IP地址的范圍是 192.168.10.128 -- 192.168.10.254。
用 ping 命令檢測兩個虛擬機之間的連通性?
保險起見,在 node1 和 node2 中都編輯一個 sshd 文件,輸入 :set nu 命令可顯示行數,將第 40 行的 # 刪掉,將是否允許超級用戶登錄后面的單詞改為 yes ,然后 :wq 保存退出,再輸入 systemctl restart sshd 命令重啟 sshd 服務,配置便生效了。(d :開啟了守護進程)
二、文件傳輸方法
1.scp
scp (Secure Copy)是一個在 Linux、Unix 以及類 Unix 系統中廣泛使用的命令,用于在本地主機和遠程主機之間安全地復制文件和目錄。它基于 SSH(Secure Shell)協議,因此在傳輸過程中會對數據進行加密,確保數據的安全性。?
1)把本機文件或目錄復制到遠程主機
命令格式:scp [-r] <本地文件或目錄> <遠程主機用戶@遠程主機IP:遠程主機目錄的絕對路徑>?
node1 為當前主機,node2 為遠程主機??
先在 node1 主機上建立 lxt 目錄和 lee 文件,并在 lxt 目錄里建立三個 test 文件。?
然后在 node1 復制 lee 文件到 node2 ,同意建立連接,隨后輸入 node2 主機的密碼,即可復制成功。
?由圖可知,L3 的桌面出現了 lee 文件,即復制成功。
將 node1 主機的 lxt 目錄及里面的文件復制到 node2 主機桌面(第一次傳輸輸入過密碼,后面傳輸可直接 Enter 健跳過)。?
命令說明:
scp lee root@192.168.10.131:/root/Desktop | 復制文件 |
scp -r lxt root@192.168.10.131:/root/Desktop | -r:遞歸,復制目錄,目錄傳輸時,里面的文件也一塊傳輸 |
scp -q?lxt root@192.168.10.131:/root/Desktop | -q:傳輸文件時不顯示進度 |
2)把遠程文件或目錄復制到當前主機的當前目錄?
命令格式:?scp [-r] <遠程主機用戶@遠程主機ip:遠程主機目錄的絕對路徑> <本地文件或目錄>
先將 node1 主機的桌面清空,隨后將 node2 主機的文件和目錄分別復制到當前主機?。
命令說明:?
scp root@192.168.10.131:/root/Desktop/lee . | 將遠程文件復制到當前主機的當前目錄 |
scp -r root@192.168.10.131:/root/Desktop/lxt . | 將遠程目錄復制到當前主機的當前目錄 |
命令最后的 . 表示當前目錄,相當于 /root/Deaktop |
2.rsync
rsync 是一個強大且高效的文件同步和傳輸工具,既可以通過 SSH 協議進行安全傳輸,也能使用rsync 守護進程( rsync daemon )進行傳輸,不僅能實現本地和遠程主機間的文件傳輸,還具備強大的增量傳輸功能。rsync 的效率比 scp 的效率更高些,但是 rsync 的數據完整性和可靠性相對于 scp 而言要差一些(下面以復制目錄為例) 。
?實時監控 node2 中的 mnt 目錄,并清除里面所有的內容,便于觀察里面的變化。
在 mnt 目錄里建立 leefile1 - leefile5 五個文件,并將權限改為 777(即 rwnrwnrwn),以及其所有文件的擁有者和擁有組改為 lee ,再建立一個鏈接
查看 mnt 目錄中所有文件及鏈接的信息
1)把本地文件或目錄同步到遠程主機
命令格式:
rsync [-rlptogD]?<本地文件或目錄> <遠程主機用戶@遠程主機IP:遠程主機目錄的絕對路徑>?
同步目錄和目錄中的內容:?
將 node1 中的mnt 目錄的內容同步到 node2 中。
mnt 目錄及其所有文件都能同步到 node2(忽略了鏈接)。
只同步目錄里面的內容:
首先還是先清空 node2 中的mnt 目錄里面的內容。?
?將 node1 中的 mnt 目錄的內容同步到 node2 中。
這時 node2 中只出現了目錄里面的內容,沒有目錄本身(忽略了鏈接)。
同步普通文件:
-l:同步 node1 的鏈接到 node2。
-p:同步 node1 的權限到 node2。?
-o:同步 node1 的擁有者到 node2。?
-g:同步 node1 的擁有組到 node2。?
-t:同步 node1 的時間戳到 node2。?
因為 node2 中沒有 lee 這個身份,所以擁有者和擁有組顯示數字(用戶的真實身份是數字)??
同步特殊文件:
特殊文件例子:/dev/pts/ 字符設備
-D:同步node1 的設備文件到 node2。
rsync命令總結說明
rsync -r /mnt?root@192.168.10.131: /mnt | 只同步本機的目錄和目錄中的內容到遠程主機 |
rsync -r /mnt/ root@192.168.10.131: /mnt | 只同步本機的目錄中的內容到遠程主機 |
rsync -lr /mnt/ root@192.168.10.131: /mnt | 同步本機的鏈接到遠程主機 |
rsync -pr /mnt/ root@192.168.10.131: /mnt | 同步本機的權限到遠程主機 |
rsync -or /mnt/ root@192.168.10.131: /mnt | 同步本機的擁有者到遠程主機 |
rsync -gr /mnt/ root@192.168.10.131: /mnt | 同步本機的擁有組到遠程主機 |
rsync -tr /mnt/ root@192.168.10.131: /mnt | 同步本機的時間戳到遠程主機 |
rsync -Dr /mnt/ root@192.168.10.131: /mnt | 同步本機的設備文件到遠程主機 |
2)把遠程文件或目錄同步到當前主機的當前目錄
命令格式:
rsync [-rlptogD] <遠程主機用戶@遠程主機IP:遠程主機目錄的絕對路徑> <本地文件或目錄>
過程與將當前主機的文件或目錄同步到遠程主機的過程相同,只是命令中的文件或目錄放在了最后,下面僅展示命令示例總結說明:
rsync -r?root@192.168.10.131: /mnt /mnt | 只同步遠程主機的目錄和目錄中的內容到本機 |
rsync -r /mnt/ root@192.168.10.131: /mnt /mnt/ | 只同步遠程主機的目錄中的內容到本機 |
rsync -lr root@192.168.10.131: /mnt /mnt/ | 同步遠程主機的鏈接到本機 |
rsync -pr root@192.168.10.131: /mnt /mnt/ | 同步遠程主機的權限到本機 |
rsync -or root@192.168.10.131: /mnt /mnt/ | 同步遠程主機的擁有者到本機 |
rsync -gr root@192.168.10.131: /mnt /mnt/ | 同步遠程主機的擁有組到本機 |
rsync -tr root@192.168.10.131: /mnt /mnt/ | 同步遠程主機的時間戳到本機 |
rsync -Dr root@192.168.10.131: /mnt /mnt/ | 同步遠程主機的設備文件到本機 |
?三、加速文件傳輸的方法——歸檔與壓縮
1.歸檔?
歸檔是指將多個文件或目錄收集整合到一個單獨的文件中,這個單獨的文件就被稱為歸檔文件。歸檔的 主要目的是方便對大量文件進行管理、備份和傳輸。?
將node1 中的?etc 目錄及其文件按照正常速度傳輸到 node2 的話,目錄中的內容會一個個傳輸,速度較慢。
首先在 node1 將需要發送的內容打包成一個 .tar 文件,但不進行壓縮。通過查看文件權限,可知已將 etc 目錄打包成 etc.tar 文件。
再次將 node1 需要發送的內容傳輸到 node2,此時顯示出來的發送內容只有一條,速度也提升了。
查看 etc 目錄和 etc.tar 文件占用內存,是相同的, etc.tar 文件內存少了一點的原因是:etc 目錄里有些內容是鏈接,其中的文件會有重復,所以目錄占用內存較多。
②c:創建????????????????f:指定文件或目錄名稱
創建 abc.tar 歸檔文件,并將 etc 目錄和 mnt 目錄打包在一起。
③x:解檔 abc.tar 歸檔文件。
④--get:指定解檔 abc.tar 歸檔文件中的?mnt 目錄。
⑤r:將建立的 file 文件添加到 abc.tar 歸檔文件中,然后查看 abc.tar 歸檔文件的最后三行,顯示有 file 文件,說明添加成功。
⑥--delete:刪除 abc.tar 歸檔文件中的 file 文件,同樣查看 abc.tar 文件的最后三行,沒有顯示?file 文件,說明刪除成功。
⑦-C:先查看 pub 目錄里面的內容,只有 leefile 文件,然后將 abc.tar 歸檔文件解檔到 pub 目錄中,隨后再次查看 pub 目錄, abc.tar 歸檔文件中的 etc 目錄和 mnt 目錄都解檔解檔到 pub 目錄中。
歸檔命令總結說明
tar cf etc.tar /etc/ | 創建 etc.tar 歸檔文件,將 etc 目錄打包 |
tar cf abc.tar /etc/ /mnt/ | 創建 abc.tar 歸檔文件,將 etc 目錄和 mnt 目錄一起打包 |
tar xf abc.tar | 將 abc.tar 歸檔文件解檔 |
tar rf abc.tar file | 將 file 文件添加到 abc.tar 歸檔文件 |
tar tf abc.tar | tail -n 3 | 查看 abc.tar 歸檔文件的最后三行(內容多,可只查看規定的幾行內容) |
tar f abc.tar --get /mnt/ | 指定解檔 abc.tar 歸檔文件中的?mnt 目錄 |
tar f abc.tar --delete file | 刪除 abc.tar 歸檔文件中的 file 文件 |
tar xf abc.tar -C /pub/ | 將 abc.tar 歸檔文件解檔到指定的 pub 目錄 |
2.壓縮
壓縮文件可以減少存儲空間的占用,提升數據傳輸的效率。壓縮的文件越小,越利于文件傳輸,壓縮速度也越慢。壓縮速度快慢除了跟壓縮比例相關,更多的是對 CPU 的要求比較高,CPU 快,壓縮速度也快。
Linux 默認支持壓縮格式 | zip 格式 | gzip 格式 | bzip2 格式 | xz 格式 |
壓縮 格式 說明 | 它可以將多個文件和目錄壓縮到一個文件中,并且支持跨平臺使用,方便在不同操作系統之間傳輸文件。zip 格式還支持加密功能,可以對壓縮文件中的內容進行加密保護。 | 以 .gz 為擴展名,是 Linux 系統中廣泛使用的壓縮格式。它使用 gzip 算法進行壓縮,具有較 快的壓縮和解壓縮速度,適用于大多數日常文件的壓縮。例如,許多軟件包在發布時會采用 .gz 壓縮格式。 | 文件擴展名為 .bz2 。這種格式采用 bzip2 算法,壓縮率相對較高,但壓縮和解壓縮速度比 gz格式慢一些。在需要更高壓縮比的情況下,如對大型數據文件或備份文件進行壓縮時,常采 用 .bz2 格式。 | 以.xz為擴展名,使用 xz 算法進行壓縮。它具有極高的壓縮率,能最大程度地減小文件體積,但壓縮和解壓縮過程相對較慢,通常用于對空間要求極為苛刻的場景,如長期存儲的大量數據歸檔。 |
先清空桌面的文件,重新建立 etc.tar 歸檔文件,打包 etc 目錄。然后查看 etc.tar 歸檔文件和 etc 目錄占用內存大小。
1)zip格式壓縮
zip -r etc.tar.zip etc.tar? ? ? zip 格式壓縮文件
unzip etc.tar.zip?? ? ? ? ? ? ? ??zip 格式解壓縮
將 etc.tar 歸檔文件壓縮成 zip 格式,隨后查看壓縮后的占用內存,只有7.7M。?
解壓 etc.tar.zip,便可得回 etc.tar 歸檔文件。?
2)gzip 格式
gzip etc.tar??? ? ? ? ? ? ??gzip 格式壓縮文件
gunzip etc.tar.gz? ? ? ?gzip 格式解壓縮
將 etc.tar 歸檔文件壓縮成 gzip 格式,隨后查看壓縮后的占用內存,只有6.3M。
解壓 etc.tar.gz,便可得回 etc.tar 歸檔文件。
?3)bzip2 格式
bzip2 etc.tar????????????????bzip2 格式壓縮
bunzip etc.tar.bz2? ? ? ?bzip2 格式解壓縮
將 etc.tar 歸檔文件壓縮成 bzip2 格式,隨后查看壓縮后的占用內存,只有5.4M。?
解壓 etc.tar.bz2,便可得回 etc.tar 歸檔文件。
4)xz 格式?
xz etc.tar?? ? ? ? ? ? ? ???xz 格式壓縮
unxz etc.tar.xz? ? ? ? ?xz 格式解壓縮
將 etc.tar 歸檔文件壓縮成 xz 格式,隨后查看壓縮后的占用內存,只有4.5M。
解壓 etc.tar.xz,便可得回 etc.tar 歸檔文件。?
3.歸檔壓縮一步完成
壓縮只針對于文本,涉及圖片或視頻不支持,因為它們之間的解碼不同。
將 etc?目錄一步完成歸檔壓縮(只有 gzip、bzip2、xz 格式才能歸檔壓縮一步完成,tar 命令不支持 zip 格式)。
分別解壓etc.tar.gz、etc.tar.bz2、etc.tar.xz,便可得回 etc 目錄。