Spark修炼之道(基础篇)——Linux大数据开发基础:第四节:Linux文件系统(二)

简介: 本节主要内容访问控制列表ACL链接压缩和归档文件其他日常管理实用程序1. 访问控制列表ACL在实际使用使用过程中,可能linux系统自身权限控制不能满足要求,还需要进一步细化,此时可以用ACL( Access Control List )进行,它主要提供 owner,group,others 的 read,write,execute 权限之外的细部权限配置

本节主要内容

  1. 访问控制列表ACL
  2. 链接
  3. 压缩和归档文件
  4. 其他日常管理实用程序

1. 访问控制列表ACL

在实际使用使用过程中,可能linux系统自身权限控制不能满足要求,还需要进一步细化,此时可以用ACL( Access Control List )进行,它主要提供 owner,group,others 的 read,write,execute 权限之外的细部权限配置。它可以针对单一使用者,单一文件或目录来进行 r,w,x 的权限规范,对于需要特殊权限的使用状况非常有帮助。
Ubuntu操作系统要使用ACL,需要手动去安装,安装方法如下:
使用apt-get install acl命令进行ACL的安装
这里写图片描述

(1)获取文件的acl

采用getfacl来获取文件的ACL详细信息,当文件不包含acl时,所显示的信息与ls -l命令相同

root@ubuntu:/home/xtwy# ls -l hello1.txt
-rw---x--x 1 xtwy xtwy 47 2015-08-22 23:43 hello1.txt

root@ubuntu:/home/xtwy# getfacl hello1.txt 
# file: hello1.txt
# owner: xtwy
# group: xtwy
user::rw-
group::--x
other::--x

(2)设置文件的acl

采用setfacl命令进行文件精细权限的设置,命令格式如下:

setfacl --modify-m) ugo:name:permissions file-list

其中ugo分别是u或g或o,分别对应设置用户、组及其他用户对文件的访问权限。name为用户或组名,如果是o则无需指定,permissions是为待设置的权限,file-list,使用例如下:

//下列命令给组xtwy添加读权限,给组root添加读写执行权限
//给o也添加读写、执行权限
root@ubuntu:/home/xtwy# setfacl -m g:xtwy:r,g:root:rwx,o::rwx hello1.txt
//显示acl信息
root@ubuntu:/home/xtwy# getfacl hello1.txt
# file: hello1.txt
# owner: xtwy
# group: xtwy
user::rw-
group::--x
group:root:rwx
group:xtwy:r--
mask::rwx
other::rwx
//ls -l显示的权限信息
root@ubuntu:/home/xtwy# ls -l hello1.txt
//文件权限部分多了个+号
-rw-rwxrwx+ 1 xtwy xtwy 47 2015-08-22 23:43 hello1.txt

(3)获取目录或文件的acl

root@ubuntu:/home/xtwy# mkdir acltest
root@ubuntu:/home/xtwy# ls -ld acltest/
drwxr-xr-x 2 root root 4096 2015-08-23 00:50 acltest/

//获取目录的acl,与文件操作一致
root@ubuntu:/home/xtwy# getfacl acltest/
# file: acltest/
# owner: root
# group: root
user::rwx
group::r-x
other::r-x

给目录添加acl

root@ubuntu:/home/xtwy# groupadd groupacl
//采用-d命令,这是与普通文件之间的区别
root@ubuntu:/home/xtwy# setfacl -d -m g:groupacl:r-x acltest/
root@ubuntu:/home/xtwy# getfacl acltest/
# file: acltest/
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
default:user::rwx
default:group::r-x
default:group:groupacl:r-x
default:mask::r-x
default:other::r-x

//ls -ld 命令显示,目录权限多了个+号
root@ubuntu:/home/xtwy# ls -ld acltest/
drwxr-xr-x+ 2 root root 4096 2015-08-23 00:50 acltest/



//在设置好的acl目录中创建文件与没有设置acl的目录中创建文件,有以下区别

oot@ubuntu:/home/xtwy# echo "file acl in acltst" > test1.txt
root@ubuntu:/home/xtwy# ls -l test1.txt 
-rw-r--r-- 1 root root 19 2015-08-23 00:58 test1.txt
root@ubuntu:/home/xtwy# getfacl test1.txt 
# file: test1.txt
# owner: root
# group: root
user::rw-
group::r--
other::r--


