服务器新硬盘分区、格式化和挂载
文章目录
- 参考文献
- 查看了一下起点现状
- 分区
- (base) ~ sudo parted /dev/sdc
- mklabel gpt(设置分区类型)
- 增加分区
- 格式化
- 需要先退出quit(可以)
- (base) / sudo mkfs.xfs /dev/sdc/sdc1(失败)
- sudo mkfs.xfs /dev/sdc1(成功。sdc1是硬盘标识符+分区号,和路径写法不同)
- 挂载
- 创建用于挂载的文件夹
- 进行挂载 vi /etc/fstab(失败)
- sudo vi /etc/fstab使用超级管理员权限再进行一遍上面操作
- 加载 sudo mount -a
- 设置文件夹权限:
参考文献
linux parted非交互式分区实例 —— 筑梦之路
Linux磁盘格式化(mkfs、mkfs.xfs、mkfs.ext4)、Linux文件系统的校验(xfs_repair、fsck_ext4)
【LINUX】磁盘分区、挂载
linux7磁盘挂载大于16T,CentOS6.5挂载超过16T的大容量存储空间,格式化为xfs
服务器硬盘安装配置及系统重装操作记录
服务器的硬盘不够大,导师新买了块用,安装的起点是这样子的
查看了一下起点现状

发现第二块没挂载了,但是是别人的硬盘,所以就先不管了。
(base) ~ sudo fdisk -l
[sudo] password for cszx:
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.Disk /dev/sda: 239.9 GB, 239902654464 bytes, 468559872 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: gpt
Disk identifier: AD68530F-9D77-4143-91E1-D222825C2F10# Start End Size Type Name1 2048 411647 200M EFI System EFI System Partition2 411648 2508799 1G Microsoft basic 3 2508800 468557823 222.2G Linux LVM
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.Disk /dev/sdb: 239.9 GB, 239902654464 bytes, 468559872 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: gpt
Disk identifier: 2BB6EFDB-AB43-4872-B56F-88620F6AF0B3# Start End Size Type Name1 34 2047 1007K BIOS boot 2 2048 1050623 512M EFI System 3 1050624 468559838 222.9G Linux LVM Disk /dev/mapper/centos-root: 53.7 GB, 53687091200 bytes, 104857600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytesDisk /dev/mapper/centos-swap: 4294 MB, 4294967296 bytes, 8388608 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytesDisk /dev/mapper/centos-home: 180.6 GB, 180631896064 bytes, 352796672 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytesDisk /dev/mapper/pve-swap: 8589 MB, 8589934592 bytes, 16777216 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytesDisk /dev/mapper/pve-root: 59.6 GB, 59592671232 bytes, 116391936 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytesDisk /dev/mapper/pve-vm--105--disk--0: 4 MB, 4194304 bytes, 8192 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 65536 bytes / 65536 bytesDisk /dev/mapper/pve-vm--105--disk--1: 128.8 GB, 128849018880 bytes, 251658240 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 65536 bytes / 65536 bytes
Disk label type: dos
Disk identifier: 0x00000000Device Boot Start End Blocks Id System
/dev/mapper/pve-vm--105--disk--1p1 1 4294967295 2147483647+ ee GPT
Partition 1 does not start on physical sector boundary.Disk /dev/sdc: 14000.5 GB, 14000519643136 bytes, 27344764928 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
分区
(base) ~ sudo parted /dev/sdc
[sudo] password for cszx:
GNU Parted 3.1
Using /dev/sdc
Welcome to GNU Parted! Type ‘help’ to view a list of commands.
mklabel gpt(设置分区类型)
增加分区
mkpart primary 0% 25%
parted -s /dev/sdc mkpart primary 25% 50%
parted -s /dev/sdc mkpart primary 50% 75%
parted -s /dev/sdc mkpart primary 75% 100%
两种命令的结果看上去一样,采用第一行的形式没有详细信息的输入
(parted) mklabel gpt
(parted) mkpart primary 0% 25%
(parted) parted -s /dev/sdc mkpart primary 25% 50% align-check TYPE N check partition N for TYPE(min|opt) alignmenthelp [COMMAND] print general help, or help on COMMANDmklabel,mktable LABEL-TYPE create a new disklabel (partition table)mkpart PART-TYPE [FS-TYPE] START END make a partitionname NUMBER NAME name partition NUMBER as NAMEprint [devices|free|list,all|NUMBER] display the partition table, available devices, free space, all found partitions, or aparticular partitionquit exit programrescue START END rescue a lost partition near START and ENDresizepart NUMBER END resize partition NUMBERrm NUMBER delete partition NUMBERselect DEVICE choose the device to editdisk_set FLAG STATE change the FLAG on selected devicedisk_toggle [FLAG] toggle the state of FLAG on selected deviceset NUMBER FLAG STATE change the FLAG on partition NUMBERtoggle [NUMBER [FLAG]] toggle the state of FLAG on partition NUMBERunit UNIT set the default unit to UNITversion display the version number and copyright information of GNU Partedalign-check TYPE N check partition N for TYPE(min|opt) alignmenthelp [COMMAND] print general help, or help on COMMANDmklabel,mktable LABEL-TYPE create a new disklabel (partition table)mkpart PART-TYPE [FS-TYPE] START END make a partitionname NUMBER NAME name partition NUMBER as NAMEprint [devices|free|list,all|NUMBER] display the partition table, available devices, free space, all found partitions, or aparticular partitionquit exit programrescue START END rescue a lost partition near START and ENDresizepart NUMBER END resize partition NUMBERrm NUMBER delete partition NUMBERselect DEVICE choose the device to editdisk_set FLAG STATE change the FLAG on selected devicedisk_toggle [FLAG] toggle the state of FLAG on selected deviceset NUMBER FLAG STATE change the FLAG on partition NUMBERtoggle [NUMBER [FLAG]] toggle the state of FLAG on partition NUMBERunit UNIT set the default unit to UNITversion display the version number and copyright information of GNU Partedalign-check TYPE N check partition N for TYPE(min|opt) alignmenthelp [COMMAND] print general help, or help on COMMANDmklabel,mktable LABEL-TYPE create a new disklabel (partition table)mkpart PART-TYPE [FS-TYPE] START END make a partitionname NUMBER NAME name partition NUMBER as NAMEprint [devices|free|list,all|NUMBER] display the partition table, available devices, free space, all found partitions, or aparticular partitionquit exit programrescue START END rescue a lost partition near START and ENDresizepart NUMBER END resize partition NUMBERrm NUMBER delete partition NUMBERselect DEVICE choose the device to editdisk_set FLAG STATE change the FLAG on selected devicedisk_toggle [FLAG] toggle the state of FLAG on selected deviceset NUMBER FLAG STATE change the FLAG on partition NUMBERtoggle [NUMBER [FLAG]] toggle the state of FLAG on partition NUMBERunit UNIT set the default unit to UNITversion display the version number and copyright information of GNU Parted
可以了
查看
格式化
在parted内mkfs.xfs /dev/sdc/sdc1(失败)
(parted) mkfs.xfs /dev/sdc/sdc1 align-check TYPE N check partition N for TYPE(min|opt) alignmenthelp [COMMAND] print general help, or help on COMMANDmklabel,mktable LABEL-TYPE create a new disklabel (partition table)mkpart PART-TYPE [FS-TYPE] START END make a partitionname NUMBER NAME name partition NUMBER as NAMEprint [devices|free|list,all|NUMBER] display the partition table, available devices, free space, all found partitions, or aparticular partitionquit exit programrescue START END rescue a lost partition near START and ENDresizepart NUMBER END resize partition NUMBERrm NUMBER delete partition NUMBERselect DEVICE choose the device to editdisk_set FLAG STATE change the FLAG on selected devicedisk_toggle [FLAG] toggle the state of FLAG on selected deviceset NUMBER FLAG STATE change the FLAG on partition NUMBERtoggle [NUMBER [FLAG]] toggle the state of FLAG on partition NUMBERunit UNIT set the default unit to UNITversion display the version number and copyright information of GNU Partedalign-check TYPE N check partition N for TYPE(min|opt) alignmenthelp [COMMAND] print general help, or help on COMMANDmklabel,mktable LABEL-TYPE create a new disklabel (partition table)mkpart PART-TYPE [FS-TYPE] START END make a partitionname NUMBER NAME name partition NUMBER as NAMEprint [devices|free|list,all|NUMBER] display the partition table, available devices, free space, all found partitions, or aparticular partitionquit exit programrescue START END rescue a lost partition near START and ENDresizepart NUMBER END resize partition NUMBERrm NUMBER delete partition NUMBERselect DEVICE choose the device to editdisk_set FLAG STATE change the FLAG on selected devicedisk_toggle [FLAG] toggle the state of FLAG on selected deviceset NUMBER FLAG STATE change the FLAG on partition NUMBERtoggle [NUMBER [FLAG]] toggle the state of FLAG on partition NUMBERunit UNIT set the default unit to UNITversion display the version number and copyright information of GNU Parted
需要先退出quit(可以)
(base) / sudo mkfs.xfs /dev/sdc/sdc1(失败)
[sudo] password for cszx:
/dev/sdc/sdc1: Not a directory
sudo mkfs.xfs /dev/sdc1(成功。sdc1是硬盘标识符+分区号,和路径写法不同)
meta-data=/dev/sdc1 isize=512 agcount=4, agsize=213630912 blks= sectsz=4096 attr=2, projid32bit=1= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=854523648, imaxpct=5= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=417247, version=2= sectsz=4096 sunit=1 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
sudo mkfs.xfs /dev/sdc2
sudo mkfs.xfs /dev/sdc3
sudo mkfs.xfs /dev/sdc4
(base) / sudo mkfs.xfs /dev/sdc2
[sudo] password for cszx:
meta-data=/dev/sdc2 isize=512 agcount=4, agsize=213630976 blks= sectsz=4096 attr=2, projid32bit=1= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=854523904, imaxpct=5= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=417248, version=2= sectsz=4096 sunit=1 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
^[[A%
(base) / sudo mkfs.xfs /dev/sdc3
meta-data=/dev/sdc3 isize=512 agcount=4, agsize=213630976 blks= sectsz=4096 attr=2, projid32bit=1= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=854523904, imaxpct=5= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=417248, version=2= sectsz=4096 sunit=1 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
(base) / sudo mkfs.xfs /dev/sdc4
meta-data=/dev/sdc4 isize=512 agcount=4, agsize=213630912 blks= sectsz=4096 attr=2, projid32bit=1= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=854523648, imaxpct=5= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=417247, version=2= sectsz=4096 sunit=1 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
(base) /
查看,可以了

挂载
创建用于挂载的文件夹
mkdir c1
mkdir c2
mkdir c3
mkdir c4
进行挂载 vi /etc/fstab(失败)

加入四行
/dev/sdc1 /home/cszx/c1 xfs defaults 0 0
/dev/sdc2 /home/cszx/c2 xfs defaults 0 0
/dev/sdc3 /home/cszx/c3 xfs defaults 0 0
/dev/sdc4 /home/cszx/c4 xfs defaults 0 0
保存并退出:wq!
报错"/etc/fstab" E212: Can’t open file for writing
原因是权限不够,退出:q!
sudo vi /etc/fstab使用超级管理员权限再进行一遍上面操作

保存并退出:wq!
加载 sudo mount -a
查看

成功了。
发现需要使用sudo权限,mkdir: cannot create directory ‘zgp’: Permission denied
设置文件夹权限:
sudo chmod 777 /home/cszx/c1
sudo chmod 777 /home/cszx/c2
sudo chmod 777 /home/cszx/c3
sudo chmod 777 /home/cszx/c4
相关文章:
服务器新硬盘分区、格式化和挂载
文章目录 参考文献查看了一下起点现状分区(base) ~ sudo parted /dev/sdcmklabel gpt(设置分区类型)增加分区 格式化需要先退出quit(可以)(base) / sudo mkfs.xfs /dev/sdc/sdc1(失败)sudo mkfs.xfs /dev/s…...
Openldap集成Kerberos
文章目录 一、背景二、Openldap集成Kerberos2.1kerberos服务器中绑定Ldap服务器2.1.1创建LDAP管理员用户2.1.2添加principal2.1.3生成keytab文件2.1.4赋予keytab文件权限2.1.5验证keytab文件2.1.6增加KRB5_KTNAME配置 2.2Ldap服务器中绑定kerberos服务器2.2.1生成LDAP数据库Roo…...
(创新)基于VMD-CNN-BiLSTM的电力负荷预测—代码+数据
目录 一、主要内容: 二、运行效果: 三、VMD-BiLSTM负荷预测理论: 四、代码数据下载: 一、主要内容: 本代码结合变分模态分解( Variational Mode Decomposition,VMD) 和卷积神经网络(Convolutional neu…...
机器 reboot 后 kubelet 目录凭空消失的灾难恢复
文章目录 [toc]事故背景报错内容 修复过程停止 kubelet 服务备份 kubelet.config重新生成 kubelet.config重新生成 kubelet 配置文件对比 kubeadm-flags.env 事故背景 因为一些情况,需要 reboot 服务器,结果 reboot 机器后,kubeadm init 节点…...
Pytorch构建vgg16模型
VGG-16 1. 导入工具包 import torch.optim as optim import torch import torch.nn as nn import torch.utils.data import torchvision.transforms as transforms import torchvision.datasets as datasets from torch.utils.data import DataLoader import torch.optim.lr_…...
分支结构相关
1.if 语句 结构: if 条件语句: 代码块 小练习: 使用random.randint()函数随机生成一个1~100之间的整数,判断是否是偶数 import random n random.randint(1,100) print(n) if n % 2 0:print(str(n) "是偶数") 2.else语…...
flutter开发实战-RichText富文本居中对齐
flutter开发实战-RichText富文本居中对齐 在开发过程中,经常会使用到RichText,当使用RichText时候,不同文本字体大小默认没有居中对齐。这里记录一下设置过程。 一、使用RichText 我这里使用RichText设置不同字体大小的文本 Container(de…...
智慧消防新篇章:可视化数据分析平台引领未来
一、什么是智慧消防可视化数据分析平台? 智慧消防可视化数据分析平台,运用大数据、云计算、物联网等先进技术,将消防信息以直观、易懂的图形化方式展示出来。它不仅能够实时监控消防设备的运行状态,还能对火灾风险进行预测和评估…...
u8g2 使用IIC驱动uc1617 lcd有时候某些像素显示不正确
折腾了很久,本来lcd是挂载到已经存在的iic总线上的,总线原来是工作正常的,挂载之后lcd也能显示,但是有时候显示不正确,有时候全白的时候有黑色的杂点。 解决方案: 1.最开始以为是IIC总线速度快࿰…...
使用opencv合并两个图像
本节的目的 linear blending(线性混合)使用**addWeighted()**来添加两个图像 原理 (其实我也没太懂,留个坑,感觉本科的时候线代没学好。不对,我本科就没学线代。) 源码分析 源码链接 #include "opencv2/imgc…...
k8s学习笔记(一)
configMap 一般用来存储配置信息 创建configMap 从文件中获取信息创建:kubectl create configmap my-config --from-file/tmp/k8s/user.txt 直接指定信息: kubectl create configmap my-config01 --from-literalkey1config1 --from-literalkey2confi…...
自学前端——JavaScript篇
JavaScript 什么是JavsScript JavaScript是一种轻量级、解释型、面向对象的脚本语言。它主要被设计用于在网页上实现动态效果,增加用户与网页的交互性。 作为一种客户端语言,JavaScript可以直接嵌入HTML,并在浏览器中执行。 与HTML和CSS不…...
高考毕业季--浅谈自己感想
随着2024年高考落幕,数百万高三学生又将面临人生中的重要抉择:选择大学专业。在这个关键节点,计算机相关专业是否仍是“万金油”的选择?在过去很长一段时间里,计算机科学与技术、人工智能、网络安全、软件工程等专业一…...
遥感图像地物覆盖分类,数据集制作-分类模型对比-分类保姆级教程
遥感图像地物覆盖分类,数据集制作-分类模型对比-分类保姆级教程 在遥感影像上人工制作分类数据集采用python+gdal库制作数据集挑选分类模型(RF、KNN、SVM、逻辑回归)选择随机森林模型建模分类遥感图像预测在遥感影像上人工制作分类数据集 1.新建shp文件 地理坐标系保持和影像…...
【Android面试八股文】Kotlin内置标准函数let的原理是什么?
确实,let 函数在 Kotlin 中被广泛使用,特别是在处理可空类型或者需要在对象上执行一系列操作后返回结果的场景中非常有用。 let 函数的源代码 /*** Calls the specified function [block] with `this` value as its argument and returns its result.** For detailed usage i…...
网工面试总结1
网工还是要基本会ACL、ISIS、OSPF、MPLS、QOS、GVRP、VRRP、FW、BGP、STP、IV4\6、WLAN、路由策略、策略路由、LACP等都或多或少要知道,常见的哪怕没有实战,要在ensp、cisco中练过! OSPF邻居故障,你认为是哪些原因?或者…...
[stm32]密码锁
[stm32]密码锁 需要资料的请在文章末尾获取~ 01描述 使用原件:stm32f103c8t6最小系统板x1,0.96寸OLED显示屏四角x1,4x4矩阵按键x1; 键位对应图: 1, 2, 3, 4------------- 1 2 3 4 5&am…...
优化yarn在任务执行时核数把控不准确的问题
核数不准这个事情是个概率问题,如果你碰见了,只能说你有点非欧,本质上是因为集群配置问题,默认时yarn不会去精准把控任务的核数,因为默认的资源计算方式是用实际内存去估算核数,这就导致如果大家配置任务时…...
2024年,收付通申请开通流程
大家好,今天咱们来聊聊关于APP场景中开通微信收付通的一些实用小窍门。在如今的移动互联网时代,很多商家都选择通过APP来提供服务和产品,因此如何在APP中顺利集成微信收付通功能,让用户能够轻松完成支付,就显得尤为重要…...
Django使用django-apscheduler实现定时任务
定时任务可以在后台定时执行指定的代码,避免了很多人为操作。下面是在Django项目中如何使用定时任务的具体操作流程。 我在这里使用的 django-apscheduler库来实现定时任务。 一、安装 django-apscheduler pip install django-apscheduler二、在项目的setting.py…...
MCprep插件终极指南:从Minecraft世界到专业动画的完整解决方案
MCprep插件终极指南:从Minecraft世界到专业动画的完整解决方案 【免费下载链接】MCprep Blender python addon to increase workflow for creating minecraft renders and animations 项目地址: https://gitcode.com/gh_mirrors/mc/MCprep 你是否曾梦想将Min…...
三步掌握BepInEx插件框架:零基础也能懂的Unity游戏扩展指南
三步掌握BepInEx插件框架:零基础也能懂的Unity游戏扩展指南 【免费下载链接】BepInEx Unity / XNA game patcher and plugin framework 项目地址: https://gitcode.com/GitHub_Trending/be/BepInEx BepInEx作为Unity/XNA游戏的插件框架,为开发者和…...
如何构建你的第一个Python高频交易模型:完整实战指南
如何构建你的第一个Python高频交易模型:完整实战指南 【免费下载链接】High-Frequency-Trading-Model-with-IB A high-frequency trading model using Interactive Brokers API with pairs and mean-reversion in Python 项目地址: https://gitcode.com/gh_mirror…...
Realtek RTL8125 2.5GbE网卡驱动安装与优化全指南:从识别到调优的完整解决方案
Realtek RTL8125 2.5GbE网卡驱动安装与优化全指南:从识别到调优的完整解决方案 【免费下载链接】realtek-r8125-dkms A DKMS package for easy use of Realtek r8125 driver, which supports 2.5 GbE. 项目地址: https://gitcode.com/gh_mirrors/re/realtek-r8125…...
OpenClaw调试技巧:Qwen3-32B任务失败排查手册
OpenClaw调试技巧:Qwen3-32B任务失败排查手册 1. 为什么需要这份手册? 上周我尝试用OpenClaw自动整理项目文档时,遇到了一个诡异现象:同样的任务在白天能顺利完成,深夜运行时却频繁报错。经过72小时的问题追踪&#…...
Stable Diffusion像素艺术工作站:Pixel Fashion Atelier支持LoRA在线热切换
Stable Diffusion像素艺术工作站:Pixel Fashion Atelier支持LoRA在线热切换 1. 像素时装锻造坊简介 Pixel Fashion Atelier是一款基于Stable Diffusion与Anything-v5的图像生成工作站,专为像素艺术创作而设计。与传统AI工具不同,它采用了复…...
实战应用:开发Win11右键菜单管理器——从快马AI生成完整项目开始
实战应用:开发Win11右键菜单管理器——从快马AI生成完整项目开始 最近帮朋友解决Win11右键菜单恢复问题,发现网上教程都是手动改注册表,既麻烦又容易出错。作为开发者,我决定用C#写个可视化工具来管理右键菜单。这个需求其实很典…...
B站Index-AniSora本地部署避坑指南:4张4090显卡实测+常见错误解决
4张RTX 4090实战:Index-AniSora动漫生成模型深度部署手册 当四张RTX 4090显卡同时亮起RGB灯效时,机箱内涌动的不仅是1.2kW的功耗,更是一个能够将二次元幻想转化为动态画面的数字炼金术工坊。B站开源的Index-AniSora模型正在重新定义独立创作者…...
3分钟掌握Balena Etcher:安全可靠的跨平台镜像烧录工具
3分钟掌握Balena Etcher:安全可靠的跨平台镜像烧录工具 【免费下载链接】etcher Flash OS images to SD cards & USB drives, safely and easily. 项目地址: https://gitcode.com/GitHub_Trending/et/etcher Balena Etcher是一款专为简化操作系统镜像部署…...
如何高效迁移至WeFriends:微信好友关系管理工具全新升级指南
如何高效迁移至WeFriends:微信好友关系管理工具全新升级指南 【免费下载链接】WechatRealFriends 微信好友关系一键检测,基于微信ipad协议,看看有没有朋友偷偷删掉或者拉黑你 项目地址: https://gitcode.com/gh_mirrors/we/WechatRealFrien…...
