我的磁盘上有非关键数据(主要是电影、音乐、图片、文本文件)。数据还不够重要,我无法对其进行备份。不过,我想保留“元数据”的备份,即每个文件:
- 文件名和位置
- 文件类型、大小和修改日期
- 第一个 KB 的签名(计算速度更快,无论它是否具有比完整哈希更高的共谋率,或者不考虑第一个 KB 后的损坏,它只是在文件类型、大小的情况下识别“是什么”和 mdate 可能类似)
这样,如果我由于磁盘故障而丢失数据,我可以知道磁盘上有什么以及在哪里,如果我设法使用fsck
/ foremost
/etc 恢复文件...我可以自动将大部分恢复的文件放回他们的位置使用签名/文件类型/文件大小。
所以我发出以下命令metadata file output
:
#!/bin/sh
echo "$(stat -c'%n %s %b %i %Y' $1) $(file -bi $1) $(head -c1K $1 | md5sum)" >> "$2"
我看到了各种可能性:
将所有文件元数据放入一个文本文件(
find ./datamountpoint -exec metadata {} backup.txt \;
)中,但文件名会存在大量冗余数据。复制树结构并用其元数据替换每个文件,并将其放入存档中。
。
#!/bin/sh
find ./datamountpoint -type d -exec mkdir ./backup{} \;
find ./datamountpoint -type f -exec metadata {} ./backup/{} \;
tar cvf 'backup.tar' ./backup
但我不知道哪一个在速度方面更有效,或者 tar 存档是否对文件数量、文件名长度有限制。也许有一个我不知道的工具已经可以实现我想要的功能。
那么,备份分区的结构和文件元数据的正确方法是什么?