(四)档案与目录管理

 1.首先必须熟练掌握几个命令:
1.pwd [-P]

-P: 显示出真实路径,而非链接路径,如在/var/mail中pwd -P 会显示 /var/spool/mail
2.mkdir [-mp]
-m: 在创建目录时直接设定权限,而不是由umask决定
-p: 递归创建目录(目录不存在时自动创建)
3.rmdir [-p]
rmdir只能删除空目录(rm -fr 可删除非空目录)
-p: 递归删除非空目录
4.ls
  1. [root@www ~]# ls [-aAdfFhilnrRSt] 目录名称
  2. [root@www ~]# ls [--color={never,auto,always}] 目录名称
  3. [root@www ~]# ls [--full-time] 目录名称
  4. 选项与参数:
  5. -a :全部的档案,连同隐藏档( 开头为 . 的档案) 一起列出来(常用)
  6. -A :全部的档案,连同隐藏档,但不包括 . 与 .. 这两个目录
  7. -d :仅列出目录本身,而不是列出目录内的档案资料(常用)
  8. -f :直接列出结果,而不进行排序 (ls 预设会以档名排序!)
  9. -F :根据档案、目录等资讯,给予附加资料结构,例如:
  10. *:代表可执行档; /:代表目录; =:代表 socket 档案; |:代表 FIFO 档案;
  11. -h :将档案容量以人类较易读的方式(例如 GB, KB 等等)列出来;
  12. -i :列出 inode 号码,inode 的意义下一章将会介绍;
  13. -l :长资料串列出,包含档案的属性与权限等等资料;(常用)
  14. -n :列出 UID 与 GID 而非使用者与群组的名称 (UID与GID会在帐号管理提到!)
  15. -r :将排序结果反向输出,例如:原本档名由小到大,反向则为由大到小;
  16. -R :连同子目录内容一起列出来,等于该目录下的所有档案都会显示出来;
  17. -S :以档案容量大小排序,而不是用档名排序;
  18. -t :依时间排序,而不是用档名。
  19. --color=never :不要依据档案特性给予颜色显示;
  20. --color=always :显示颜色
  21. --color=auto :让系统自行依据设定来判断是否给予颜色
  22. --full-time :以完整时间模式 (包含年、月、日、时、分) 输出
  23. --time={atime,ctime} :输出 access 时间或改变权限属性时间 (ctime)
  24. 而非内容变更时间 (modification time)
5.cp
  1. [root@www ~]# cp [-adfilprsu] 来源档(source) 目标档(destination)
  2. [root@www ~]# cp [options] source1 source2 source3 .... directory
  3. 选项与参数:
  4. -a :相当于 -pdr 的意思,至于 pdr 请参考下列说明;(常用)
  5. -d :若来源档为连结档的属性(link file),则复制连结档属性而非档案本身;
  6. -f :为强制(force)的意思,若目标档案已经存在且无法开启,则移除后再尝试一次;
  7. -i :若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用)
  8. -l :进行硬式连结(hard link)的连结档建立,而非复制档案本身;
  9. -p :连同档案的属性一起复制过去,而非使用预设属性(备份常用);
  10. -r :递回持续复制,用于目录的复制行为;(常用)
  11. -s :复制成为符号连结档 (symbolic link),亦即‘捷径’档案;
  12. -u :若 destination 比 source 旧才更新 destination !
  13. 最后需要注意的,如果来源档有两个以上,则最后一个目的档一定要是‘目录’才行!
注意复制目录的情况。
还有,注意下面这种情况(不是特别明白,为啥用户和组名改变了?)
[vbird@www ~]$ cp -a /var/log/wtmp /tmp/vbird_wtmp 
[vbird@www ~]$ ls -l /var/log/wtmp /tmp/vbird_wtmp
-rw-rw-r-- 1 vbird vbird 96384 9月 24 11:54 /tmp/vbird_wtmp
  -rw-rw-r-- 1 root utmp 96384 9月 24 11:54 /var/log/wtmp

由于vbird的身份并不能随意修改档案的拥有者与群组,因此虽然能够复制wtmp的相关权限与时间等 属性, 但是与拥有者、群组相关的,原本vbird身份无法进行的动作,即使加上 -a 选项,也是无法达 成完整 复制权限的!

在复制时,你必须要清楚的了解到:
  • 是否需要完整的保留来源档案的资讯?
  • 来源档案是否为连结档 (symbolic link file)?
  • 来源档是否为特殊的档案,例如 FIFO, socket 等?
  • 来源档是否为目录?
