那么是否可以使用第 2 项中的映射文件将随机数据仅写入驱动器的可恢复部分而不尝试写入坏块?
我正在使用 GNU 生成 3 TB 驱动器映像ddrescue
,并意识到它对于目标驱动器来说太大了(因为空白空间填充了 0xAA 而不是 0x00,所以我没有使用稀疏输出文件,而是需要实际压缩)。
输出文件在 btrfs 文件系统上,它支持按文件压缩,但通过哪种方法?
要将压缩应用于现有文件,请使用命令,其中 是,或。例如,要使用 zstd 重新压缩整个文件系统,请运行以下命令:
btrfs filesystem defragment -calg
alg
zlib
lzo
zstd
Run Code Online (Sandbox Code Playgroud)# btrfs filesystem defragment -r -v -czstd /
这会重新压缩现有文件,但似乎是针对文件文件夹,而不是单个文件?
提示:也可以在不使用
compress
挂载选项的情况下为每个文件启用压缩;这样做适用chattr +c
于文件。当应用于目录时,它将导致新文件在出现时自动压缩。
不过,目前尚不清楚这是否会重新压缩现有文件。
在文件上设置压缩属性 using
btrfs property set <file> compression <zlib|lzo|zstd>
将 强制使用指定算法在该文件上使用压缩。
这似乎是为了强制压缩通常不会被压缩的文件,因为它们包含不是很可压缩的数据?
我想将整个现有文件转换为(默认 LZO)压缩,并继续压缩将来写入其中的任何数据,而不更改卷上其他文件的压缩?
我正在尝试减小备份驱动器映像的大小。原始磁盘有以下分区:
Model: ST916082 1A (scsi)
Disk /dev/sde: 160GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 32.3kB 65.7GB 65.7GB primary ntfs boot
2 65.7GB 160GB 94.4GB extended lba
5 65.7GB 160GB 94.4GB logical ntfs
Run Code Online (Sandbox Code Playgroud)
图像是使用命令从逻辑分区创建的
> sudo ddrescue /dev/sde5 datapartition logfile
Press Ctrl-C to interrupt
Initial status (read from logfile)
rescued: 0 B, errsize: 0 B, errors: 0
Current status
rescued: 94368 MB, errsize: 0 B, current rate: 23068 kB/s
ipos: 94368 …
Run Code Online (Sandbox Code Playgroud)