终端命令复制文件的问题。
Tofloor
poster avatar
cgfeilishi
deepin
2017-09-22 03:23
Author
晚上用终端命令cp一个600多兆的镜像给u盘(usb2.0),大概四五秒左右终端貌似执行完了命令,我就纳闷2.0的u盘怎么会这么快,又去看了一下u盘中镜像的大小也没有问题。就拔出u盘给了一哥们,哥们用windows打开发现只有50几兆。
我插回去试试还真是,然后重新复制,
但这次终端显示“cp: 无法创建普通文件'./zh-hans_windows_xp_professional_with_service_pack_3_x86_cd_vl_x14-74070.iso': 只读文件系统”。
拔出又去Windows试了一下,可以创建文件。
又插回来用root账户打开u盘,这次再cp一下,发现终端还是很快就执行完命令了,镜像大小也没有问题,不过这次注意到u盘上的指示灯还在不停地闪烁,说明还在写入或读出。等不再闪烁的时候拔出去windows试了一下,这次才真正复制了全镜像。
问问这是怎么回事?

Reply Favorite View the author
All Replies
avatar
comzhong
deepin
2017-09-22 03:49
#1
好像是因为默认启动了写入缓存,写入会有一定延迟,而windows对USB设备是默认关闭写入缓存的。    拔U盘之前一定先卸载。
Reply View the author
avatar
jingle
deepin
2017-09-22 03:49
#2
cp 没有完全?直接文管拷贝
Reply View the author
avatar
duanyao
deepin
2017-09-22 04:38
#3
没有点击“弹出”就拔U盘?这在Windows上也是要出事的啊。
如果你只想命令行操作,那么 cp 完了之后,跟上一个 sync 命令,然后再拔 U 盘,应该就不会有大问题了。
Reply View the author
avatar
cgfeilishi
deepin
2017-09-22 18:30
#4
https://bbs.deepin.org/post/145844
没有点击“弹出”就拔U盘?这在Windows上也是要出事的啊。
如果你只想命令行操作,那么 cp 完了之后,跟上 ...

额。。。这些弹出卸载操作都有做的,只是精简为"拔出“两个字眼而已。像jingle说得那样cp没有复制完全问题。
Reply View the author
avatar
cgfeilishi
deepin
2017-09-22 18:31
#5
https://bbs.deepin.org/post/145844
cp 没有完全?直接文管拷贝

对,就是没有cp完全。
Reply View the author
avatar
cgfeilishi
deepin
2017-09-22 18:34
#6
https://bbs.deepin.org/post/145844
好像是因为默认启动了写入缓存,写入会有一定延迟,而windows对USB设备是默认关闭写入缓存的。    拔U盘之 ...

问题是终端cp命令很快就执行完成了,此时U盘里东西大小也正确。这个现象会让人误以为已经复制完了,但实际是没有复制完整。
Reply View the author
avatar
justforlxz
deepin
2017-09-22 18:57
#7
拔之前执行一下sync,把缓存写入到设备。
Reply View the author
avatar
duanyao
deepin
2017-09-22 19:12
#8
本帖最后由 duanyao 于 2017-9-22 11:26 编辑
https://bbs.deepin.org/post/145844
额。。。这些弹出卸载操作都有做的,只是精简为"拔出“两个字眼而已。像jingle说得那样cp没有复制完全问 ...

那不应该呀,卸载文件系统(umount)就隐含了刷新数据到磁盘的操作,应该是不会出现数据丢失的问题的。

如果卸载/弹出后U盘的读写指示灯还在闪,我觉得这U盘是不是有硬件层面的缓存机制,而且掉电后缓存里的数据会丢失?如果是,我觉得这是个设计缺陷啊。那么唯一的办法就是使用时小心,卸载/弹出后等指示灯不闪了再拔出。

还有一种可能:你点击了卸载/弹出,但实际上没有(立即)成功,你以为成功了——如果有大量数据等待写入,那么卸载也要花相当长的时间的。
你可以用 mount 命令来确认是否卸载成功了。
Reply View the author