6.rm
rm [-fir] 档案或目录
选项与参数: 
-f :就是 force 的意思,忽略不存在的档案,不会出现警告讯息; 
-i :互动模式,在删除前会询问使用者是否动作 
-r :递回删除啊!最常用在目录的删除了!
7.mv
mv [-fiu] source destination
mv [options] source1 source2 source3 .... directory
选项与参数:
-f :force 强制的意思,如果目标档案已经存在,不会询问而直接覆盖;
-i :若目标档案 (destination) 已经存在时,就会询问是否覆盖!
-u :若目标档案已经存在,且 source 比较新,才会更新 (update)
注意
8. touch touch [-acdmt] file
选项与参数:
-a :仅修订 access time;
-c :仅修改档案的时间,若该档案不存在则不建立新档案;
-d :后面可以接欲修订的日期而不用目前的日期,也可以使用 --date="日期或时间"
-m :仅修改 mtime ;
-t :后面可以接欲修订的时间而不用目前的时间,格式为[YYMMDDhhmm]
 
2.$PATH
环境变量PATH,执行的命令从中寻找,所以普通用户无法执行类型ifconfig命令(在sbin中),但是,利用完整路径普通用户还是可以执行ifconfig(/sbin/iconfig),因为普通用户也有它的执行权限。
执行当前目录中的程序时,需要加上./,因为当前目录(. )不在PATH中,那为什么不把它放进去呢(出于安全原因)
 
3.查看文档内容的命令
cat, tac, nl, more, less, tail, head,od 
注意不同命令的注重点。
 
4. umask
不同用户的umask是不同的,比如root的umask默认是0022,而普通用户的umask是0002.
目录和文件应用umask的方式不同,目录是777-umask, 文件是666-umask(不算第一位)
 
5.隐藏属性
chattr [+-=][ASacdistu] 档案或目录名称  选项与参数: 
+ :增加某一个特殊参数,其他原本存在参数则不动。 
- :移除某一个特殊参数,其他原本存在参数则不动。
 = :设定一定,且仅有后面接的参数 
 A :当设定了 A 这个属性时,若你有存取此档案(或目录)时,他的存取时间 atime 将不会被修改,可避免I/O较慢的机器过度的存取磁碟。这对速度较慢的电脑有帮助 
S :一般档案是非同步写入磁碟的,如果加上 S 这个 属性时,当你进行任何档案的修改,该更动会‘同步’写入磁碟中。 
a :当设定 a 之后,这个档案将只能增加资料,而不能删除也不能修改资料,只有root 才能设定这个属性。
c :这个属性设定之后,将会自动的将此档案‘压缩’,在读取的时候将会自动解压缩, 但是在储存的时候,将会先进行压缩后再储存(看来对于大档案似乎蛮有用的!) 
d :当 dump 程序被执行的时候,设定 d 属性将可使该档案(或目录)不会被 dump 备份
i :这个 i 可就很厉害了!他可以让一个档案‘不能被删除、改名、设定连结也无法 写入或新增资料!’对于系统安全性有相当大的助益!只有 root 能设定此属性 
s :当档案设定了 s 属性时,如果这个档案被删除,他将会被完全的移除出这个硬碟 空间,所以如果误删了,完全无法救回来了喔!
u :与 s 相反的,当使用 u 来设定档案时,如果该档案被删除了,则资料内容其实还 存在磁碟中,可以使用来救援该档案喔! 注意:属性设定常见的是 a 与 i 的设定值,而且很多设定值必须要身为 root 才能设定

lsattr [-adR] 档案或目录 
选项与参数:
 -a :将隐藏档的属性也秀出来; 
-d :如果接的是目录,仅列出目录本身的属性而非目录内的档名; 
-R :连同子目录的资料也一并列出来!

6. 档案特殊权限: SUID, SGID, SBIT
SUID: 当 s 这个标志出现在档案拥有者的 x 权限上时,例如刚刚提到的 /usr/bin/passwd 这个档案的权限状态:‘-rwsr-xr-x’,此时就被称为 Set UID,简称为 SUID 的特殊权限
  • SUID 权限仅对二进位程式(binary program)有效, 不能够用在 shell script 上面,对于目录也是无效的
  • 执行者对于该程式需要具有 x 的可执行权限;
  • 本权限仅在执行该程式的过程中有效 (run-time);
  • 执行者将具有该程式拥有者 (owner) 的权限。
比如passwd命令。
SGID:s 在群组的 x 时称为 Set GID, SGID。

与 SUID 不同的是,SGID 可以针对档案或目录来设定!如果是对档案来说, SGID 有如下的功能:

  • SGID 对二进位程式有用;
  • 程式执行者对于该程式来说,需具备 x 的权限;
  • 执行者在执行的过程中将会获得该程式群组的支援!

SGID 也能够用在目录上,当一个目录设定了 SGID 的权限后,他将具有如下的功能:

  • 使用者若对于此目录具有 r 与 x 的权限时,该使用者能够进入此目录;
  • 使用者在此目录下的有效群组(effective group)将会变成该目录的群组;
  • 用途:若使用者在此目录下具有 w 的权限(可以新建档案),则使用者所建立的新档案,该新档案的群组与此目录的群组相同。

SBIT: SBIT 目前只针对目录有效, SBIT 对于目录的作用是:

  • 当使用者对于此目录具有 w, x 权限,亦即具有写入的权限时;
  • 当使用者在该目录下建立档案或目录时,仅有自己与 root 才有权力删除该档案
