linux运维实际项目,Linux运维系统工程师系列---07

文件管理

链接:

两种:

硬链接:

软链接:符号链接(类似windows里的快捷方式)

硬链接:

[root@server254 ~]# mkdir hlink

[root@server254 ~]# ll -d hlink/

drwxr-xr-x. 2 root root 4096 Oct 16 15:04 hlink/

上面的2就是表示硬链接数是2。

[root@server254 ~]# mkdir hlink

[root@server254 ~]# ll -d hlink/

drwxr-xr-x. 2 root root 4096 Oct 16 15:04 hlink/

[root@server254 ~]# /root/hlink/^C

[root@server254 ~]# cd hlink/

[root@server254 hlink]# ls -a

.  ..

2 :   /root/hlink

/root/hlink/.

[root@server254 hlink]# mkdir lk

[root@server254 hlink]# ll -d /root/hlink/

drwxr-xr-x. 3 root root 4096 Oct 16 15:07 /root/hlink/

3:/root/hlink

/root/hlink/.

/root/hlink/lk/..

[root@server254 hlink]# cd lk/

[root@server254 lk]# ls -a

.  ..

[root@server254 lk]# pwd

/root/hlink/lk

——人为创建硬链接:

ln命令:

[root@server254 hlink]# touch hl

[root@server254 hlink]# ll hl

-rw-r--r--. 1 root root 0 Oct 16 15:15 hl

[root@server254 hlink]# ln hl /test/hard

[root@server254 hlink]# ll hl

-rw-r--r--. 2 root root 0 Oct 16 15:15 hl

[root@server254 test]# ls -li hard

1197063 -rw-r--r--. 2 root root 0 Oct 16 15:15 hard

[root@server254 test]# ls -li /root/hlink/

hl  lk/

[root@server254 test]# ls -li /root/hlink/hl

1197063 -rw-r--r--. 2 root root 0 Oct 16 15:15 /root/hlink/hl

i —— inode  i节点,里面存文件的一些属性等等。i节点相同表示同一个文件

软链接:  symbolic link(符号链接)

ln -s 源 目的

[root@server254 ~]# ln -s /root/hlink/ /test/sl

[root@server254 ~]# ll -d /test/sl

lrwxrwxrwx. 1 root root 12 Oct 16 15:23 /test/sl -> /root/hlink/

[root@server254 ~]# echo hello > /root/hlink/hello.txt

[root@server254 ~]# cd /test

test/  test1/

[root@server254 ~]# cd /test/sl

[root@server254 sl]# ll

total 8

-rw-r--r--. 1 root root    6 Oct 16 15:24 hello.txt

-rw-r--r--. 2 root root    0 Oct 16 15:15 hl

drwxr-xr-x. 3 root root 4096 Oct 16 15:12 lk

[root@server254 sl]# pwd

/test/sl

[root@server254 sl]# cd /root/hlink/

[root@server254 hlink]# pwd

/root/hlink

[root@server254 hlink]# ll

total 8

-rw-r--r--. 1 root root    6 Oct 16 15:24 hello.txt

-rw-r--r--. 2 root root    0 Oct 16 15:15 hl

drwxr-xr-x. 3 root root 4096 Oct 16 15:12 lk

[root@server254 hlink]# ll -d /test/sl

lrwxrwxrwx. 1 root root 12 Oct 16 15:23 /test/sl -> /root/hlink/

[root@server254 hlink]# ll -d /root/hlink

drwxr-xr-x. 3 root root 4096 Oct 16 15:27 /root/hlink

符号链接文件的大小不是文件实际大小,而是它所指向的路径的长度。/root/hlink/=12

软硬链接的区别:

1、软链接和源文件的权限不一样;硬链接与源文件的权限一致。

2、软链接可以跨分区;硬链接不可以跨分区。

3、软链接可以对目录做链接;硬链接不可以对目录做链接。

文件的搜索

which 可执行命令

——能够显示shell命令的绝对路径

[root@server254 ~]# which passwd

/usr/bin/passwd

[root@server254 ~]# which vim

/usr/bin/vim

[root@server254 ~]# which vi

/bin/vi

——仅能在PATH变量中指定的路径中搜索可执行的命令

PATH:命令的搜索路径

[root@server254 ~]# echo $PATH

/usr/lib/qt-3.3/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/root/bin

[root@server254 sgid]# which ugid_vi

/usr/bin/which: no ugid_vi in (/usr/lib/qt-3.3/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/root/bin)

