目的:
生成一个NTFS文件系统,要求:
1、$MFT至少2个碎片
2、根目录下建90个以从1开始的数字编号为名的子目录,每个子目录下建80-100个文件,文件编号从1开始编起。
3、有大量文件是由2个或以上碎片组成。(本例多为2个碎片)
1、shell 脚本如下:
#!/bin/sh
#
#
# Created by www.frombyte.com 张宇 on 2017/3/29.
#
mkdir /mnt/padding
cd /mnt/padding
#第一段for,先创建30个子目录,每个目录下80-100个文件,大小为16K-48K,这一段基本连续
for((i=1;i<=30;i++));do
mkdir /mnt/$i
r1=$(($RANDOM % 20))
for((ii=1;ii<80+$r1;ii++));do
r2=$(($RANDOM % 8 + 4))
dd if=/dev/urandom of=/mnt/$i/$ii bs=4096 count=$r2
done
done
#sleep 60 便于让文件系统flush
sleep 60
#第二段for,使用dd把第一段for创建出的文件,从0-16K的位置,写入48K-80K,基本保证约2个碎片
for((i=1;i<=30;i++));do
cd /mnt/$i
r2=$(($RANDOM % 8 + 12))
r3=$(($RANDOM % 4))
for ii in `ls`;do
r2=$(($RANDOM % 8 + 12))
dd if=/dev/urandom of=/mnt/$i/$ii bs=4096 seek=$r3 count=$r2
done
done
#填充65000个文件,这样可以使NTFS $MFT填充到第一个使用的数据区段,从而产生$MFT 碎片。
for((i=1;i<65000;i++));do
touch $i
done
#后面两段for,作用同第一、第二段for,不出意外,这些文件的文件系统将写入$mft的第二个片断,更具备人为跟踪的知识全面性考察。
for((i=31;i<=90;i++));do
mkdir /mnt/$i
r1=$(($RANDOM % 20))
for((ii=1;ii<80+$r1;ii++));do
r2=$(($RANDOM % 8 + 4))
dd if=/dev/urandom of=/mnt/$i/$ii bs=4096 count=$r2
done
done
sleep 60
for((i=31;i<=90;i++));do
cd /mnt/$i
r2=$(($RANDOM % 8 + 12))
r3=$(($RANDOM % 4))
for ii in `ls`;do
r2=$(($RANDOM % 8 + 12))
dd if=/dev/urandom of=/mnt/$i/$ii bs=4096 seek=$r3 count=$r2
done
done
#删除padding,以免目录结构太臃肿
rm -rf /mnt/padding
2、在shell中执行如下命令:
qemu-img create -f raw test2.img 1G
qemu-nbd -f raw -c /dev/nbd0 test2.img
fdisk /dev/nbd0 #此命令交互,目的为/dev/nbd0分个区,不想交互,可使用parted加参数
mkfs.ntfs -f /dev/nbd0p1
mount.ntfs-3g /dev/nbd0p1 /mnt
/bin/bash run.sh
3、测试结果是否满意:
命令一:ntfscluster -f -I 0 /dev/nbd0p1
结果与预想相符,$mft果然为2个片断:
Forced to continue.
Dump: /$MFT
0x10 - resident
0x30 - resident
0x80 - non-resident
VCN LCN Length
0 4 16387
16387 20488 1880
0xb0 - non-resident
VCN LCN Length
0 2 2
2 16391 1
命令二:ntfscluster -f -F 1/ /dev/nbd0p1
结果与预想相符,抽样目录,也为2个片断
Forced to continue.
Unnormalized path 1/
Dump: /1
0x10 - resident
0x30 - resident
0x50 - resident
0x90 - resident
0xa0 - non-resident
VCN LCN Length
0 53328 2
2 49238 1
0xb0 - resident
命令三:
ntfscluster -f -F 60/9 /dev/nbd0p1
结果与预想相符,抽样文件,也为2个片断
Forced to continue.
Dump: /60/9
0x10 - resident
0x30 - resident
0x50 - resident
0x80 - non-resident
VCN LCN Length
0 211991 8
8 115298 7
Linux中生成测试用的NTFS文件系统
发表于:2017-08-08
作者:张宇(数据恢复)
来源:
 相关文章
Linux入门指南:轻松掌握基础,开启你... 一图看懂 Linux 文件系统的组成 在Linux服务器上部署容器化的企业级文... 在Linux服务器上部署容器化的分布式缓... 利用Linux中断处理机制提高系统性能 利用Linux虚拟化技术实现资源隔离和管理- 周排行
- 月排行
-   途游邹轶:中小公司的运维怎么做?
-   用这个开源工具让你的数据对老板友好起来
-   Linux中的主机、控制台和终端的起源
-   “黑客”入门学习之“Windows组策略”
-   如果只把AIOps看做运维技术,未免也太...
-   关于运维,阿里云、字节、华科的专家...
-   Windows 10安全指南:如何通过配置全...
-   强大!Nginx配置在线一键生成“神器”
-   一张思维导图,包罗全面监控体系建设要点
-   七个优秀开源免费项目管理看板系统
-   HBase最佳实践——用好你的操作系统
-   关于运维,阿里云、字节、华科的专家...
-   利用Linux中断处理机制提高系统性能
-   每个系统管理员都要知道的30个Linux系...