完整的权限是4位的,后三位是普通权限,第一位就是留给SUID(4), SGID(2)和SBIT(1)的。
注意一点,当文件的user, group, other都没有x权限时,设置这3个参数将得到大写的S或T,是空的。
 
7.file

如果你想要知道某个档案的基本资料,例如是属于 ASCII 或者是 data 档案,或者是 binary , 且其中有没有使用到动态函式库 (share library) 等等的资讯,就可以利用 file 这个指令来检阅

8.whcih

which [-a] command 选项或参数: -a :将所有由 PATH 目录中可以找到的指令均列出,而不止第一个被找到的指令名称

这个命令是在PATH目录中查找。
类似的命令有type(bash内置命令)
 
9.whereis
whereis [-bmsu] 档案或目录名

选项与参数:

 -b :只找 binary 格式的档案 
-m :只找在说明档 manual 路径下的档案 
-s :只找 source 来源档案 
-u :搜寻不在上述三个项目当中的其他特殊档案 

10.locate
locate [-ir] keyword 选项与参数: 
-i :忽略大小写的差异; 
-r :后面可接正规表示法的显示方式 
locate是根据/var/lib/mlocate/mlocate.db这个数据库来搜索的。这个数据库每天自动更新一次,也可以用updatedb 指令自动更新。它根据 /etc/updatedb.conf 的设定去搜寻系统硬碟内的档名,并更新 /var/lib/mlocate 内的资料库档案

11.find
find是一个极其强大的命令,用法比较复杂。
find [PATH] [option] [action] 选项与参数: 
1. 与时间有关的选项:共有 -atime, -ctime 与 -mtime ,以 -mtime 说明 
 -mtime n :n 为数字,意义为在 n 天之前的‘一天之内’被更动过内容的档案; 
 -mtime +n :列出在 n 天之前(不含 n 天本身)被更动过内容的档案档名; 
 -mtime -n :列出在 n 天之内(含 n 天本身)被更动过内容的档案档名。
-newer file :file 为一个存在的档案,列出比 file 还要新的档案档名 
2. 与使用者或群组名称有关的参数: 
 -uid n :n 为数字,这个数字是使用者的帐号 ID,亦即 UID ,这个 UID 是记录在 /etc/passwd 里面与帐号名称对应的数字。这方面我们会在第四篇介绍。
 -gid n :n 为数字,这个数字是群组名称的 ID,亦即 GID,这个 GID 记录在 /etc/group,相关的介绍我们会第四篇说明~ 
 -user name :name 为使用者帐号名称喔!例如 dmtsai -group name:name 为群组名称喔,例如 users ;
 -nouser :寻找档案的拥有者不存在 /etc/passwd 的人!
 -nogroup :寻找档案的拥有群组不存在于 /etc/group 的档案! 当你自行安装软体时,很可能该软体的属性当中并没有档案拥有者, 这是可能的!在这个时候,就可以使用 -nouser 与 -nogroup 搜寻。
3. 与档案权限及名称有关的参数:
 -name filename:搜寻档案名称为 filename 的档案; 
 -size [+-]SIZE:搜寻比 SIZE 还要大(+)或小(-)的档案。这个 SIZE 的规格有: c: 代表 byte, k: 代表 1024bytes。所以,要找比 50KB 还要大的档案,就是‘ -size +50k ’ 
 -type TYPE :搜寻档案的类型为 TYPE 的,类型主要有:一般正规档案 (f), 装置档案 (b, c), 目录 (d), 连结档 (l), socket (s), 及 FIFO (p) 等属性。
-perm mode :搜寻档案权限‘刚好等于’ mode 的档案,这个 mode 为类似 chmod 的属性值,举例来说, -rwsr-xr-x 的属性为 4755 ! 
 -perm -mode :搜寻档案权限‘必须要全部囊括 mode 的权限’的档案,举例来说, 我们要搜寻 -rwxr--r-- ,亦即 0744 的档案,使用 -perm -0744, 当一个档案的权限为 -rwsr-xr-x ,亦即 4755 时,也会被列出来, 因为 -rwsr-xr-x 的属性已经囊括了 -rwxr--r-- 的属性了。
 -perm +mode :搜寻档案权限‘包含任一 mode 的权限’的档案,举例来说,我们搜寻 -rwxr-xr-x ,亦即 -perm +755 时,但一个档案属性为 -rw------- 也会被列出来,因为他有 -rw.... 的属性存在! 

4. 额外可进行的动作:
 -exec command :command 为其他指令,
-exec 后面可再接额外的指令来处理搜寻到 的结果。
 -print :将结果列印到萤幕上,这个动作是预设动作! 
例如:find / -perm +7000 -exec ls -l {} \;find / -perm +7000 得到的结果将会装进{}中,然后执行-exec和\;之间的命令。

 

你可能感兴趣的:(压缩,备份,休闲,磁盘,档案与目录管理)