Skip to content

文件目录

更新: 2025/2/24 字数: 0 字 时长: 0 分钟

文件属性

文件分类

linux系统不同类型文件会有不同的颜色,如下图:

QQ截图20210814233404

白色:表示普通文件
蓝色:表示目录
绿色:表示可执行文件(执行方式:./文件名称 -参数)
红色:表示压缩文件
浅蓝色:链接文件
红色闪烁:表示链接的文件有问题
黄色:表示设备文件
灰色:表示其他文件

文件权限

前面讲过,Linux系统是一个稳定、安全的多用户系统。Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。

我们可以使用 ll 或者 ls -l 命令来显示一个文件的属性以及文件所属的用户和组,如:

QQ截图20210814172210

每个文件的属性由左边第一部分的10个字符来确定(如下图):

vqwergbvbv

第一个字符代表目录、文件或链接文件等等:

  • [ d ]代表目录;
  • [ - ]代表文件;
  • [ l ]代表链接文档 ( link file ),同时会显示指向的文件;
  • [ b ]代表装置文件里面的可供储存的接口设备 ( 可随机存取装置 );
  • [ c ]代表装置文件里面的串行端口设备,例如键盘、鼠标 ( 一次性读取装置 );

后面九个字符中,每三个字符为一组,且固定为『rwx』组合:

  • [ r ]代表可读(read);
  • [ w ]代表可写(write);
  • [ x ]代表可执行(execute);
  • [ - ]代表没有该权限;
  • 第1、4、7位表示读权限,用"r"字符表示,没有读权限,用"-"字符表示;
  • 第2、5、8位表示写权限,用"w"字符表示,没有写权限,用"-"字符表示;
  • 第3、6、9位表示执行权限,用"x"字符表示,没有执行权限,用"-"字符表示;

后面九个字符中,每三个字符为一组,代表不同的属主、属组、其他用户:

  • 第1-3位确定属主(该文件的所有者)拥有该文件的权限;
  • 第4-6位确定属组(所有者的同组用户)拥有该文件的权限;
  • 第7-9位确定其他用户拥有该文件的权限;

在Linux系统中,用户是按组分类的,一个用户属于一个或多个组。

**每个文件都有一个特定的所有者,也就是对该文件具有所有权的用户,文件所有者以外的用户又可以分为"文件所有者的同组用户"和"其他用户"。**因此,Linux系统按文件所有者、文件所有者同组用户和其他用户来规定了不同的文件访问权限。

属性更改

更改文件属主 - chown

  • -R:递归更改文件属主,更改某个目录文件的属主时,该目录下的所有文件的属主都会更改。
chown [–R] 属主名 文件名

# 只有管理员可以改变文件的所有者,所有者必须是存在的用户
chown root /tmp/a.file:将a文件的所有者改为root(不管是谁创建的)

更改文件属组 - chgrp

  • -R:递归更改文件属组,更改某个目录文件的属组时,该目录下的所有文件的属组都会更改。
chgrp [-R] 属组名 文件名

# 只有管理员可以改变文件的所属组,所有者必须是存在的所属组
chgrp brother /tmp/a.file:将a文件的所属组更改为brother(不管是谁创建的)

更改文件权限 - chmod

  • -R:递归更改文件权限,更改某个目录文件的权限时,该目录下的所有文件的权限都会更改。
chmod [-R] 数字/字符 文件或目录

目前最常用的就是通过数字更改文件的权限,权限数字对应关系:

单个权限数字:
读 —— r —— 4    写 —— w —— 2    执行 —— x —— 1  无权限 —— - —— 0

权限数字相加:
--- —— 0    --x —— 1    -w- —— 2    -wx —— 3
r-- —— 4    r-x —— 5    rw- —— 6    rwx —— 7

三个权限字符为一组:
--------- —— 000
r-x-wxrwx —— 567
...
rw-rw-rw- —— 666
rwxrwxrwx —— 777

QQ截图20210815011653

虽然改变了tmp1文件夹权限,但因为没有加上参数R,tmp1文件夹下的文件和文件夹的权限保持不变。

