Linux上如何使用随机数据填充满磁盘

最近,项目中需要完成这样的一个任务:需要挂在一个磁盘,在这个磁盘中存放一个文件,除了这些文件之外,我们希望该磁盘的其他部分都被随机数据填充-----我们不想在这个磁盘上,除了该文件外还能存放其他文件,也不希望留给敌手存放其他文件的空间。

通过查询资料,我知道需要了解 dd命令、磁盘挂载等知识。

想法

我的想法是:

  1. 先创建一个文件夹,限制该文件夹的大小。实现方式就是,创建一个20 M大小的磁盘镜像,挂载到文件夹下,这样这个文件夹的大小就限制死了。
  2. 对该文件,先填充自己需要的文件。
  3. 填充好必须的,自己需要的文件后,开始填充乱码。

实现方式如下:

利用 /dev/urandom 进行格式化

/dev/urandom,它是“随机数设备”,它的本领就是可以生成理论意义上的随机数。
如果我们想清除硬盘里的某些机密数据,就可以使用 /dev/urandom 这个随机数生成器来产生随机数据,写到磁盘上,以确保将磁盘原始数据完全覆盖掉。

dd if=/dev/urandom of=/dev/sdav

dd 可从标准输入或文件中读取数据,根据指定的格式来转换数据,再输出到文件、设备或标准输出。

参数说明:

  • if=文件名:输入文件名,默认为标准输入。即指定源文件。
  • of=文件名:输出文件名,默认为标准输出。即指定目的文件。(注意,这个是文件,不是文件夹)

如何限制文件夹大小

Linux 上有时由于一些特殊的用途,我们需要限制一个文件夹的大小。核心方法都是把需要限制的文件夹挂载在一个大小固定的分区上。

我们可以使用镜像文件挂载的方式

# 生成一个10M的文件
dd if=/dev/zero of=disk.img bs=1M count=10
# 把生成的文件虚拟为块设备
losetup /dev/loop0 disk.img
# 格式化设备
mkfs.ext4 /dev/loop0
# 挂载
mount disk.img testdir
# 卸载
umount testdit
# 卸载loop设备与文件的关联
losetup -d /dev/loop0

实践用例:

# 创建了一个大小为20M的磁盘镜像
root@cchui-virtual-machine:~# dd if=/dev/zero of=/root/disk.img bs=2M count=10
记录了10+0 的读入
记录了10+0 的写出
20971520 bytes (21 MB, 20 MiB) copied, 0.13234 s, 158 MB/s
--------------------------------------------------------------------------------
# 挂载为设备
root@cchui-virtual-machine:~# losetup /dev/loop0 /root/disk.img
--------------------------------------------------------------------------------
# 格式化设备
root@cchui-virtual-machine:~# mkfs.ext3 /dev/loop0
mke2fs 1.44.1 (24-Mar-2018)
丢弃设备块: 完成                            
创建含有 20480 个块(每块 1k)和 5136 个inode的文件系统
文件系统UUID:75fe11a2-e627-4def-a5e8-042d2ffa3b5d
超级块的备份存储于下列块: 
	8193

正在分配组表: 完成                            
正在写入inode表: 完成                            
创建日志(1024 个块) 完成
写入超级块和文件系统账户统计信息: 已完成
--------------------------------------------------------------------------------
# 挂载为文件夹
root@cchui-virtual-machine:~# mkdir agent
root@cchui-virtual-machine:~# mount -t ext3 /dev/loop0 /root/agent/ 


查看文件夹大小,查看磁盘大小的 Linux 命令:

df -h

磁盘填充

开始填充前:

root@cchui-virtual-machine:~# df -h
文件系统        容量  已用  可用 已用% 挂载点
/dev/sda1        40G   20G   18G   53% /
......
/dev/loop0       19M  179K   18M    2% /root/agent  ###挂载的磁盘
root@cchui-virtual-machine:~/agent# ls    ####磁盘下的文件和目录
copyrightDemo.sol  lost+found

开始填充:

root@cchui-virtual-machine:~/agent# dd if=/dev/urandom of=/root/agent/test.txt
dd: 正在写入'/root/agent/test.txt': 设备上没有空间
记录了37101+0 的读入
记录了37100+0 的写出
18995200 bytes (19 MB, 18 MiB) copied, 0.620289 s, 30.6 MB/s

填充后:

root@cchui-virtual-machine:~# df -h
文件系统        容量  已用  可用 已用% 挂载点
/dev/sda1        40G   20G   18G   53% /
......
/dev/loop0       19M   19M     0  100% /root/agent  ##该磁盘以及被填充满了
root@cchui-virtual-machine:~/agent# ls
copyrightDemo.sol  lost+found  test.txt  ## test.txt 文件里面是乱码

参考

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值