打包压缩与软硬链接

4620 字
23 分钟
打包压缩与软硬链接

打包压缩&&软硬链接#

[TOC]


概述#

为什么要压缩?

  1. 大的文件压缩后变小

  2. 节省磁盘空间

  3. 节省网络带宽

  4. 减少磁盘IO、输入输出、大量的读写操作

  5. 打包压缩过程占用本地服务器CPU

    1. 在CPU==使用率低==的时间段进行打包
      1. ⚠️ 不要轻易的打包,因为太占用CPU使用率了
      2. ⚠️ 你CPU使用率上来了,负载也就高了

1782355887121
1782355887121

tar压缩#

📌 tar 常用选项速查:

选项含义
z使用 gzip 进行压缩
c创建压缩文件
v显示压缩过程
f指定文件
t查看压缩包内容(常与 f 连用:tf
C大写,指定解压位置
p小写,保留权限
x解压
--exclude排除某个文件(打包压缩时常用)

💡 如果它是.tar.gz包你去解压,为了兼容旧系统==尽量==明确指定使用 -z

  • -xf 也能自动识别 gzip 压缩的 tar 包,并正确解压
    • 但某些旧版或精简版 tar 不支持自动检测,必须显式指定 -z
Note
  • tar -zcf:将文件/目录打包 并用 gzip 压缩,生成 .tar.gz 文件
    • ✅ gzip 压缩,文件较小
  • tar -cf:将文件/目录打包成一个 .tar 文件(仅打包,不压缩)
    • ❌ 仅打包, 文件较大

⚠️ 关键:f 选项常常放在后面f 后面要跟 .tar.gz 压缩包,不能被其他选项隔开!

Terminal window
❌️ 错误示例:-zcfp 会创建出一个以 p 命名的文件!
✅️ 正确示例:-zcfp f 后面立即跟压缩包路径
[root@R11 sh]# tar -zcpf /data/all.tar.gz /var/log >/dev/null
[root@R11 sh]# ll /data
-rw-r--r-- 1 root root 97787 Mar 14 11:52 all.tar.gz

tar语法结构:

Terminal window
tar 参数选项 压缩包名称.tar.gz file1 file2
# ✅筐子 香蕉 黄瓜 茄子
'我们这里是需要先找个框子,再去把水果装进里面'
📌 '换句话说,就是压缩包在前面'

🌰 案例:压缩多个文件 a.txt 和 b.txt 为 all.tar.gz

Terminal window
[root@oldboyedu ~]# tar zcvf all.tar.gz a.txt b.txt
a.txt
b.txt
'空格进行隔开即可'
[root@oldboyedu ~]# ll
total 12
-rw-r--r-- 1 root root 117 Nov 6 09:22 all.tar.gz

⚠️ 案例:打包不同路径下的文件 /etc/hosts

绝对路径压缩 /根下文件#

李四: 它的 /etc/hosts 中百度对应的域名为 11.22.33.44

张三: 它的 /etc/hosts 中百度对应的域名为 10.0.0.200

我们分两种情况来讨论:

  • 压缩包里面为 /etc/hosts → 张三解压后,自己本地的 /etc/hosts 直接被覆盖了
  • 压缩包里面为 etc/hosts → 张三在 /root 家目录中解压后,当前目录出现解压后的 etc/hosts 文件

✅️ 很明显第二种方式更加的安全。而我们系统压缩时就是会默认去除 /

Terminal window
[root@oldboyedu ~]# tar zcvf h.tar.gz /etc/hosts
tar: Removing leading `/' from member names
/etc/hosts
'系统为了安全、默认将 / 移除'
[root@oldboyedu ~]# tar tf h.tar.gz
etc/hosts
'查看压缩包中的内容,/ 已经被删除了'

相对路径压缩根下文件#

🌰 案例:进入到相对路径压缩 /etc/hosts/etc/passwd

✅ 推荐使用相对路径压缩,先进入到对应的目录下

Terminal window
[root@oldboyedu ~]# cd /etc/
[root@oldboyedu etc]# ll hosts passwd
-rw-r--r-- 1 root root 194 Oct 31 09:28 hosts
-rw-r--r-- 1 root root 1882 Oct 24 23:30 passwd
[root@oldboyedu etc]# tar zcvf a.tar.gz hosts passwd
hosts
passwd
'两个文件都压缩进去了'
[root@oldboyedu etc]# ll a.tar.gz
-rw-r--r-- 1 root root 986 Nov 6 09:29 a.tar.gz
[root@oldboyedu etc]# tar tf a.tar.gz
hosts
passwd
# 查看压缩的两个文件
'相对路径的好处是,前面不会跟路径,只有文件名'

🌰 案例:打包当前的 a.txt 将压缩包放到 /opt 目录

  • 先进入到要打包压缩文件的路径下,把这些文件压缩到指定目录下

压缩包名前可以直接加路径 📌

Terminal window
[root@oldboyedu ~]# rm -rf /opt/*
[root@oldboyedu ~]# ll /opt/
total 0
[root@oldboyedu ~]# tar zcvf /opt/a.tar.gz a.txt
a.txt
'把当前目录下的 a.txt 直接压缩到 /opt/ 目录下'
[root@oldboyedu ~]# ll /opt/
total 4
-rw-r--r-- 1 root root 108 Nov 6 09:33 a.tar.gz

—exclude#

📌 排除打包压缩

Terminal window
[root@oldboyedu ~]# touch {1..3}.txt
[root@oldboyedu ~]# ll
total 0
-rw-r--r-- 1 root root 0 Nov 6 10:09 1.txt
-rw-r--r-- 1 root root 0 Nov 6 10:09 2.txt
-rw-r--r-- 1 root root 0 Nov 6 10:09 3.txt
[root@oldboyedu ~]# tar zcvf a.tar.gz --exclude=1.txt ./*
./2.txt
./3.txt
# 排除 1.txt,其他文件都打包压缩
[root@oldboyedu ~]# tar tf a.tar.gz
./2.txt
./3.txt
# 用 tf 验证一下

🌰 排除 *.txt 的文件

支持通配符

Terminal window
[root@oldboyedu ~]# ll
total 0
-rw-r--r-- 1 root root 0 Nov 6 10:10 1.log
-rw-r--r-- 1 root root 0 Nov 6 10:09 1.txt
-rw-r--r-- 1 root root 0 Nov 6 10:10 2.log
-rw-r--r-- 1 root root 0 Nov 6 10:09 2.txt
-rw-r--r-- 1 root root 0 Nov 6 10:09 3.txt
# 既有 txt 结尾的,也有 log 结尾的
[root@shell ~]# tar zcf /tmp/all.tar.gz --exclude=*.txt ./*
[root@shell ~]# tar tf /tmp/all.tar.gz
./1.log
./2.log
# 排除 .txt 文件,只压缩 .log 文件

tar解压:#

📌 解压常见形式:

  • tar -xvf a.tar — 默认解压到当前路径下
  • tar -zxf /opt/hh.tar.gz -C /home/ — 使用 -C 指定解压目录,使用绝对路径找 /opt/ 下的压缩包

🌰 案例:默认解压到当前路径

Terminal window
[root@oldboy home]# ll
total 4
-rw-r--r-- 1 root root 120 Dec 10 19:06 hh.tar.gz
# 只有一个 tar.gz 压缩包
[root@oldboy home]# tar tf hh.tar.gz
a.txt
b.txt
# 先 tf 查看一下大概的内容
[root@oldboy home]# tar -zxvf hh.tar.gz
a.txt
b.txt
# -v 显示解压过程
[root@oldboy home]# ll
total 4
-rw-r--r-- 1 root root 0 Dec 10 19:05 a.txt
-rw-r--r-- 1 root root 0 Dec 10 19:06 b.txt
-rw-r--r-- 1 root root 120 Dec 10 19:06 hh.tar.gz
# 默认在当前目录解压, 全部都解压出来了

-C#

🌰 案例:指定解压到 /opt 目录

Terminal window
[root@oldboy home]# cd ~
'切换至 /root/ 目录下'
[root@oldboy ~]# ll /opt/
total 4
-rw-r--r-- 1 root root 120 Dec 10 19:06 hh.tar.gz
# /opt/ 下有一个压缩包
[root@oldboy ~]# pwd
/root
# 当前路径
[root@oldboy ~]# tar -zxf /opt/hh.tar.gz -C /home
# -C 指定解压至 /home 目录下
# 使用绝对路径找 /opt/ 下的压缩包
[root@oldboy ~]# ll /home
total 0
-rw-r--r-- 1 root root 0 Dec 10 19:05 a.txt
-rw-r--r-- 1 root root 0 Dec 10 19:06 b.txt
'都解压成功了'

zip压缩:#

Terminal window
zip a.zip '文件'

把要压缩的文件放后面,得先需要一个筐子,再把文件放里面

🌰 案例:打包 a.txt 为 a.zip

Terminal window
[root@oldboyedu ~]# zip a.zip a.txt
adding: a.txt (stored 0%)
[root@oldboyedu ~]# ll
total 4
-rw-r--r-- 1 root root 0 Nov 6 10:14 a.txt
-rw-r--r-- 1 root root 160 Nov 6 10:14 a.zip

🌰 案例:打包不同路径的文件

Terminal window
[root@oldboyedu ~]# zip /opt/all.zip /etc/hosts a.txt
'打包压缩存放到指定路径 /opt/all.zip'
# 两个文件,空格隔开即可
adding: etc/hosts (deflated 56%)
# 这里包含 / 根,所以默认把它去了 → etc/hosts
adding: a.txt (stored 0%)
[root@oldboyedu ~]# ll /opt/
total 4
-rw-r--r-- 1 root root 1424 Nov 6 10:17 all.zip

unzip解压缩#

Terminal window
unzip /tmp/a.zip
# 默认解压在当前路径
-d#

🌰 案例:解压到指定路径

Terminal window
[root@oldboyedu ~]# unzip ./a.zip -d /opt/
Archive: a.zip
extracting: /opt/a.txt
[root@oldboyedu ~]# ll /opt/
total 0
-rw-r--r-- 1 root root 0 Nov 6 10:14 a.txt

文件权限#

可以看到我们整个Linux中,权限只有三部分:可读,可写,可执行

在Linux中,所属用户组没什么意义,我们基本不动属组,我们动的最多的就是属主,主人对它有什么权限,那么这个文件就拥有什么权限

因为所属组和其他用户,往往权限一样都是只读,只能看

image-20260625194249056
image-20260625194249056


在Linux系统中创建一个用户,对应默认创建一个组,组的名称是以用户名命名的

  • 比如创建了一个用户为 oldboy,系统会自动创建 oldboy 命名的一个小组
    • 这个小组中只有一个用户,就是 oldboy

所以我们规范一点的创建用户流程就是: ① 创建属组,并指定组ID ② 创建用户,并指定它的用户ID和组ID

Terminal window
67451445 -rw-r--r-- 1 root root 308 Nov 6 10:26 a.txt
# 文件类型:
- # 普通文件
d # 目录
l # 软链接
b # 块设备
c # 字节设备
# 详细的信息,请看相关笔记
# 9位权限位,三位为一组:
r # 表示读 read
w # 表示写 write
- # 表示没有权限
x # 表示可执行
x 对于'文件'来说, 只有脚本才用到
x 对于'文件夹'来说,有 x 权限,说明能够 cd 进入到里面
# 数字权限:
r: 4 w: 2 x: 1

硬链接#

什么是硬链接?

🔹 相同的 inode 号码互为硬链接

🔹 多个名字代表同一个实体

🔹 类似超市多个门

Tip

这两个文件名不一样,但是呢他们的 inode 号码一样的

所以呢他们指向同一个 block 块,指向同一个数据


Warning

⚠️ 当我们数据丢失的时候,就不能进行大量的写入操作了,你写入的操作越多,被覆盖的可能性就越大,找回的数据就越少

image-20260625194730294
image-20260625194730294

  • 两个硬链接 a.txt 和 b.txt 内容完全一样,它俩操作的是同一个 block 块
  • 删除 a.txt 后:
    • a.txt 这个文件名消失了,硬链接数由 2 变为 1
    • b.txt 的 inode 号没有被删除,仍然可以继续通过 b.txt 访问到原 block 里面的内容
  • 如果硬链接个数为 0,文件没了

硬链接的特点???

🔹 硬链接可以防止误删

❌️ 为什么说”硬链接可以做备份”不准确?

  • 硬链接不是独立副本
    • 它和原文件完全共享数据
    • 修改任何一个硬链接,其他所有硬链接看到的内容都会同步改变
  • 无法防止内容损坏或覆盖
    • 如果你误操作把文件内容清空, 所有硬链接都会立即变成空文件

🔹 创建硬链接几乎不消耗额外磁盘空间,也不会消耗新的 inode 号

🔹 但在用 ls -lh 查看时,会显示源文件实际数据大小

🔹 文件默认1个硬链接、目录默认2个硬链接(目录项本身该目录内部名为 . 的特殊条目

🔹 修改任意文件,其他都变化

🔹 删除一个硬链接文件不影响另一个文件

🔹 目录不能创建硬链接

🔹 文件和目录都可以创建软链接

🔹 硬链接不能跨文件系统(不能跨磁盘)

Note

在 Linux 中,不同磁盘(或文件系统)之间可以有相同的 inode 号

inode 号是在单个文件系统(filesystem)内部唯一的

每个文件系统(例如 /dev/sda1/dev/sdb1 等)都有自己的 inode 表

不同文件系统之间的 inode 号可以重复

/dev/sda1/dev/sda2 不是同一个文件系统

详细解释:

  • /dev/sda 表示第一块 SATA(或 SCSI、NVMe 等)硬盘
  • /dev/sda1 是这块硬盘上的第一个分区
  • /dev/sda2 是这块硬盘上的第二个分区
  • 每个分区(如 sda1、sda2)在 Linux 中被视为独立的块设备

创建硬链接#

Terminal window
ln 源文件 链接文件
# 后面那个才是我们链接的文件
Terminal window
[root@oldboyedu ~]# ln a.txt b.txt
# b.txt 为创建的硬链接
[root@oldboyedu ~]# ll
total 8
-rw-r--r-- 2 root root 9 Nov 6 10:55 a.txt
-rw-r--r-- 2 root root 9 Nov 6 10:55 b.txt
# 创建完成后,硬链接数变为 2
[root@oldboyedu ~]# ln b.txt /opt/c.txt
# 再创建一个硬链接,至 /opt/c.txt
[root@oldboyedu ~]# ll
total 8
-rw-r--r-- 3 root root 9 Nov 6 10:55 a.txt
-rw-r--r-- 3 root root 9 Nov 6 10:55 b.txt
# 硬链接数变为 3

🌰 案例:经常改动一个文件,将系统文件做一个硬链接到 /opt

Terminal window
ln /etc/hosts /opt/hosts
# 防止误删

find -inum#

📌 find 按照 inode 号查找

Terminal window
[root@oldboy home]# ll -i a.txt
34139649 -rw-r--r-- 1 root root 0 Dec 10 19:05 a.txt
# 文件默认有 1 个硬链接
[root@oldboy home]# find / -type f -inum 34139649
/home/a.txt
# 从 / 根找 inode 号为 34139649 的文件

目录硬链接#

Tip
  • 目录==不能==创建硬链接

  • 目录默认有两个硬链接

    • 目录项本身该目录内部名为 . 的特殊条目
Terminal window
[root@oldboyedu ~]# ll -id oldboy/
101679022 drwxr-xr-x 2 root root 19 Nov 6 11:30 oldboy/
# -id 查看目录本身的 inode 号
[root@oldboyedu ~]# ll -ai oldboy/
total 4
101679022 drwxr-xr-x 2 root root 19 Nov 6 11:30 .
# 这个 . 点就表示 oldboy 目录,也就是当前目录
67157057 dr-xr-x--- 6 root root 199 Nov 6 11:29 ..
# 上一级目录的入口,也就是和上一级目录的 inode 号一样
'换句话说,oldboy 目录下的 .. 是上一级目录的硬链接'

我们来验证一下

Terminal window
[root@oldboy home]# rm -rf ./*
[root@oldboy home]# ll
total 0
# 现在当前目录下什么都没有
[root@oldboy home]# mkdir oldboy
[root@oldboy home]# ll -id oldboy/
868700 drwxr-xr-x 2 root root 6 Dec 11 16:21 oldboy/
# 默认硬链接数是 2
[root@oldboy home]# mkdir -p oldboy/test/
# 我们给它创建了一个子目录 test
[root@oldboy home]# ll -id oldboy/
868700 drwxr-xr-x 3 root root 18 Dec 11 16:21 oldboy/
# 再次查看硬链接数变为了 3
[root@oldboy home]# ll -ai oldboy/
total 0
868700 drwxr-xr-x 3 root root 18 Dec 11 16:21 .
# 这个 . 点就是当前目录 oldboy,也就是它的硬链接
33569282 drwxr-xr-x 3 root root 20 Dec 11 16:21 ..
34138933 drwxr-xr-x 2 root root 6 Dec 11 16:21 test
[root@oldboy home]# ll -ai oldboy/test/
total 0
34138933 drwxr-xr-x 2 root root 6 Dec 11 16:21 .
868700 drwxr-xr-x 3 root root 18 Dec 11 16:21 ..
# 当前目录为 test, cd .. 能返回到上级目录 oldboy
# oldboy/test/.. 就是 oldboy 的硬链接

软链接#

📌 特点: 类似 Windows 的快捷方式、里面存储指向源文件的路径

🔹 inode 号码不同

🔹 软链接占一点数据空间存目标路径字符串)

🔹 强依赖原文件被移动、重命名或删除,软连接就会变成”悬空链接”

🔹 不显示实际文件大小

Terminal window
[root@Kylin opt]# ln -s /home/oldboy/a.txt /opt/hh.txt
# 快捷方式
[root@Kylin opt]# ls -lh /home/oldboy/a.txt
-rw-r--r-- 1 root root ~1000M~ Dec 11 17:50 /home/oldboy/a.txt
'源文件1000M'
[root@Kylin opt]# ls -lh /opt/hh.txt
lrwxrwxrwx 1 root root ~18~ Dec 11 17:52 /opt/hh.txt -> /home/oldboy/a.txt
'18字节'

🔹 文件和目录都可以做软链接

🔹 两个文件都可以写入,可查看,本质上是写入到源文件的 block 块

🔹 可以跨文件系统

🔹 创建链接时,建议使用绝对路径

🔹 删除源文件影响链接文件 — 指路牌(软连接)还在,但指向的宝藏(源文件)没了,路就断了

🔹 当我们把源文件重新创建出来(路径,名称不变),依旧能够访问到

🔹 原因:软链接存放着源文件的路径

🔹 删除链接文件不影响源文件 — 虽然指路牌(软连接)没了,但是宝藏(源文件)还在

🔹 硬链接同理,也不影响源文件

创建软链接:#

Terminal window
ln -s 源文件 链接文件
Terminal window
[root@oldboyedu ~]# ln -s a.txt b.txt
# b.txt 为链接文件也就是快捷方式、a.txt 才是源文件
[root@oldboyedu ~]# ll
lrwxrwxrwx 1 root root 5 Nov 6 11:41 b.txt -> a.txt
[root@oldboyedu ~]# ll -i
total 0
67157818 -rw-r--r-- 1 root root 0 Nov 6 11:40 a.txt
67161321 lrwxrwxrwx 1 root root 5 Nov 6 11:41 b.txt -> a.txt
# inode 号并不一样

🌰 两个文件都可以写入,查看

Terminal window
[root@oldboyedu ~]# echo aaa > a.txt
[root@oldboyedu ~]# cat b.txt
aaa
# 通过软链接看到源文件内容
[root@oldboyedu ~]# echo bbb >> b.txt
[root@oldboyedu ~]# cat b.txt
aaa
bbb
[root@oldboyedu ~]# cat a.txt
aaa
bbb
# 写入 b.txt 实际上也是写入 a.txt
Note
  • 软链接依赖源文件存在
    • 源文件改名/删除 → 链接失效
    • 源文件恢复同名 → 链接恢复可用
  • 重新创建同名文件后,软链接自动“复活”指向新文件(因路径匹配)
    • 软链接存储的是路径字符串
Terminal window
[root@oldboy home]# ll -ih
total 0
34138933 -rw-r--r-- 1 root root 0 Dec 11 16:43 a.txt
34139649 lrwxrwxrwx 1 root root 5 Dec 11 16:44 b.txt -> a.txt
[root@oldboy home]# echo fasdf >> a.txt
# 往源文件追加内容
[root@oldboy home]# cat a.txt
fasdf
[root@oldboy home]# cat b.txt
fasdf
'源文件和快捷方式都能看'
[root@oldboy home]# ll -ih
total 4.0K
34138933 -rw-r--r-- 1 root root 6 Dec 11 16:44 a.txt
34139649 lrwxrwxrwx 1 root root 5 Dec 11 16:44 b.txt -> a.txt
inode号不一样
l打头:软链接(权限固定l777)
[root@oldboy home]# mv a.txt hhh.txt
⚠️ 源文件改名
[root@oldboy home]# ll -ih
total 4.0K
34139649 lrwxrwxrwx 1 root root 5 Dec 11 16:44 b.txt -> a.txt
34138933 -rw-r--r-- 1 root root 6 Dec 11 16:44 hhh.txt
[root@oldboy home]# cat b.txt
cat: b.txt: No such file or directory
'快捷方式无法访问'
[root@oldboy home]# mv hhh.txt a.txt
重新改回来,又能查看了
[root@oldboy home]# cat b.txt
fasdf
[root@oldboy home]# rm -rf a.txt
# 删除源文件
[root@oldboy home]# cat b.txt
cat: b.txt: No such file or directory
# 软链接文件失效
📌 当我们把源文件重新创建出来(路径,名称不变)依旧能够访问到
[root@oldboy home]# echo "这是新的a.txt文件" > a.txt
# a.txt重新创建出来
[root@oldboy home]# cat b.txt
这是新的a.txt文件
# 查看快捷方式,又有了

目录软链接#

🌰 /home/oldboy 目录, 在 /opt 下创建一个快捷方式

✅ 访问 /opt/test 实际访问的是 /home/oldboy 目录

Terminal window
ln -s /home/oldboy/ /opt/test
# 创建链接时,建议使用绝对路径
'相对路径易出错,绝对路径更可靠'
[root@oldboy home]# ll
total 0
drwxr-xr-x 2 root root 6 Dec 11 17:17 oldboy
# 在/home/下创建目录
[root@oldboy home]# ln -s oldboy/ /opt/test
'相对路径创建软链接'
[root@oldboy home]# ll /opt/
total 0
lrwxrwxrwx 1 root root 7 Dec 11 17:17 test -> oldboy/
# test -> ./oldboy/
⚠️ 当前目录/opt下压根没有这个目录 自然访问不到
[root@oldboy home]# cd /opt/test
-bash: cd: /opt/test: No such file or directory
[root@oldboy home]# rm -rf /opt/test
=====================================
[root@oldboy home]# ln -s /home/oldboy/ /opt/test
使用绝对路径创建链接
[root@oldboy home]# ll /opt/
total 0
lrwxrwxrwx 1 root root 13 Dec 11 17:19 test -> /home/oldboy/
# 有了绝对的位置 → 我们系统也能够找到
[root@oldboy home]# cd /opt/test
[root@oldboy test]# pwd
/opt/test
[root@oldboy test]# echo hhh > a.txt
# 创建文件,test下能看见
[root@oldboy test]# ll
total 4
-rw-r--r-- 1 root root 4 Dec 11 17:20 a.txt
[root@oldboy test]# ll /home/oldboy/
total 4
-rw-r--r-- 1 root root 4 Dec 11 17:20 a.txt
# /home/oldboy/也能看见
'本质写入到这里面去了'

版本升级#

  • 用户一直访问的都是 game 目录
  • 是从不同的版本软链接到 game 目录下
  • 如果 v1.2 版本崩了,删除 game 快捷方式,重新把 v1.1 软链接过去即可
  • ✅️ 保留版本号(源文件名不动),软链接至一个更加简短的文件名中

💡 硬链接不能链接目录,也不能跨文件系统,所以我们选择软链接


面试题#

软链接和硬链接的区别? — inode号 / 磁盘空间 / 创建方式 / 删除

🔹 硬链接 inode 相同

🔹 软连接 inode 不同

🔹 硬链接几乎不占用磁盘空间,但显示实际文件大小

🔹 软链接存目标文件路径,不显示实际文件大小

🔹 目录不能创建硬链接

🔹 文件和目录都可以创建软链接

🔹 硬链接不能跨文件系统

🔹 软链接可以跨文件系统

🔹 创建方式不同:硬链接 ln,软链接 ln -s

🔹 删除硬链接和软链接都不影响源文件

🔹 删除源文件不影响硬链接

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

打包压缩与软硬链接
https://www.kpyun.fun/posts/basics/core/core10/
作者
久棹
发布于
2025-08-03
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
久棹
只要胆子大,天天寒暑假!
公告
欢迎来到久棹的技术小站!本站专注 Linux 运维学习笔记分享,如有问题欢迎交流探讨 🎉
分类
标签
站点统计
文章
98
分类
11
标签
203
总字数
244,453
运行时长
0
最后活动
0 天前
站点信息
构建平台
Local
博客版本
Firefly v6.13.5
文章许可
CC BY-NC-SA 4.0

文章目录