QQ截图20210815012015

另一种修改文件权限的方式就是通过字符进行修改:

chmod u+x Japan.list:给Japan.list文件的u(所有者)加x(执行权限)
chmod g+w Japan.list:给Japan.list文件的g(所属组)加w(写权限)
chmod o-r Japan.list:给Japan.list文件的o(其他人)减r(读权限)
chomd g=rwx Japan.list:给Japan.list文件的g(所属组)设置rwx(所有权限)

?> umask -S:显示创建文件夹的默认权限rwxr-xr-x

!> 注意:更改文件的权限只能是文件的所有者(文件创建者)或者是root(超级管理员)。

常规操作

创建|查找

创建文件 - touch

  1. 命名规则:文件名的最大长度与文件系统类型有关,一般情况下,文件名不应该超过255个字符,虽然绝大多数的字符都可以用于文件名,但是最好使用英文大小写字母、数字、下划线、点这样的符号。文件名中虽然可以使用空格,但应该尽可能避免使用空格,否则在输入文件名时需要用将文件名放在双引号中或者通过\对空格进行转义。
  2. 扩展名:在Linux系统下文件的扩展名是可选的,但是使用扩展名有助于对文件内容的理解。有些应用程序要通过扩展名来识别文件,但是更多的应用程序并不依赖文件的扩展名,就像file命令在识别文件时并不是依据扩展名来判定文件的类型。
  3. 隐藏文件:以点开头的文件在Linux系统中是隐藏文件(不可见文件)。
touch files:在当前路径下创建空白文件files
touch program files:在当前路径下创建空白文件program和文件files
touch "program files":在当前路径下创建文件program files(不建议文件命名包含空格)

QQ截图20210821160421

创建目录 - mkdir

  • -p:当目录不存在时,自动创建目录(递归创建)。
mkdir tmp:创建一个名称为tmp的新文件夹
mkdir tmp/Japan:创建一个名称为Japan的新文件夹(tmp文件夹必须存在)

QQ截图20210810011254

# 递归创建
mkdir -p tmp1/USA:创建一个名称为USA的新文件夹(tmp1文件夹可以不存在)

QQ截图20210810012301

# 多目录创建
mkdir tmp/Korea tmp1/China:同时创建名为USA和China的文件夹(tmp文件夹和tmp1文件夹必须存在必须存在)

QQ截图20210810012744

# 递归多目录创建
mkdir -p tmp2/Union tmp3/Russia:同时创建名为Union和Russia的文件夹(tmp2文件夹和tmp3文件夹可以不存在)

QQ截图20210810013407

按指定条件查找文件 - find 查找范围 参数

find / -name "*.html"  # 查找当前服务器中所有的后缀为html的文件
find / -size +10M  # 查找当前服务器中所有大小超过10M的文件
find / -size -10G  # 查找当前服务器中所有大小小于10G的文件
  • 查找范围:确定查找文件的范围,即在什么路径下查找,通常在 / 根目录下,或者 . 当前路径下。
  • -name 文件名称:查找符合文件名称的文件。
  • -size [bckw]:查找符合文件大小的文件,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。
  • -type [dcbpfls]:查找符合文件类型的文件,d代表目录,c代表字型装置文件,b代表区块装置文件,p代表具名贮列,f代表一般文件,l代表符号连结,s代表socket。

QQ截图20210925165743

复制|移动

复制文件或目录 - cp

  • 不加参数复制文件。

  • -r:复制目录以及目录里面的文件。