——添加路径到PATH:

[root@server254 sgid]# PATH=$PATH:/sgid

[root@server254 sgid]# echo $PATH

/usr/lib/qt-3.3/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/root/bin:/sgid

[root@server254 sgid]# which ugid_vi

/sgid/ugid_vi

locate:

——通过文件名检索,检索到的东西都会存在数据库里

——局限性:有的文件系统、文件、目录不搜索

比如/tmp不搜索

[root@server254 ~]# locate vim

[root@server254 ~]# locate myvi明明有,但是没搜到,why?

是因为没有更新数据库

更新数据库的命令是:updatedb

[root@server254 sgid]# locate ugid_file

/sgid/ugid_file

[root@server254 sgid]# touch abcdefg   新建的文件,想要搜索到,需要先更新库

[root@server254 sgid]# locate abcdefg

[root@server254 sgid]# updatedb

[root@server254 sgid]# locate abcdefg

/sgid/abcdefg

数据库数据文件存放位置:

/var/lib/mlocate/mlocate.db

数据库的配置文件:

[root@server254 mlocate]# cat /etc/updatedb.conf

PRUNE_BIND_MOUNTS = "yes"

PRUNEFS = "9p afs anon_inodefs auto autofs bdev binfmt_misc cgroup cifs coda configfs cpuset debugfs devpts ecryptfs exofs fuse fusectl gfs gfs2 hugetlbfs inotifyfs iso9660 jffs2 lustre mqueue ncpfs nfs nfs4 nfsd pipefs proc ramfs rootfs rpc_pipefs securityfs selinuxfs sfs sockfs sysfs tmpfs ubifs udf usbfs vmhgfs"

PRUNENAMES = ".git .hg .svn"

PRUNEPATHS = "/afs /media /net /sfs /tmp /udev /var/cache/ccache /var/spool/cups /var/spool/squid /var/tmp"

由于配置文件设置,不能搜索/tmp路径下的文件

[root@server254 tmp]# cd suid/

[root@server254 suid]# ll

total 708

-rwsr-xr-x. 1 xh root 720792 Oct 16 10:09 myvi

-rw-rw-r--. 1 xh xh        9 Oct 16 10:11 xh.file

[root@server254 suid]# locate myvi

[root@server254 suid]# pwd

/tmp/suid

whereis:不常用,查找一个命令的二进制文件、源代码及有没有man手册

[root@server254 suid]# whereis ls

ls: /bin/ls /usr/share/man/man1p/ls.1p.gz /usr/share/man/man1/ls.1.gz

[root@server254 suid]# whereis pwd

pwd: /bin/pwd /usr/share/man/man1p/pwd.1p.gz /usr/share/man/man1/pwd.1.gz

find:很强大

全局搜索文件的,工作方式就是沿着文件层次结构遍历,找到符合条件的可以执行相应的操作。

1、基本语法格式:

find 路径 搜索选项 参数 执行的动作

2、基本例子:

[root@server254 test]# find /etc -name passwd

/etc/pam.d/passwd

/etc/passwd

看下查询效率

[root@server254 test]# mkdir -p /find/a/b/c/d/e/f/g/h/i/j/k/l/m/n

[root@server254 test]# touch /find/a/b/c/d/e/f/g/h/i/j/k/l/m/n/google.txt

[root@server254 test]# find /find -name google.txt

/find/a/b/c/d/e/f/g/h/i/j/k/l/m/n/google.txt

3、按条件搜索

1)-name:文件名搜索

[root@server254 ~]# find /etc/ -name ntp.conf

/etc/ntp.conf

通配符:*

搜索/etc下,所有以.conf结尾的文件

[root@server254 ~]# find /etc/ -name *.conf

-iname:文件名搜索,忽略大小写

[root@server254 find]# find . -iname passwd

./PASSWD

./passwd

2)-type:按照文件类型查找

b:块设备

c:字符设备

d:目录文件

l:软链接文件

s:套接字文件

p:管道文件

-:普通文件

查找/var目录下的软链接文件

[root@server254 ~]# find /var/ -type l

/var/lib/gdm/.pulse/e532a814bb540a5d385d60a300000019-runtime

/var/mail

[root@server254 ~]# ll `find /var/ -type l`

lrwxrwxrwx. 1 gdm  gdm  23 Oct  9 16:36 /var/lib/gdm/.pulse/e532a814bb540a5d385d60a300000019-runtime -> /tmp/pulse-o9Qfwuf6KGhj