root@ubuntu:/home/xtwy# cd acltest/
root@ubuntu:/home/xtwy/acltest# echo "file acl in acltst" > test1.txt
//权限后面也有+
root@ubuntu:/home/xtwy/acltest# ls -l test1.txt 
-rw-r--r--+ 1 root root 19 2015-08-23 00:59 test1.txt
//显示创建文件的acl信息
root@ubuntu:/home/xtwy/acltest# getfacl test1.txt 
# file: test1.txt
# owner: root
# group: root
user::rw-
group::r-x          #effective:r--
group:groupacl:r-x      #effective:r--
mask::r--
other::r--

上面的代码说明,如果在acl目录中没有指定文件的acl信息,则会使用目录对应默认acl。

2. 链接

(1) 硬链接

linux中的硬链接另一个文件的形式出现在文件结构中,如果硬链接与被链接文件在同一个目录中,则名字必须不一样,不在同一个目录的话,可以没有此要求

root@ubuntu:/home/xtwy/acltest# ls
test1.txt
//利用ln命令创建一个test1.txt文件的硬链接
root@ubuntu:/home/xtwy/acltest# ln test1.txt /home/xtwy/test1link
root@ubuntu:/home/xtwy/acltest# cd /home/xtwy/
root@ubuntu:/home/xtwy# ls
acltest  Documents         hello1.txt  Music     Templates  Videos
Desktop  Downloads         hello.txt   Pictures  test1link
dir      examples.desktop  literature  Public    test1.txt
//利用cat命令查看test1link文件的内容,它其实是链接到test1.txt文件
//然后显示相应内容
root@ubuntu:/home/xtwy# cat test1link
file acl in acltst

这里写图片描述

//创建完硬链接后,链接数+1
root@ubuntu:/home/xtwy/acltest# ls -l
total 4
-rw-r--r--+ 2 root root 19 2015-08-23 00:59 test1.txt
//再创建一个硬链接
root@ubuntu:/home/xtwy/acltest# ln test1.txt /home/xtwy/test1link2
//链接数+1
root@ubuntu:/home/xtwy/acltest# ls -l
total 4
-rw-r--r--+ 3 root root 19 2015-08-23 00:59 test1.txt

硬链接以文件形式存在,但它实质上指向的是同一个文件,只不过是创建了指向目标文件的指针,即ln命令不会创建文件的副本,即它与cp命令有着本质的区别,如下图所示:
这里写图片描述

(2) 软链接

linux操作系统除了支持硬链接之外,还支持符号链接(symbolic link)或软链接(soft link)。硬链接是直接指向文件的指针,它除了可以创建文件的符号链接之外,还可以创建目录的符号链接。先看几个例子:

//不能创建目录的硬链接
root@ubuntu:/home/xtwy# ln Music softlink_Music
ln: `Music': hard link not allowed for directory

//创建目录的符号链接
root@ubuntu:/home/xtwy# ln --symbolic Music softlink_Music
//链接数并没有增加,还是1
root@ubuntu:/home/xtwy# ls -l softlink_Music
lrwxrwxrwx 1 root root 5 2015-08-23 05:01 softlink_Music -> Music


//创建普通文件的符号链接
root@ubuntu:/home/xtwy# echo "soft link test" >> soft.txt
root@ubuntu:/home/xtwy# ln -s soft
softlink_Music/ soft.txt        
root@ubuntu:/home/xtwy# ln -s soft.txt softlink_txtfile
//通过下面的命令可以看到, 符号链接文件的大小为8
//它与原始文件大小不一样,其大小是目标文件路径名中的字符数
root@ubuntu:/home/xtwy# ls -l softlink_txtfile 
lrwxrwxrwx 1 root root 8 2015-08-23 05:02 softlink_txtfile -> soft.txt
root@ubuntu:/home/xtwy# cat softlink_txtfile 
soft link test

使用cd命令切换到目录的符号连接时,路径名中显示的是符号链接名称

root@ubuntu:/home/xtwy# cd softlink_Music
//路径名显示是符号链接
root@ubuntu:/home/xtwy/softlink_Music# ls
root@ubuntu:/home/xtwy/softlink_Music# cd ..
root@ubuntu:/home/xtwy# cd Music/
root@ubuntu:/home/xtwy/Music# touch music1.mp3
root@ubuntu:/home/xtwy/Music# ls
music1.mp3
root@ubuntu:/home/xtwy/Music# ls -l
total 0
-rw-r--r-- 1 root root 0 2015-08-23 05:28 music1.mp3
root@ubuntu:/home/xtwy/Music# cd ../softlink_Music
//目录内容与Music目录一致
root@ubuntu:/home/xtwy/softlink_Music# ls
music1.mp3
root@ubuntu:/home/xtwy/softlink_Music# 

符号链接可以指向一个不存在的文件,例如

//删除Music目录
root@ubuntu:/home/xtwy/softlink_Music# rm -r ../Music
//删除后内容为空
root@ubuntu:/home/xtwy/softlink_Music# ls 
root@ubuntu:/home/xtwy/softlink_Music# cd ..
//符号链接仍然存在
root@ubuntu:/home/xtwy# ls -l softlink_Music 
lrwxrwxrwx 1 root root 5 2015-08-23 05:01 softlink_Music -> Music

这里写图片描述

硬链接由于采用的是指针的方式,如果文件删除,它将一直指向已删除的文件,而软链接总是指向新创建的文件

//生成test文件
root@ubuntu:/home/xtwy/hard_symbolic_demo# echo "hard and soft link test" > test.txt
//生成硬链接
root@ubuntu:/home/xtwy/hard_symbolic_demo# ln test.txt hardlink_test.txt
root@ubuntu:/home/xtwy/hard_symbolic_demo# ls -l
total 8
-rw-r--r-- 2 root root 24 2015-08-23 05:45 hardlink_test.txt
-rw-r--r-- 2 root root 24 2015-08-23 05:45 test.txt
root@ubuntu:/home/xtwy/hard_symbolic_demo# cat hardlink_test.txt 
hard and soft link test
//创建符号链接
root@ubuntu:/home/xtwy/hard_symbolic_demo# ln -s test.txt softlink_test.txt
root@ubuntu:/home/xtwy/hard_symbolic_demo# ls -l
total 8
-rw-r--r-- 2 root root 24 2015-08-23 05:45 hardlink_test.txt
lrwxrwxrwx 1 root root  8 2015-08-23 05:46 softlink_test.txt -> test.txt
-rw-r--r-- 2 root root 24 2015-08-23 05:45 test.txt
root@ubuntu:/home/xtwy/hard_symbolic_demo# cat softlink_test.txt 
hard and soft link test
//删除test.txt文件
root@ubuntu:/home/xtwy/hard_symbolic_demo# rm test.txt
root@ubuntu:/home/xtwy/hard_symbolic_demo# ls -l
total 4
-rw-r--r-- 1 root root 24 2015-08-23 05:45 hardlink_test.txt
lrwxrwxrwx 1 root root  8 2015-08-23 05:46 softlink_test.txt -> test.txt
//hardlink_test.txt仍然指向删除的文件,只有当该链接也被删除的时候
//文件才被删除
root@ubuntu:/home/xtwy/hard_symbolic_demo# cat hardlink_test.txt 
hard and soft link test
//符号链接已经失效
root@ubuntu:/home/xtwy/hard_symbolic_demo# cat softlink_test.txt 
cat: softlink_test.txt: No such file or directory
root@ubuntu:/home/xtwy/hard_symbolic_demo# 

这里写图片描述

创建新的test.txt文件之后,符号链接指向新文件,硬链接仍然指向被删除的文件

root@ubuntu:/home/xtwy/hard_symbolic_demo# echo "new test file" > test.txt
root@ubuntu:/home/xtwy/hard_symbolic_demo# ls -l
total 8
-rw-r--r-- 1 root root 24 2015-08-23 05:45 hardlink_test.txt
lrwxrwxrwx 1 root root  8 2015-08-23 05:46 softlink_test.txt -> test.txt
-rw-r--r-- 1 root root 14 2015-08-23 05:50 test.txt
root@ubuntu:/home/xtwy/hard_symbolic_demo# cat hardlink_test.txt 
hard and soft link test
root@ubuntu:/home/xtwy/hard_symbolic_demo# cat softlink_test.txt 
new test file

这里写图片描述

删除符号链接或硬链接与删除其它文件是一样的,例如:

root@ubuntu:/home/xtwy/hard_symbolic_demo# rm hardlink_test.txt 
root@ubuntu:/home/xtwy/hard_symbolic_demo# ls -l
total 4
lrwxrwxrwx 1 root root  8 2015-08-23 05:46 softlink_test.txt -> test.txt
-rw-r--r-- 1 root root 14 2015-08-23 05:50 test.txt
root@ubuntu:/home/xtwy/hard_symbolic_demo# rm softlink_test.txt 
root@ubuntu:/home/xtwy/hard_symbolic_demo# ls -l
total 4
-rw-r--r-- 1 root root 14 2015-08-23 05:50 test.txt

3. 压缩和归档文件

如果文件较大的话,占用大量的磁盘空间或网络流量,常常会对文件进行压缩存储或网络传送,本节将介绍几种常用的文件压缩和归档方法

(1) bzip2压缩

root@ubuntu:/home/xtwy# mkdir compresse_demo
root@ubuntu:/home/xtwy# cd compresse_demo/
root@ubuntu:/home/xtwy/compresse_demo# cp /etc/profile .
root@ubuntu:/home/xtwy/compresse_demo# ls
profile
root@ubuntu:/home/xtwy/compresse_demo# ls -l
total 4
-rw-r--r-- 1 root root 497 2015-08-23 06:02 profile
root@ubuntu:/home/xtwy/compresse_demo# bizip profile 
bizip: command not found
root@ubuntu:/home/xtwy/compresse_demo# bzip2 -v profile 
  profile:  1.608:1,  4.974 bits/byte, 37.83% saved, 497 in, 309 out.
root@ubuntu:/home/xtwy/compresse_demo# ls -l
total 4
-rw-r--r-- 1 root root 309 2015-08-23 06:02 profile.bz2

这里写图片描述

(2) bz2文件解压缩

//bunzip2 解压缩
root@ubuntu:/home/xtwy/compresse_demo# bunzip2 profile.bz2 
root@ubuntu:/home/xtwy/compresse_demo# ls -l
total 4
-rw-r--r-- 1 root root 497 2015-08-23 06:02 profile


root@ubuntu:/home/xtwy/compresse_demo# bzip2 -v profile 
  profile:  1.608:1,  4.974 bits/byte, 37.83% saved, 497 in, 309 out.
//bzcat查看文件压缩文件内容,原文件不会改变
root@ubuntu:/home/xtwy/compresse_demo# bzcat profile.bz2 | tail -10
  else
    if [ "`id -u`" -eq 0 ]; then
      PS1='# '
    else
      PS1='$ '
    fi
  fi
fi

umask 022

(3) tar打包文件

采用tar -cvf命令进行目录或文件的打包, c表示create,v表示verbose,显示详细信息,f表示从一个文件进行读写,打包好的文件以tar作为扩展名结尾

root@ubuntu:/home/xtwy/compresse_demo# tar -cvf test.tar profile 
profile
root@ubuntu:/home/xtwy/compresse_demo# ls 
profile  test.tar

(4) tar解包文件

root@ubuntu:/home/xtwy/compresse_demo# rm profile 
//按表枨方式显示打包文件内容,t表示表格
root@ubuntu:/home/xtwy/compresse_demo# tar -tvf test.tar
-rw-r--r-- root/root       497 2015-08-23 06:02 profile
root@ubuntu:/home/xtwy/compresse_demo# ls
test.tar
//解包文件,使用-x(extract)
root@ubuntu:/home/xtwy/compresse_demo# tar -xvf test.tar 
profile

(5) gzip压缩与解压缩文件

//压缩文件,压缩后的文件以.gz结尾
root@ubuntu:/home/xtwy/compresse_demo# gzip profile 
root@ubuntu:/home/xtwy/compresse_demo# ls
profile.gz  test.tar
//解压缩文件
root@ubuntu:/home/xtwy/compresse_demo# gunzip profile.gz 
root@ubuntu:/home/xtwy/compresse_demo# ls
profile  test.tar

(6) tar.gz文件解压缩

在网络上传输的文件通常都是经过gzip压缩后,再由tar归档后的文件,如下图所示:
这里写图片描述
使用tar -zxvf命令进行解压缩

tar -zxvf hadoop-2.7.1.tar.gz

4. 其他日常管理实用程序

(1) whereis命令

在标准路径下搜索与名称相关的文件,whereis将所有搜索到的文件都显示

root@ubuntu:/home/xtwy/compresse_demo# whereis tar
tar: /bin/tar /usr/include/tar.h /usr/share/man/man1/tar.1.gz /usr/share/man/man5/tar.5.gz

(2) which命令

which在设定的搜索路径下进行目录搜索,只显示搜索到的第一个文件

root@ubuntu:/home/xtwy/compresse_demo# which tar
/bin/tar

(3) locate命令

locate命令用于在本地文件系统上进行文件搜索,下面的例子给出了与xtwy相关的所有系统文件,包括隐藏文件:

root@ubuntu:/home/xtwy/compresse_demo# locate xtwy

这里写图片描述

更多which whereis locate命令相关内容,在后期讲linux中的正则表达式时仍然会有所涉及,此时大家只要会简单使用前面讲述的三个命令即可。

添加公众微信号,可以了解更多最新Spark、Scala相关技术资讯
这里写图片描述

相关实践学习
简单用户画像分析
本场景主要介绍基于海量日志数据进行简单用户画像分析为背景,如何通过使用DataWorks完成数据采集 、加工数据、配置数据质量监控和数据可视化展现等任务。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
目录
相关文章
|
25天前
|
存储 监控 Shell
【Shell 命令集合 备份压缩 】Linux 备份文件系统 dump命令 使用指南
【Shell 命令集合 备份压缩 】Linux 备份文件系统 dump命令 使用指南
35 0
|
25天前
|
存储 Shell Linux
【Shell 命令集合 磁盘维护 】Linux 创建Minix文件系统 mkfs.minix 命令使用教程
【Shell 命令集合 磁盘维护 】Linux 创建Minix文件系统 mkfs.minix 命令使用教程
33 0
|
25天前
|
存储 Linux Shell
【Shell 命令集合 磁盘维护 】Linux 创建MS-DOS文件系统 mkfs.msdos命令使用教程
【Shell 命令集合 磁盘维护 】Linux 创建MS-DOS文件系统 mkfs.msdos命令使用教程
26 0
|
4天前
|
分布式计算 Hadoop 大数据
大数据技术与Python:结合Spark和Hadoop进行分布式计算
【4月更文挑战第12天】本文介绍了大数据技术及其4V特性,阐述了Hadoop和Spark在大数据处理中的作用。Hadoop提供分布式文件系统和MapReduce,Spark则为内存计算提供快速处理能力。通过Python结合Spark和Hadoop,可在分布式环境中进行数据处理和分析。文章详细讲解了如何配置Python环境、安装Spark和Hadoop,以及使用Python编写和提交代码到集群进行计算。掌握这些技能有助于应对大数据挑战。
|
25天前
|
存储 安全 Linux
【Shell 命令集合 磁盘维护 】Linux 在特定的分区上建立 linux 文件系统 mkfs命令使用教程
【Shell 命令集合 磁盘维护 】Linux 在特定的分区上建立 linux 文件系统 mkfs命令使用教程
25 0
|
21天前
|
存储 算法 Linux
【Linux系统编程】Linux 文件系统探究:深入理解 struct dirent、DIR 和 struct stat结构
【Linux系统编程】Linux 文件系统探究:深入理解 struct dirent、DIR 和 struct stat结构
34 0
|
15天前
|
存储 固态存储 Unix
Linux中磁盘分区和文件系统管理
在Linux系统中,磁盘是存储数据的物理设备,如HDD或SSD,以文件形式存在于`/dev`目录下,如`sda`、`sdb`等。文件系统定义了如何在磁盘上组织和访问数据,常见的Linux文件系统有ext2、ext3、ext4、xfs等。通过虚拟机软件如VMware,用户可以向Linux虚拟机添加新的硬盘。
|
23天前
|
大数据 Linux
大数据基础:Linux基础详解
本课程主要通过对linux基础课程的详细讲解,让大家熟练虚拟机的安装使用,Linux系统的安装配置,学习掌握linux系统常用命令的使用,常用的软件安装方法,制作快照,克隆,完成免密登录,完成搭建集群前需要的时间同步,总之学完本课程就可以很好的进行接下来的大数据学习了。
25 5
大数据基础:Linux基础详解
|
24天前
|
安全 Linux 数据安全/隐私保护
深入理解Linux文件系统的权限管理
在Linux操作系统中,文件系统权限管理是维护系统安全与数据完整性的基石。本文将深入探讨Linux文件系统中的权限模型,包括用户、组和其他三个层级的读、写、执行权限。通过分析权限位的具体含义和实际作用,文章旨在提供一套系统的方法论,以帮助系统管理员和开发人员更有效地配置和管理文件权限。同时,我们将通过实例展示如何使用命令行工具和配置文件来修改和查看文件权限,以及如何利用权限管理来增强系统的安全性。
|
25天前
|
存储 安全 Linux
【Shell 命令集合 设备管理 】Linux 更改根文件系统的设备号 rdev命令 使用指南
【Shell 命令集合 设备管理 】Linux 更改根文件系统的设备号 rdev命令 使用指南
29 0

热门文章

最新文章