cp 路径1/文件1 路径2/:将文件从路径1拷贝到路径2下,文件名称不变。
cp 路径1/文件1 路径2/文件2:将文件从路径1拷贝到路径2下,名称从文件1变为了文件2。
cp /root/code/* ./:将/root/code/路径下的所有文件拷贝到当前路径下。
cp -r tmp1/China tmp2:将tmp1目录下的China目录复制到root目录下

QQ截图20210813004519

移动文件或目录 - mv

  • -b:当目标文件或目录存在时,在执行覆盖前,会为其创建一个备份。
  • -i:如果指定移动的源目录或文件与目标的目录或文件同名,则会先询问是否覆盖旧文件,输入 y 表示直接覆盖,输入 n 表示取消该操作。
  • -f:如果指定移动的源目录或文件与目标的目录或文件同名,不会询问,直接覆盖旧文件。
  • -n:不要覆盖任何已存在的文件或目录。
  • -u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作。
mv 路径1/文件1 路径2/:将文件从路径1移动到路径2下,文件名称不变。
mv 路径1/文件1 路径2/文件2:将文件从路径1移动到路径2下,名称从文件1变为了文件2。
mv tmp3/Russia tmp2:将tmp3目录下的Russia目录移动到tmp2目录下

QQ截图20210813005350

更名|删除

更名可以直接使用 cpmv 命令来完成:

cp -r tmp1/USA tmp3/Japan:将USA目录复制到tmp3目录下并更名为Japan
mv tmp3 tmp:在同一文件夹下将tmp3文件夹更名为tmp

QQ截图20210813010009

批量修改文件名 - rename 原字符串 目标字符串 文件列表(支持正则表达式)

  • 原字符串:将文件名需要替换的字符串;
  • 目标字符串:将文件名中含有的原字符替换成目标字符串;
  • 文件列表:指定要改变文件名的文件列表。
# 文件夹中有278个文件:foo1, …, foo278

rename foo foo0 foo?
foo foo0即文件名中的foo被替换为foo0,foo?即重命名的文件只是有4个字符长度名称的文件。最终会把foo1到foo9的文件重命名为foo01到foo09

rename foo foo0 foo??
foo foo0即文件名中的foo被替换为foo0,foo??即重命名的文件只是有5个字符长度名称的文件。最终会把foo10到foo99的所有文件都被重命名为foo010到foo099

rename foo foo0 foo*
foo foo0即文件名中的foo被替换为foo0,foo*即重命名的文件以foo开头不限字符长度名称的文件。最终会把foo1到foo278的所有文件都被重命名为foo01到foo0278

删除空目录 - rmdir

  • -p:递归删除多个空目录。
rmdir /tmp/Japan:删除Japan目录(只能删除空目录)

QQ截图20210812010707

如果删除的目录里面还有一层目录,不管里面这层目录是否为空目录都删除不了,并且会提示:当前目录不为空。

QQ截图20210812011013

rmdir -p tmp/Korea/:删除tmp目录(递归删除多级空目录)

QQ截图20210812011909

删除文件或目录 - rm

  • -f:就是 force 的意思,忽略不存在的文件,不会出现警告信息。
  • -i:互动模式,在删除前会询问使用者是否动作。
  • -r:递归删除啊!最常用在目录的删除了!这是非常危险的选项!!!
rm -r *.log  # 删除当前路径下后缀名为log的文件
rm -rf 文件1 文件2 文件3  # 不询问删除3个文件

QQ截图20210821160805

rm -rf /* 递归强制删除根目录下的所有文件,跑路命令,切勿使用!虚拟机上可以玩玩。

QQ截图20210813010924

删除local/logs路径下名称包含 .log 文件或文件夹:

find local/logs/ -name '*.log*' -exec rm -rf {} \;
find         查找文件
local/logs/  文件所在路径
-name        按文件名称查找
'*.log*'     名称中带有.log
-exec        固定写法
rm -rf       不询问删除
{} \;        固定写法

文件内容

内容新增

内容新增 - echo

  • -e:支持反斜线控制的字符转换(具体参见表 1)
  • -n:取消输出后行末的换行符号(内容输出后不换行)
控制字符作 用
\输出\本身
\a输出警告音
\b退格键,也就是向左删除键
\c取消输出行末的换行符。和“-n”选项一致
\eEsc键
\f换页符
\n换行符
\r回车键
\t制表符,也就是Tab键
\v垂直制表符
\Onnn按照八进制 ASCII 码表输出字符。其中 0 为数字 0,nnn 是三位八进制数
\xhh按照十六进制 ASCH 码表输出字符。其中 hh 是两位十六进制数

QQ截图202108211632281

?> 提示:使用命令 echo > /路径/文件 可以清空该文件的内容。

内容查看

Linux中有许多查看文件内容的命令,根据使用场景选择合适的命令。

从第一行开始显示文件内容 - cat

  • -n:列出行号,连同空白行也会有行号。

QQ截图20210819005639

自带行号从第一行开始显示文件内容 - nl

QQ截图20210819005837

分页显示文件内容 - more

  • 空格键或F键,向下翻页;Enter键下翻一行;q键退出

QQ截图20210819010256

分页显示文件内容 - less

  • 上下键上下翻一行;PageUp键向上翻页;PageDown键向下翻页;q键退出

QQ截图20210819011105

查看文件内容开始几行 - head

  • -n:后面接数字,代表显示几行的意思!

QQ截图20210819011315

查看文件内容结尾几行 - tail

  • -n:后面接数字,代表显示几行的意思!

QQ截图20210819011446

?> 提示:假如一个文件里面的内容正在动态更新,可以使用 tail -f 文件.后缀 命令查看文件的最后部分不断更新的内容。

内容查找

使用在 less 命令里面查找字符串 - /字符串或**?字符串**

  • “/字符串”代表查找顺序从上到下;“?字符串”代表查找顺序从下到上
  • n键,查找下一个字符串;N键,查找上一个字符串

QQ截图20210819012322

Vim编辑器

Vi 是Unix及Linux系统下自带的功能齐全的标准编辑器,相当于Windows系统中的记事本一样。

**Vim 是从 Vi 发展出来的一个文本编辑器,可以当作 Vi 的升级版本。**它提供了许多新的特性:

  1. 代码补完、语法加亮、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用,可以说是程序开发者的一项很好用的工具。
  2. 多级撤销,可以无限制的撤消上一步操作。
  3. 易用性,Vi只能运行于unix中,而Vim不仅可以运行于unix,windows ,mac等多操作平台。
  4. 对vi的完全兼容,某些情况下,你可以把vim当成vi来使用。

**Vim 的官方网站 (http://www.vim.org) 表示自己是一个程序开发工具而不是文字处理软件。**所有的 Unix Like 系统都会内建 Vi 编辑器,也就是说 Linux 自带 Vi 编辑器,Vim是增强版的编辑器,需要安装才能使用,但一般都会有安装vim。

yum install vim

64018961

vim编辑器有三种使用模式,分别是命令模式(Command mode)输入模式(Insert mode)底线命令模式(Last line mode)。我们可以将这三个模式想成底下的图标来表示:

64041891325

命令模式

**在命令模式下,用户可以执行最基本的命令。**用户启动 vim,便进入了命令模式,例如:vim init.txt:打开init.txt,就进入命令模式。**此状态下敲击键盘动作会被 Vim 识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。**以下是常用的几个命令:

  • h 或 向左箭头键(←) 光标向左移动一个字符
  • j 或 向下箭头键(↓) 光标向下移动一个字符
  • k 或 向上箭头键(↑) 光标向上移动一个字符
  • l 或 向右箭头键(→) 光标向右移动一个字符
  • i 在光标所在处切换到输入模式。
  • x 删除当前光标所在处的字符。
  • : 切换到底线命令模式,以在最底一行输入命令。
  • gg 快速切换到第一行的行首。
  • ngg 快速切换到指定行的行首。
  • G 快速切换到最后一行的行首。
  • 500G 快速切换到第500行的行首。
  • ^ 快速切换到该行行首。
  • $ 快速切换到该行行尾。
  • dd 删除光标所在行。
  • ndd 删除光标下n行,包含光标所在行。
  • yy 复制光标所在行。
  • nyy 复制光标下n行,包含光标所在行。
  • p 粘贴复制的内容。
  • np 复制几次。
  • n 光标向下移动 n 行(常用)。
  • u 撤销操作。
  • ctrl + r 恢复操作。
  • ctrl + f 下一页 forward(pagedown键)。
  • ctrl + b 上一页 backward(pageup键)。

QQ截图20210822023404

?> 提示:启动 vim 可以指定文件名来打开一个文件,如果没有指定文件名,也可以在保存的时候指定文件名。

输入模式

**在命令模式下按下 i 就进入了输入模式,输入模式下可以对文件内容进行编辑。**在输入模式中,可以使用以下按键:

  • 字符按键以及Shift组合,输入字符。
  • ENTER,回车键,换行。
  • BACK SPACE,退格键,删除光标前一个字符。
  • DEL,删除键,删除光标后一个字符。
  • 方向键,在文本中移动光标。
  • HOME/END,移动光标到行首/行尾。
  • Page Up/Page Down,上/下翻页。
  • Insert,切换光标为输入/替换模式,光标将变成竖线/下划线。
  • ESC,退出输入模式,切换到命令模式。

QQ截图20210822023831

底线命令模式

在命令模式下按 : 就进入了底线命令模式,基本的命令带有英文冒号

  • :q 退出Vim
  • :w 保存文件
  • :wq 保存文件并退出Vim
  • :q! 不保存文件并退出Vim
  • :set nu 就会显示行号
  • :set nonu 取消显示行号
  • :set ruler 显示光标所在位置
  • :set noruler 取消光标所在位置
  • :syntax on 显示高亮语法
  • :syntax off 关闭高亮语法
  • :set ts=4 制表键长度等于4个空格
  • :set expandtab 制表键自动转换为4个空格
  • :n 快速跳到n行
  • :/字符串 查找含有该字符串的内容(按n/N查找下/上一个)
  • :%s/ftp/ym/g 将全文的ftp替换为ym
  • **:1,s/0/1/cig1,s/0/1/cig** 1,全文,s替换,/0/1将0替换为1,c每次确认,i忽略大小写,g全局模式(一行中有多个匹配内容)
  • :1000,1002d 删除1000行到1002行
  • :r /etc/issue 将issue文件的内容,导入当前文件中
  • :r !date 将当前时间导入当前文件中
  • 按ESC键可随时退出底线命令模式

QQ截图20210822024654

文件恢复

当我们在使用Vim编辑文件的时候,可能由于网络的中断了或强退了等异常原因,导致我们的文件修改没有保存,当我们再次使用Vim编辑该文件的时候,就会出现如下该提示:当我们按 R 恢复文件回车后,进入文件,就能看到刚才文件中没有保存的修改内容。

QQ截图20230730145658

O只读  E编辑  R恢复  D删除  Q退出  A终止

出现上面提示的原因就是,异常退出时Vim会产生一个后缀名 .swp 的交换文件,只要有这个文件存在,那么下次再打开这个文件的时候还会有提示,现在我们已经恢复了文件了,不需要这个提示了,因此可以删除掉该文件:

QQ截图20230730150224

配置文件

上面的底线命令模式有很多是我们需要常用的功能,我们就可以写一个配置文件让vim启动时,自动加载这些功能。首先我们在 /root 目录下新建一个名称为 .vimrc 的文件,注意文件名称不可改变,在里面写入如下内容:

set nu
syntax on
set ts=4
set expandtab
set autoindent
set ruler
set nohls

文件比较

vim加上 -d 参数还可以比较多个文件的内容,终端屏幕也会被分为两部分,左边第一个文件,右边第二个文件:

[root ~]# vim -d 文件1 文件2

QQ截图202108221634261

多窗口切换

按下CTRL+w键再按h键,跳到左边的窗口

按下CTRL+w键再按l键,跳到右边的窗口

按下CTRL+w键再按j键,跳到下边的窗口

按下CTRL+w键再按k键,跳到上边的窗口

32a127723d03bbea084dbafbea43d7d449315462

按下两次CTRL+w键,就可以实现编辑窗口的切换:

QQ截图20210822163638

?> 提示:在一个窗口中执行退出操作只会关闭对应的窗口,其他的窗口继续保留。

打开多个文件

[root ~]# vim 1.txt init.txt

启动vim后只有一个窗口显示的是1.txt,可以在底线命令模式中输入 :ls 查看到打开的两个文件:

QQ截图20210822163921

在底线命令模式中输入 :b <num> 来显示另一个文件,例如可以用 :b 2 将init.txt显示出来:

QQ截图20210822161533

窗口拆分

继续上面的操作,在末行模式中输入 :sp:vs 可以实现对窗口的水平或垂直拆分,这样我们就可以同时打开多个编辑窗口:

QQ截图20210822164046

按下两次CTRL+w键,切换到下面的窗口:

QQ截图20210822164115

在底线命令模式中输入 :b <num> 来显示另一个文件,例如可以用 :b 1 将1.txt显示出来:

QQ截图20210822164244

窗口退出

:wqa:wqall:保存所有修改过的缓冲区并退出Vim。

:qa!:qall!:强制退出所有打开的Vim窗口,不保存任何修改的内容。

文件锁定

有些时候,即使我们以root用户的身份用vim修改该文件,会报一个 W10: Warning: Changing a readonly file 错误提示文件只能读取,其原因就在于文件被锁定了。

# 输入下面命令,如出现a或者i,则是文件被锁定。
lsattr /路径/文件

1800759-20200529103904864-1034891829

# 解锁方法输入下面命令,只出现i,则-i,只出现a,则用命令-a
chattr -ai /路径/文件

1800759-20200529104136079-2027431625

这里讲解一下 chattr 命令机制:chattr 命令可用于加锁文件,这个操作针对任何用户(包括root),被加锁的文件,不能自由编辑。

chattr 参数 /路径/文件

常用参数:
+a:加锁文件(可给文件追加内容,但无法删除文件内容);
-a:解锁文件(与+a相反);
+i:加锁文件(文件不能被删除、改名、设定链接关系,同时不能写入或追加内容);
-i:解锁文件(与+i相反)

链接文件

Linux 链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。

为了更好的解释两种链接的区别,我们新建一个源文件f1:

QQ截图20210820010608

硬链接

**硬链接指通过文件索引节点来引用文件。**在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。多个文件名是可以同时指向同一个索引节点的,比如:A文件是B文件的硬链接,则A文件的节点号与B文件的节点号相同,即一个节点对应两个不同的文件名,且A文件和B文件对系统来说是完全平等的。删除其中任何一个都不会影响另外一个的访问。

**硬链接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。**其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。

新建硬链接 - ln 绝对路径/源文件 绝对路径/新建硬链接文件

这里我们新建一个硬链接文件f2指向源文件f1:

QQ截图20210820011217

软链接

软链接文件类似于 Windows 的快捷方式,它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。比如:A是B的软链接(A和B都是文件名),在A的数据块中存放的只是B的路径名(可以根据这个找到 B 的目录项),如果B被删除了,A仍然存在(因为两个是不同的文件),但指向的是一个无效的链接。

新建软链接 - ln -s 绝对路径/源文件 /usr/bin/新建软链接文件

覆盖旧链接 - ln -sf 绝对路径/源文件 /usr/bin/存在软链接文件

这里我们新建一个软链接文件f3指向源文件f1:

QQ截图20210820011912

!> 注意:无论是新建软链接,还是覆盖旧链接,都建议使用绝对路径,因为使用相对路径容易出错,会导致软链接文件已存在,就是找不到源文件。

**一旦软链接文件成功建立后,在任何位置都可以快捷调用该文件命令。**如果提示未找到命令,可以使用下面的命令检查软链接指向的源文件:

shell
ls -al /usr/bin | grep 软件链接文件

两者区别

硬链接和软链接区别在于:硬链接能独立于源文件显示内容,软链接必须依附源文件显示内容。

现在我们删除源文件f1,再去查看硬链接f2和软链接f3:

QQ截图20210820012514

最后要注意一点,无论新建硬链接还是软链接最好都使用绝对路径,否则建立的链接文件可能为红色无法使用。

压缩传输

**记住,一个文件可以直接传输,多个文件需要先打包为一个文件再传输,这样能保证文件传输的成功率。**这就像Windows中的软件,只需要下载一个exe文件或者一个rar文件,运行后里面会有多个文件。

压缩解压

在Linux当中常见的压缩格式:.zip.gzip.tbz

zip格式

将文件或目录压缩为zip格式 - zip 压缩后文件名称.zip 被压缩的文件或目录名称

QQ截图20210831010856

将zip格式的文件解压 - unzip 压缩文件.zip

QQ截图20210831011404

gzip格式

将文件压缩为gzip格式 - gzip 文件名称

QQ截图20210831012442

将gzip格式的文件解压 - gunzip 文件名称.gz

QQ截图20210831013042

!> 注意:gzip格式不能压缩文件夹,且在压缩或解压后均不会保留源文件。

bzip2格式

bzip2格式文件的压缩和解压方式和gzip格式完全一样。

!> 注意:bzip2格式不能压缩文件夹,且在压缩或解压后均不会保留源文件。

xz格式

将文件压缩为xz格式 - xz -z 文件名称

将xz格式的文件解压 - xz -d 文件名称.xz

QQ截图20230729000032

?> 提示:文件压缩会产生大量计算并耗费一定的时间。

归档与解归档

前面提到,gzip格式、bzip2格式不能对文件夹进行压缩,如果我们使用tar命令将文件夹归档为一个文件。

?> 提示:tar归档命令不会对内容进行压缩,反而还会变大。

打包命令 - tar 参数 归档后的文件名称 被归档文件名称

  • -c:归档
  • -x:解归档
  • -t:不解归档,查看内容
  • -f:指定文件
  • -v:查看过程
  • -z:使用gzip压缩解压
  • -j:使用bzip2压缩解压
常规打包解包:
tar -cvf test.tar test  将test文件夹归档为test.tar文件
tar -tf test.tar        不解归档查看test.tar文件里面的文件
tar -xvf test.tar       将test.tar文件解归档

使用gzip压缩解压:
tar -zcvf test.tgz test 使用gzip方式将test文件夹归档并压缩为test.tgz文件
tar -zxvf test.tgz      使用gzip方式将test.tgz文件解压缩解归档

使用bzip2压缩解压:
tar -jcvf test.tbz test 使用bzip2方式将test文件夹归档并压缩为test.tbz文件
tar -jxvf test.tbz      使用bzip2方式将test.tbz文件解压缩解归档

QQ截图20210901011137

安全文件拷贝

安全文件拷贝是基于ssh协议拷贝文件的命令,前提是需要知道目标主机的IP地址和用户名及其对应的用户密码。

安全文件拷贝 - scp 参数

  • -r - 拷贝文件夹
格式:scp /路径/文件名称 用户@IP地址:/路径/文件名称

例子:将本机/usr下的file1.txt文件拷贝至目标主机tmp下并重命名为file2.txt,执行命令后需要输入root登录172.19.216.195主机的密码
scp /usr/file1.txt [email protected]:/tmp/file2.txt

执行命令 scp /传输文件路径/文件名称 用户@目标机ip:/路径/传输后的文件名称 传输打包文件:

QQ截图20211104172240

进入目标机的路径下,就可以看到成功传输的文件了:

QQ截图20211104172955

scp同时也可以在windows中cmd上执行,下图是已经在服务器上配置了window的密钥,不用输入密码可以直接传输文件(若传输的文件存在,则直接覆盖):

QQ截图20211116155005

安全文件传输

安全文件传输 - sftp

使用sftp首先需要登录,输入下面命令会提示用户输入密码:

sftp root@ip

密码通过验证出现下面的命令行就说明成功建立了sftp连接:

sftp>

sftp命令行中常用的命令:

  • help:显示帮助信息。
  • ls/lls:显示远端/本地目录列表。
  • cd/lcd:切换远端/本地路径。
  • mkdir/lmkdir:创建远端/本地目录。
  • pwd/lpwd:显示远端/本地当前工作目录。
  • get:下载文件。
  • put:上传文件。
  • rm:删除远端文件。
  • bye/exit/quit:退出sftp。

QQ截图20211112173230

文件同步

文件同步 - rsync

使用rsync可以实现文件的自动同步,这个对于文件服务器来说相当重要。