lrwxrwxrwx. 1 root root 10 Oct  9 16:14 /var/mail -> spool/mail

[root@server254 ~]# find /tmp -type d

注意:搜索条件是可以同时使用多个的

例子:查找/find目录下,文件名为pass,文件类型是软链接的文件

[root@server254 ~]# cd /find/

[root@server254 find]# ln -s passwd pass

[root@server254 find]# find /find -name pass -type l

/find/pass

3)按照时间查找

什么时候会用到呢?增量备份。

-atime n:     表示n*24小时,也就是说以小时为单位的

-ctime n:

-mtime n:

+n:大于

-n:小于

n:n到n+1之间

-mtime 3:图

[root@server254 ~]# mkdir /test

[root@server254 ~]# cp /etc/passwd /test/

[root@server254 ~]# cp /etc/passwd /test/passwd1

[root@server254 ~]# cp /etc/passwd /test/passwd2

[root@server254 ~]# cp /etc/passwd /test/passwd3

[root@server254 ~]# date

Thu Oct 17 11:23:02 CST 2013

[root@server254 ~]# echo "hello 17" > /test/passwd

[root@server254 ~]# date -s "2013-10-18 11:24:00"

Fri Oct 18 11:24:00 CST 2013

[root@server254 ~]# echo "hello 18" > /test/passwd1

[root@server254 ~]# date -s "2013-10-19 11:24:20"

Sat Oct 19 11:24:20 CST 2013

[root@server254 ~]# echo "hello 19" > /test/passwd2

[root@server254 ~]# date -s "2013-10-20 11:25:00"

Sun Oct 20 11:25:00 CST 2013

[root@server254 ~]# echo "hello 20" > /test/passwd3

[root@server254 ~]# ll /test/passwd*

-rw-r--r--. 1 root root 9 Oct 17 11:23 /test/passwd

-rw-r--r--. 1 root root 9 Oct 18 11:24 /test/passwd1

-rw-r--r--. 1 root root 9 Oct 19 11:24 /test/passwd2

-rw-r--r--. 1 root root 9 Oct 20 11:25 /test/passwd3

——查找距离当前时间24小时之内的

[root@server254 ~]# find /test/ -mtime 0

/test/passwd3

——查找距离当前时间大于24*n小时,小于24*(n+1)小时之间被修改过的文件

这里是24~48之间

[root@server254 ~]# find /test -mtime 1

/test/passwd2

[root@server254 ~]# find /test/ -type f -mtime +1

/test/passwd1

/test/passwd

——查找的是距离当前时间(n+1)*24小时之前修改过的文件

[root@server254 ~]# find /test/ -type f -mtime +1

——查找的是距离当前时间n*24小时之内被修改的文件

[root@server254 ~]# find /test/ -type f -mtime -2

/test/passwd3

/test/passwd2

-amin n  ——以分钟为单位,minute(分钟)

-cmin n

-mmin n

[root@server254 ~]# ll /test/passwd*

-rw-r--r--. 1 root root 9 Oct 17 11:23 /test/passwd

-rw-r--r--. 1 root root 9 Oct 18 11:24 /test/passwd1

-rw-r--r--. 1 root root 9 Oct 19 11:24 /test/passwd2

-rw-r--r--. 1 root root 9 Oct 20 11:25 /test/passwd3

[root@server254 ~]# date

Sun Oct 20 11:41:24 CST 2013

[root@server254 ~]# find /test/ -type f -mmin -20

/test/passwd3

距离当前时间20分钟之前修改的文件

[root@server254 ~]# find /test/ -type f -mmin +20

/test/passwd1

/test/passwd2

/test/passwd

4)按照用户和组来查找

-user 用户名:查找所有者是某人的文件

-group 组名:查找所属组是某个组的文件

-nouser: 没有所有者的文件,孤儿文件

-nogroup:没有所属组的文件

-uid uid:查找uid是某某的文件

-gid gid:查找gid是某某的文件

[root@server254 ~]# useradd uplooking

[root@server254 ~]# su - uplooking

[uplooking@server254 ~]$ touch file

[uplooking@server254 ~]$ exit

logout

查找所有者是uplooking的文件

[root@server254 ~]# find /home -user uplooking

查找所属组是uplooking的文件

[root@server254 ~]# find /home -group uplooking

查找uid是528的文件

[root@server254 ~]# find /home -uid 528

查找gid是528的文件

[root@server254 ~]# find /home -gid 528

演示nouser和nogroup

[root@server254 ~]# userdel uplooking

[root@server254 ~]# ll -d /home/uplooking/

drwx------. 4 528 528 4096 Oct 20 11:49 /home/uplooking/

[root@server254 ~]# find /home -nouser

/home/uplooking

/home/uplooking/.bash_history

/home/uplooking/.bash_profile

/home/uplooking/.bashrc

/home/uplooking/.bash_logout

/home/uplooking/file

/home/uplooking/.gnome2

/home/uplooking/.mozilla

/home/uplooking/.mozilla/plugins

/home/uplooking/.mozilla/extensions

[root@server254 ~]# find /home -nogroup

/home/uplooking

/home/uplooking/.bash_history

/home/uplooking/.bash_profile

/home/uplooking/.bashrc

/home/uplooking/.bash_logout

/home/uplooking/file

/home/uplooking/.gnome2

/home/uplooking/.mozilla

/home/uplooking/.mozilla/plugins

/home/uplooking/.mozilla/extensions

5)按照权限查找

-perm mode —— 精确匹配

-perm -mode —— 模糊匹配

-perm +mode —— 模糊匹配

[root@server254 test]# touch p{r,w,x}_{1,2,3}

[root@server254 test]# ls

pr_1  pr_2  pr_3  pw_1  pw_2  pw_3  px_1  px_2  px_3

[root@server254 test]# chmod 400 pr_1

[root@server254 test]# chmod 440 pr_2

[root@server254 test]# chmod 444 pr_3

[root@server254 test]# chmod 200 pw_1

[root@server254 test]# chmod 220 pw_2

[root@server254 test]# chmod 222 pw_3

[root@server254 test]# chmod 100 px_1

[root@server254 test]# chmod 110 px_2

[root@server254 test]# chmod 111 px_3

查找的是只有组上有写权限的

[root@server254 test]# find /test -perm g=w   (020)

[root@server254 test]# touch px_4

[root@server254 test]# chmod 020 px_4

[root@server254 test]# find /test -perm g=w

/test/px_4

-perm +mode

表示组必须有写权限,其它的不限制

[root@server254 test]# find /test -perm +020

/test/pw_3

/test/px_4

/test/pw_2

表示的是只要有写权限就符合要求

[root@server254 test]# find /test -perm +222

/test

/test/pw_3

/test/px_4

/test/pw_1

/test/pw_2

-perm -mode

表示的是最少要拥有222权限的文件

[root@server254 test]# find /test -perm -222

/test/pw_3

[root@server254 test]# ll /test/pw_3

--w--w--w-. 1 root root 0 Oct 20 13:37 /test/pw_3

思考:查找所有具有suid权限的文件

6)按照文件大小查找

-size n[cwbkMG]

+nk:大于多少k的

-nk:小于多少k的

nk:等于多少k的

dd命令:转换和拷贝文件

[root@server254 test]# ll /dev/zero

crw-rw-rw-. 1 root root 1, 5 Oct  9 16:33 /dev/zero

dd格式:

[root@server254 test]# dd if=/dev/zero of=f1M bs=1M count=1

if:input file输入文件

of:output file输出文件

bs:block size 块的大小

count:数量

[root@server254 test]# dd if=/dev/zero of=f4M bs=1M count=4

[root@server254 test]# dd if=/dev/zero of=f7M bs=1M count=7

[root@server254 test]# ll

total 12288

-rw-r--r--. 1 root root 1048576 Oct 20 14:05 f1M

-rw-r--r--. 1 root root 4194304 Oct 20 14:07 f4M

-rw-r--r--. 1 root root 7340032 Oct 20 14:08 f7M

[root@server254 test]# find /test -type f -size +1M

/test/f4M

/test/f7M

[root@server254 test]# find /test -type f -size -7M

/test/f4M

/test/f1M

-and与-a:并且

-o:或者

-not与!:非

查找/test目录下文件大小大于等于4M的文件

[root@server254 test]# find /test/ -size +4M -o -size 4M

/test/f4M

/test/f7M

执行动作actions:

-exec action——不提示直接将动作执行

-ok action——执行动作之前先提示

查找到文件大小为4M的文件,列出其详细信息

[root@server254 test]# find /test -size 4M -exec ls -l {} \;

-rw-r--r--. 1 root root 4194304 Oct 20 14:07 /test/f4M

{}:用你find到的结果来替代

\;:表示命令结束

[root@server254 test]# find /test -size 4M -exec cp {} {}.bak \;

自学:maxdepth,mindepth

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值