Linux——du和sort命令的使用



du和sort命令的使用

du 命令:

du [選項][文件]
du命令用來查看目錄或文件所占用磁盤空間的大小。常用選項組合為:du -sh

一、du的功能:
  很明顯,與df不同,它用來查看文件或目錄所占用的磁盤空間的大小。
二、du常用的選項:
  -h:以人類可讀的方式顯示
  -a:顯示目錄占用的磁盤空間大小,還要顯示其下目錄和文件占用磁盤空間的大小
  -s:顯示目錄占用的磁盤空間大小,不要顯示其下子目錄和文件占用的磁盤空間大小
  -c:顯示幾個目錄或文件占用的磁盤空間大小,還要統計它們的總和
  --apparent-size:顯示目錄或文件自身的大小
  -l :統計硬鏈接占用磁盤空間的大小
  -L:統計符號鏈接所指向的文件占用的磁盤空間大小
  1、du -h:這個就不多說了。
  2、du -a:使用此選項時,顯示目錄和目錄下子目錄和文件占用磁盤空間的大小。

  

  • 可以看出,默認情況下du只顯示download目錄占用磁盤空間的大小,而使用-a選項后,它不僅顯示了目錄(最后一行),而且顯示了目錄下各個文件占用磁盤空間的大小。

三、du -s:使用此選項時,du只顯示目錄所占用磁盤空間的大小,而不顯示其下子目錄和文件占用磁盤空間的信息。

  

  • 默認情況下,du不顯示目錄下文件占用磁盤空間的信息,但它會顯示其下子目錄占用磁盤空間的信息;而使用-s選項以后,只顯示xx目錄占用磁盤空間的大小

四、du --apparent-size:顯示文件或目錄自身大小,而不是它們占用的磁盤空間大小。文件或目錄占用磁盤空間的大小與它們自身大小有時候並非完全一致;這種現象非linux所獨有,windows里也是如此。我們看這個選項的幫助文檔的解釋:The apparent size of a file is the number of bytes reported by wc –c regular files ,or more generally, ls –l –block-size=1 or stat –format=%s.For example, a file containing the word zoo with no newline would, of course, have an apparent size of 3. Such a small file may require anywhere from 0 to 16 kib or more of disk space, depending on the type and configuration of the file system on which the file resides.
  這段話給出了文件或目錄自身大小與占用磁盤空間大小的區別。他下面舉出了一個更加誇張的例子,這里就不把它寫出來了。我們知道了:wc或ls --block-size顯示的是其自身大小,而du給出的則是占用的磁盤空間的大小。

 五、du -c:使用此選項時,不僅顯示幾個文件或目錄各自占用磁盤空間的大小,還統計它們的總和。

如圖所示,加上-c選項后,du不僅顯示兩個目錄各自占用磁盤空間的大小,還在最后一行統計它們的總和。

  六、du -l:這個選項主要是針對硬鏈接。在統計目錄占用磁盤空間大小時,-l選項會把硬鏈接也統計進來。幫助文檔是這樣解釋的:Count the size of all files,even if they have appeared already(as a hard link)。

  

  • 我們在download目錄下建立一個硬鏈接,指向本目錄下的一個文件。不使用-l選項時,du發現硬鏈接指向本目錄下的文件,於是自動忽略該鏈接文件,以免造成重復統計;使用-l選項,du才會把硬鏈接文件也統計進來。
    七、du
    -L:這個選項主要是針對符號鏈接。它會把符號鏈接所指向的文件占用磁盤空間的大小也統計進來。幫助文檔是這樣解釋的:Dereference symbolic links(show the disk space used by the file or directory that
    the link points to instead of the space used by the link)

查看目錄下所有文件的大小並按照大小排序
du -sh * | sort -rh

sort 命令:

sort -n -k2 -r(其中:-n代表:以數字排序,k2代表:按第二列的值排序,r代表:逆序)

scp的用法:

cp 在本機復制文件,這個命令我們經常使用,但是跨機器復制cp就不行了,scp可以跨機器復制文件,示例:

scp -Crvp -l 1 test/ test@10.16.88.88:/usr/local
test/ 源文件 test@10.16.88.88:/usr/local 目標地址

參數解釋:
-C(大寫): 允許傳輸過程中壓縮,可提高效率
-r: 遞歸傳輸整個目錄 (如果傳輸的是文件則不需要整個參數)
-p: 保留源文件的修改時間和訪問權限等
-l: limit限制傳輸帶寬 kb/s,(-l 1)表示限制每秒1kb的傳輸效率
-v: 傳輸詳情 (調試可以使用)

總結:

跨主機傳輸文件;
scp -P 端口號 源文件  用戶名@IP地址:放到目標主機的那個位置
scp -P 22 nginx.tar.gz root@192.168.174.128:/tmp
跨主機傳輸目錄:
scp -P 22 -r nginx root@192.168.174.128:/tmp/

rsync

yum -y install rsync  
#啟動rsync服務
systemctl start rsyncd.service
systemctl enable rsyncd.service

#檢查是否已經成功啟動
netstat -lnp|grep 873

rsync命令也可以實現跨機器復制,既然都有了scp,我們還需要用到rsync嗎?當然有應用場景:
1.增量備份
2.在拷貝目錄時,排除掉目錄中的某些文件
這兩個場景scp滿足不了
示例:

rsync -arz --exclude 'logs' --bwlimit=1 test/ test@10.17.65.23:/usr/local/test
1
參數解釋:
-r : 遞歸傳輸目錄下所有文件
-a : 歸檔模式,保持所有文件屬性
-z : 傳輸進行壓縮處理
–exclude=PATTERN 指定排除不需要傳輸的文件模式
–exclude-from=FILE 排除FILE中指定模式的文件
–bwlimit :限制I/O帶寬 KB/s

區別
rsync默認是只拷貝有變動的文件,scp是全量拷貝,所有rsync很適合做增量備份。
scp是加密傳輸,rsync不是。

總結:

rsync -P 22 -r nginx root@192.168.174.130:/tmp/

復制文件目錄

cp [option] 源文件 目標文件

[root@node01 ~]# cp /linux/1.txt /windows/

[root@node01 ~]# cp /linux/2.txt /windows/2.jpg

選項:

-r 復制目錄時

[root@node01 ~]# cp -r /linux/ /windows/

移動文件目錄

mv 源文件 目標文件

[root@node01 ~]# mv /linux/3.txt /linux/33.txt		>>>重命名


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM