Linux 运维 | 2.从零开始,文件系统目录结构及文件目录管理学习实践

91926dbfa6f1eba7156656b4c846286f.jpeg

12ec3b7695816c9546f52e85583b9275.gif

[ 知识是人生的灯塔,只有不断学习,才能照亮前行的道路。]

大家好,我是【WeiyiGeek/唯一极客】一个正在向全栈工程师(SecDevOps)前进的技术爱好者  

作者微信:WeiyiGeeker  
公众号/知识星球:全栈工程师修炼指南  
主页博客: https://weiyigeek.top - 为者常成,行者常至


文章目录:

c1ce6eccf8cb22cff145315592c4c17c.png

0x01 文件系统目录结构

描述:Linux 继承了 Unix 一切皆文件(Everything is a file)的哲学思想, Linux 文件系统上基本上所有的东西都是文件,包括设备、网络和应用,以及其它特殊的socket, 当然万物皆文件的说法也不是绝对的,比如说系统上正在运行的进程就不是文件系统的一部分;设计了这么一套逻辑,主要还是秉承着 UNIX 哲学一贯主张的 KISS 原则(Keep it simple, stupid),将所有的设备都隐藏起来,给用户统一的外在接口,操作起来简洁方便。

说明实际上,更准确的说法是“万物皆字节流”(Everything is a stream of bytes),例如/dev/random并不是一个文件,但它无疑是字节流。

Linux 文件系统目录为“倒”的树形结构,所有的目录都是从"/"(根目录)衍生而来,也称为Linux目录树。

如果文章写得不错,请关注一下作者,此外作者结合自身日常工作实践,花费大量时间精力进行总结归纳,遂将此专栏《#运维工程师从业必学》设置为 9.9 元,希望能帮助到各位志同道合的初学运维朋友,也希望各位看友也能多多支持作者,更新更多运维文章。

完整原文:Linux 运维 | 2.从零开始,文件系统目录结构及文件目录管理学习实践此文作为Linux基础入门篇,主要介绍Linux文件系统目录结构及目录对应功能,以实践方式学习文件目录管理操作的命令,学习理解好了Linux文件系统目录结构,对后续学习Linux运维工程师学习之路系列文章会有很大的帮助,希望大家有所收获吧icon-default.png?t=N7T8https://mp.weixin.qq.com/s/9YCIs8aX-jSCcVdC1n_BfQ

1.文件系统目录简述

⚡️Linux 目录结构用途简述

▫️ /root: 系统的超级用户(也称为管理员)的主目录

▫️ /bin:存放常规shell内部应用程序,如ls命令

▫️ /sbin: 包含只有超级用户需要的应用程序,如sshd命令

▫️ /boot:存放启动系统所需的文件,内核文件vmlinuz,引导加载器(Bootloader, Grub), 类比于Windows中系统引导,非需勿改

▫️ /dev:存放device设备文件,如网络摄像头或USB

▫️ /etc:存放系统及应用相关的配置文件,类似于 Windows中的注册表,如ssh配置文件

▫️ /home:存放用户个人目录的位置,如/home/weiyigeek

▫️ /lib:存放应用程序调用的libraries库

▫️ /lib64:存放x86_64系统应用程序调用的libraries库

▫️ /media:存放插入外部存储并尝试访问外部存储时自动挂载的位置

▫️ /mnt:用于手动挂载存储设备或分区的位置

▫️ /opt:通常是您编译软件的地方,如从源代码构建 nginx

▫️ /proc:虚拟目录包含有关计算机的信息,如内存/CPU/网络栈

▫️ /run: 系统进程出于自己的邪恶原因使用它来存储临时数据,

▫️ /var: 存放应用程序、库、文档、壁纸、图标以及服务需要共享的内容

▫️ /srv: 包含服务器的数据,如运行web服务器站点物理目录/srv/www

▫️ /sys: 虚拟目录类似于/proc和/dev/,包含来自连接到计算机的设备的信息

▫️ /tmp: 包含临时文件,任何用户程序都可以进行读写访问

▫️ /var: 包含日志之类的内容

▫️ /usr:系统软件资源放置的目录,类似于 Windows 的 ProgramFiles 目录,存放的是用户的应用程序。

▫️ /lost+found:默认是空在ext2、ext3文件系统中,当系统意外崩溃或机器意外关机,当系统非正常关机的时候此目录下会保留一些文件(可以并修复已经损坏的文件系统),不过随着不同Linux的发展,有的发行版不在根目录下。

96b90297b3ab03aa460f883792124e70.png

weiyigeek.top-Linux 目录结构图

Linux 文件系统分层结构标准,由 FHS(FileSystem Hierarchy Standard)机构进行定义,FHS 依据文件系统使用的频繁与否与是否允许使用者随意更动而将目录定义成为四种交互作用的形态:

  • 1.可分享的 shareable:可以分享给其他系统挂载使用的目录,所以包括执行文件与用户的邮件等数据,是能够分享给网络上其他主机挂载用的目录。

  • 2.不可分享的 unshareable:自己机器上面运作的装置文件或者是与程序有关的socket文件等,由于仅与自身机器有关,所以当然就不适合分享给其他主机了。

  • 3.不变的 static:有些数据是不会经常变动的,跟随着distribution而不变动。例如函式库、文件说明文件、系统管理员所管理的主机服务配置文件等。

  • 4.可变动的 variable:经常改变的数据,例如登录文件、一般用户可自行收受的邮件。

~可分享的(shareable)不可分享的(unshareable)
不变的(static)/usr (软件放置处)、/opt (第三方协力软件)/usr (软件放置处)、/boot (开机与核心档)
可变动的(variable)/var/mail (使用者邮件信箱)、/var/spool/news (新闻组)/var/mail (使用者邮件信箱) 、 /var/lock (程序相关)

