求助下运维大佬关于存储文件 rsync 拷贝到硬盘,文件为什么变大了

2020-07-19 09:54:44 +08:00
 smallfish1990
事情是这样的,周末加班

原存储上 800G 的备份文件(冷备文件),因为设备授权问题,需要拷贝出来,于是乎买了几块硬盘做成了 raid,空间 2T,想着应该错错有余了吧,结果 rsync 一晚上,现在 2T 硬盘占满了,文件还没拷贝完成。。。

都是 ext4,文件块也都是 4096.。。。

求助
1448 次点击
所在节点    问与答
8 条回复
jim9606
2020-07-19 10:03:46 +08:00
我想到的两个原因:
1.符号链接(这个通常没问题)
2.硬链接
3.稀疏文件
4.rsync 了虚拟的文件系统,例如 /proc 这种
ohao
2020-07-19 10:07:03 +08:00
rsync 的话 你要贴附带的参数 别人才能告诉你原因

不然使用, 建议使用 rclone 的 SYNC 同步模式,比较傻瓜化

如果密集型小文件居多,使用 sersync (也是调用 rsync ),但是速度快很多
smallfish1990
2020-07-19 10:11:21 +08:00
@jim9606
@ohao 谢谢回复

rsync 参数 rsync -avP --ignore-existing /xxx root@ip:/xxxx
smallfish1990
2020-07-19 10:15:26 +08:00
@jim9606

1:这个应该没问题
2 、4:A 机器挂载的存储,B 机器硬盘 raid,A 拷贝到 B
3 、稀疏文件没接触过 TAT
msg7086
2020-07-19 11:22:39 +08:00
我记得硬链接要加 -H 。
Sparse 文件要加 --sparse 。

你可以对原始数据做一下 du -sh 看看有多大,然后应该就能知道问题在哪了。
smallfish1990
2020-07-19 11:46:59 +08:00
@msg7086

800G 是打散了的分片文件(可以理解成很多小文件),

怀疑大概率是稀疏文件导致的,硬链接应该不存在
ryd994
2020-07-19 13:57:14 +08:00
@smallfish1990 稀疏文件不是稀疏分布的小文件
而是不完全分配的大文件。比如我建了一个 2G 的稀疏文件,我可以只用其中的 2M,这个文件在支持稀疏文件的文件系统上就只占 2M 。程序读取已用部分以外时读到的是零。
rsync 有个参数,如果正确使用,就只传输用了的 2M,否则直接一个个字节读过去,给你传了个 2G 的,而且到了对面就丢失了稀疏的性质
smallfish1990
2020-07-19 19:21:52 +08:00
@ryd994 谢谢科普

@msg7086

rsync --sparse 是传输整个稀疏文件空间,不是传输实际数据大小

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/691270

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX