Linux——du和sort命令的使⽤
du和sort命令的使⽤
du 命令:
du [选项][⽂件]
linux中netstat命令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 li
nk)。
我们在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 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 / /windows/
[root@node01 ~]# cp / /windows/2.jpg
选项:
-r 复制⽬录时
[root@node01 ~]# cp -r /linux/ /windows/
移动⽂件⽬录
mv 源⽂件⽬标⽂件
[root@node01 ~]# mv / /  >>>重命名