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		>>>重命名
有志者,事竟成,破釜沉舟,百二秦关终属楚; 苦心人,天不负,卧薪尝胆,三千越甲可吞吴。 想到与得到中间还有两个字——做到。
原文地址:https://www.cnblogs.com/huoxc/p/13733108.html