我想拷貝一些文件夾和U盤上的文件,並在所有事情完成後立即移除U盤。實現是這樣的:如何在U盤上安全地寫數據 - Linux(ARM) - C++
- 創建的文件夾(用C++流)創建
- 複製該文件的內容後,每個目錄描述符中
mkdir
fsync
USB棒相應的文件夾結構fsync
後每個文件被複制
右邊的最後一個文件被複制之後,我刪除每個文件描述符USB棒(〜500ms - 1s)。但有時整個文件夾結構都會丟失。爲了避免這種情況,在最後一個文件被複制後,我在每個目錄描述符上再次使用了fsync
。這一次所有的文件和文件夾都存在於U盤上,但有時我在文件夾結構中有垃圾,或U盤壞掉了。 USB棒文件系統是vfat。有關如何正確保存數據的任何想法?
初步設想是通過一個同步更換個別fsync作業()中,希望年底,你忘了同步別的東西。如果這不起作用,可以在同步後強制卸載設備嗎? – hdante
使用sync(),整個文件系統將被同步,我試圖避免這一點。 Umount是我目前的解決方案,但是如果有任何其他進程正在使用U盤,umount將會失敗。 – user3458705
因此,如果在另一個進程正在使用USB記憶棒的情況下移除USB記憶棒,那麼文件系統可能會損壞。 – hdante