Linux:du和sort命令的使用

一、du 命令

du [选项][文件]
du命令用来查看目录或文件所占用磁盘空间的大小。常用选项组合为:du -sh

1、du的功能:

  很明显,与df不同,它用来查看文件或目录所占用的磁盘空间的大小。

2、du常用的选项:

  -h:以人类可读的方式显示
  -a:显示目录占用的磁盘空间大小,还要显示其下目录和文件占用磁盘空间的大小
  -s:显示目录占用的磁盘空间大小,不要显示其下子目录和文件占用的磁盘空间大小
  -c:显示几个目录或文件占用的磁盘空间大小,还要统计它们的总和
  --apparent-size:显示目录或文件自身的大小
  -l :统计硬链接占用磁盘空间的大小
  -L:统计符号链接所指向的文件占用的磁盘空间大小
  

3、示例

       1、du -h:这个就不多说了。
  2、du -a:使用此选项时,显示目录和目录下子目录和文件占用磁盘空间的大小。

       可以看出,默认情况下du只显示download目录占用磁盘空间的大小,而使用-a选项后,它不仅显示了目录(最后一行),而且显示了目录下各个文件占用磁盘空间的大小。

        3、du -s:使用此选项时,du只显示目录所占用磁盘空间的大小,而不显示其下子目录和文件占用磁盘空间的信息。

  默认情况下,du不显示目录下文件占用磁盘空间的信息,但它会显示其下子目录占用磁盘空间的信息;而使用-s选项以后,只显示xx目录占用磁盘空间的大小

        4、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给出的则是占用的磁盘空间的大小。

        5、du -c:使用此选项时,不仅显示几个文件或目录各自占用磁盘空间的大小,还统计它们的总和。

如图所示,加上-c选项后,du不仅显示两个目录各自占用磁盘空间的大小,还在最后一行统计它们的总和。

        6、du -l:这个选项主要是针对硬链接。在统计目录占用磁盘空间大小时,-l选项会把硬链接也统计进来。帮助文档是这样解释的:Count the size of all files,even if they have appeared already(as a hard link)。

  我们在download目录下建立一个硬链接,指向本目录下的一个文件。不使用-l选项时,du发现硬链接指向本目录下的文件,于是自动忽略该链接文件,以免造成重复统计;使用-l选项,du才会把硬链接文件也统计进来。

        7、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)

        8、查看目录下所有文件的大小并按照大小排序
             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.1.128:/tmp
跨主机传输目录:
scp -P 22 -r nginx root@192.168.1.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@192.172.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.1.130:/tmp/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术探索者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值