FHS 文件系统层次结构标准,目前版本为 2.1 于2004年1月29日发布,PDF文件地址链接 www.pathname.com/fhs/pub/fhs-2.3.pdf

🔥主流 Linux/Unix 系统使用 tree -L 1 / 命令查看系统目录结构:

  • Ubuntu or Debian: sudo apt install tree

  • Red Hat or Fedora: sudo dnf install tree

  • SUSE/openSUSE: sudo zypper install tree

  • Arch-like distros: sudo pacman -S tree

f545e0adbea51faef160cf9b36c1a530.png

weiyigeek.top-Ubuntu系统的文件目录图

温馨提示:由于可能不同的 Linux 发行版,应用的配置文件存放路径有所不同,但是根目录下二级目录的名称基本是一致的,如上所述的 /root/home/bin/sbin/etc等。


2.文件系统目录功能

描述:此节作者简单描述下二级目录下各目录的功能,使之在后续的Linux学习中懂得将二进制安装源码编译安装某些目录中,如需了解更详细内容请自行查阅相关资料。

/usr 目录功能

其实 usrUnix Software Resource 的缩写,也就是Unix操作系统软件资源所放置的目录,而不是用户的数据啦, 类比于 Windows 下的 ProgramFiles 目录。

FHS 标准建议所有软件开发者,应该将他们的数据合理的分别放置到这个目录下的次目录,而不要自行建立该软件自己独立的目录,特别时自己构建的rpm包时。

目录应放置文件内容
/usr/bin/绝大部分的用户可使用指令都放在这里,他与/bin的不同之处(是否与开机过程有关)
/usr/sbin/非系统正常运作所需要的系统指令。最常见的就是某些网络服务器软件的服务指令(daemon)
/usr/src/一般原始码建议放置到这里,src有source的意思。至于核心原始码则建议放置到/usr/src/linux/目录下。
/usr/include/c/c++等程序语言的档头(header)与包含档(include)放置处,当我们以tarball方式 (*.tar.gz 的方式安装软件)安装某些数据时,会使用到里头的许多包含档。
/usr/lib/各应用软件的函式库文件、目标文件(object file),以及不被一般使用者惯用的执行档或脚本(script)。要注意的是,如果你使用的是X86_64的Linux系统,那可能会有/usr/lib64/目录产生
/usr/local/系统管理员在本机自行安装自己下载的软件(非distribution默认提供者),建议安装到此目录, 这样会比较便于管理。举例来说,你的distribution提供的软件较旧,你想安装较新的软件但又不想移除旧版, 此时你可以将新版软件安装于/usr/local/目录下,可与原先的旧版软件有分别啦。你可以自行到/usr/local去看看,该目录下也是具有bin, etc, include, lib...的次目录
/usr/share/放置共享文件的地方,在这个目录下放置的数据几乎是不分硬件架构均可读取的数据, 因为几乎都是文本文件嘛。在此目录下常见的还有这些次目录:/usr/share/man:联机帮助文件
/usr/share/doc软件杂项的文件说明
/usr/share/zoneinfo与时区有关的时区文件
/usr/X11R6/X版本为第11版,且该版的第6次释出之意,为X Window System重要数据所放置的目录。

实践补充:/usr/local 目录一般是用来存放用户自编译安装软件的存放目录, 通过源码包编译安装的软件,如果没有特别指定安装目录的话--prefix=,一般也是安装在这个目录中。

/var 目录功能前面介绍 /usr 是安装时会占用较大硬盘容量的目录,而 /var 就是在系统运作后才会渐渐占用硬盘容量的目录;主要针对常态性变动的文件,包括缓存(cache)、登录档(log file)以及某些软件运作所产生的文件, 包括程序文件(lock file, run file),或者例如MySQL数据库的文件等等;

完整原文:Linux 运维 | 2.从零开始,文件系统目录结构及文件目录管理学习实践

  • 29
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Linux系统中,有许多命令可以用于下载文件。以下是一些常用的Linux运维命令: 1. wget:wget命令是一个非常常用的下载工具,可以通过命令行从指定的URL下载文件。例如,要下载一个文件,可以使用以下命令:wget <文件URL>。 2. curl:curl命令也是一个常用的下载工具,可以从命令行下载文件。它不仅可以下载文件,还可以通过HTTP协议发送请求和接收响应。使用curl下载文件的命令格式如下:curl -O <文件URL>。 3. scp:scp命令是用于在远程计算机之间传输文件的命令,它使用SSH协议进行安全传输。要从远程服务器下载文件,可以使用以下命令:scp <用户名@远程服务器地址:文件路径> <本地路径>。 4. rsync:rsync命令是一个功能强大的文件同步和备份工具,可以在本地和远程服务器之间同步文件。要从远程服务器下载文件,可以使用以下命令:rsync -avz <用户名@远程服务器地址:文件路径> <本地路径>。 5. ftp:ftp命令可以通过FTP协议在本地和远程计算机之间传输文件。要使用ftp下载文件,可以首先连接到远程服务器,然后使用get命令下载文件。例如,使用ftp下载文件的命令序列如下: ftp <远程服务器地址> get <文件路径> 这些命令提供了多种方式来下载文件,用户可以根据自己的需要选择合适的方法。无论是从远程服务器下载文件还是下载网站上的文件,这些命令都能够满足用户的需求。请根据具体场景选择适合的命令,以便完成文件下载任务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

全栈工程师修炼指南

原创不易,赞赏鼓励!

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

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

打赏作者

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

抵扣说明:

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

余额充值