最近我一直在使用USB2闪存驱动器向我的公司传输大量数据。
将数据复制到闪存驱动器时,我注意到数据没有直接写入驱动器。它以 200MB/秒的速度写入缓存(?)。然后我umount
或sync
驱动器,需要几个小时才能将数据实际写入驱动器。
我也尝试使用cp
Nautilus 代替,但它具有相同的行为。dd
不是复制普通文件的选项。
有没有办法让Linux在写入USB存储设备时直接写入数据而不进行缓存?或者也许减少缓存,这样我在卸载驱动器时就不必等待几个小时?
最让我烦恼的是,进度条复制完成,然后我必须等待一个未指定的时间才能sync
写入数据。
我使用的是 Fedora 25 机器。
[更新]试图澄清我的问题。
[更新2]发现一个类似的问题没有答案:减少闪存设备的缓存大小
答案1
可以直接干dd
法。听起来是时候使用mk2fs.
-fs-of-your-choice 重新格式化您的驱动器了。
man mkf2s
dd 路线很简单。
在插入驱动器之前运行一次。
lsblk
还有一次之后。
注意您设备的输出。
然后要复制文件,您可以创建一个新设备,如下所示:
dd if=/dev/zero of=~/my-files.dd.img bs=1G mkfs.ext4 ~/my-files.dd.img losetup /dev/loop0 ~/my-files.dd.img
注意如果您希望在计算机重新启动后重新安装它,请将以上行添加到 rc.local 文件中。
vi /etc/rc.local
使用以下命令安装设备:
mkdir /mnt/amazing mount -o loop=/dev/loop0 ~/my-files.dd.img /mnt/mymountpoint
要检查文件是否已挂载,可以使用 df 命令:
df -h | grep mymountpoint /dev/loop0 976M 1.3M 924M 1% /mnt/mymountpoint where `bs=` a value greater than the output of: `ls -lh ./your-file-here`
完成卸载设备后:
umount /mnt/mymountpoint losetup -d /dev/loop0
还没有测试过,但我想这就是它应该如何工作。
干杯里瓦诺夫