1
beginor 2022-01-04 09:13:36 +08:00 2
需求明确了, 接下来楼主打算悬赏多少银子?
|
2
2i2Re2PLMaDnghL 2022-01-04 09:23:10 +08:00
『已经毕业的人留下的数据要保留若干年』,存档直接打一个大包就结了。
我觉得你要写个这样的『智能』打包,比直接把大文件一并打包更『多此一举』 |
4
bfdh 2022-01-04 10:08:21 +08:00
若当前目录有 100 个子目录,每个子目录下有一个小于 1M 的文件和一个大于 1M 的文件,要怎么处理?
|
5
2338022 2022-01-04 10:10:12 +08:00
find
|
6
xuegy OP @2i2Re2PLMaDnghL 我已经这么干了,这样的结局就是最大的一个包 600GB
|
8
killva4624 2022-01-04 10:50:19 +08:00
需求的 1 和 2 两点结合起来有一个疑问。
比如根目录是 A ,有如下子目录 A1 ~ A10 ,其中 A1 碎片文件 60 个,A2 碎片文件 50 个,A3 碎片文件 10 个,但 A3 有大文件 100 个。 那么只打包这 120 个碎片文件,而不是需求 2 所说的"递归找到含有大量碎片文件的子目录并打包"? |
9
2i2Re2PLMaDnghL 2022-01-04 11:16:21 +08:00
@xuegy 打成能切片的包吧;当然 tar 也可以简单地分隔切片
就算你『智能』处理,一个目录下六十万个 1023KiB 的文件不也一样打出 600G 吗 (其实正确的措施是转移到冷存储,既然都能接受打包甚至打层叠 tar 包了,没随时可取的需求吧 |
10
XiLingHost 2022-01-04 11:23:01 +08:00
600G 也不算大吧,反正是冷数据,干脆搞个磁带机存
|
11
xuegy OP @killva4624 我大概看了一下,这种情况不存在,我们的 NAS 里大部分目录的文件数都是<10 或者>500 ,
|
12
xuegy OP @2i2Re2PLMaDnghL 并不完全是冷数据,也有偶尔要去调用已毕业学生数据的情况。
|
13
2i2Re2PLMaDnghL 2022-01-04 12:56:00 +08:00
@XiLingHost 喷了,磁带机少说两千以上了,比两块 1T 硬盘贵多了
@xuegy 需要调用的话不适合用 tar ,tar 只能顺序读取否则不能定界,你这上千个 <1M 的打一个包读取其中任何一个就得全部读一遍。你需要带索引可切片的打包类型。zip 和 7z 和 rar 都可以仅存储不压缩。 当然还原一下,我觉得你这个『碎片文件打包提高效率』也可能是多此一举,除了 NTFS 好像其他文件系统一次性写入之后仅读取都不会因为碎片化而降低效率的。 |
14
xuegy OP @2i2Re2PLMaDnghL 我特意测试过,大量小文件用 rsync 传输只能跑到 12Mb/s ,远不如把大包复制到本地再解包快…
|
15
XiLingHost 2022-01-04 14:08:36 +08:00
@xuegy 试试打成 iso/vhdx/vdi/vmdk
|
16
XiLingHost 2022-01-04 14:10:37 +08:00
@2i2Re2PLMaDnghL 我觉得“最大的一个包 600G”这种情况怎么也不止两块 1T 硬盘了吧......假如常见的包是最大的包的体积的一半,也就是 300G ,那 2T 的硬盘也放不下几个包了
|
17
2i2Re2PLMaDnghL 2022-01-04 14:44:11 +08:00
@XiLingHost (淦,我绕晕了
|
18
rrfeng 2022-01-04 14:45:36 +08:00
几行脚本的事儿……楼主可以自己搞定的
|
19
yzding 2022-01-04 15:27:29 +08:00
`find . -type f -size 1M -print | wc -l`
`find . -type f -size 1M -print | xargs tar -cvf test.tar` |
20
tflins 2022-01-04 16:22:03 +08:00
还有什么要求吗,没有我就开始写了
|
21
xuegy OP @XiLingHost 8 块 4T ,也考虑过磁带机的事情,磁带确实比硬盘便宜,但是磁带机初始成本太高了。
|