2013-06-11 49 views
0

說我想在一個Linux機器上同步文件系統的數據緩衝區到磁盤(在我的情況下是一個USB棒分區)。同步沒有文件的文件系統

雖然搜索功能來做到這一點,我發現以下

說明

sync() causes all buffered modifications to file metadata and 
      data to be written to the underlying file sys‐ 
      tems. 

    syncfs(int fd) is like sync(), but synchronizes just the file system 
       containing file referred to by the open file 
       descriptor fd. 

但是,如果在文件系統上有沒有文件,我可以打開並傳遞給syncfs?我可以「濫用」點文件嗎?它是否顯示在所有文件系統上?

是否有另一個功能,做我想要的?也許通過提供具有主要/次要數字或一些這樣的設備文件?

回答

2

是的我認爲你可以做到這一點。文件系統的根目錄至少有一個用於根目錄的inode。你可以使用。-file來做到這一點。也可以用ls -i來查看inode數字。

是否有可能通過同步裝載文件系統來避免您的問題?性能問題會妨礙嗎?你有沒有看重裝?這可以在特定情況下同步您的文件系統。

我不知道你的應用程序是什麼,但是我遇到了文件同步到FAT32文件系統的USB盤的問題。它導致了奇怪的讀寫錯誤。我無法想象爲什麼你應該同步一個空文件系統的其他有效理由。

0

從人8同步說明:

"sync writes any data buffered in memory out to disk. This can include (but is not 
    limited to) modified superblocks, modified inodes, and delayed reads and writes. This 
    must be implemented by the kernel; The sync program does nothing but exercise the sync(2) 
    system call." 

所以,請注意,這是所有關於修改(修改索引節點,超級塊等)。如果你沒有任何修改,它沒有任何東西可以同步。

+0

是的,但如果你剛刪除所有文件,並且想同步_that _... –

+0

那麼,我想這不是問題。但是,爲了回答你的問題,sync將所有髒緩衝區寫回到磁盤,並更新超級塊/ inode元數據信息。同步,同步是總是成功的,所以如果你刪除文件,這個信息也需要更新。所以,將會同步。如果您不手動調用同步,則會由內核閃光燈線程同步。 –

+0

@joachim是對的。這是我的問題。 –