簡體   English   中英

為什么exFAT上復制的git文件夾的大小比ext4上的原始文件大?

[英]Why is the size of a copied git folder on exFAT bigger than its original on ext4?

我在ext4磁盤上有一個git文件夾(這是一個git repo):

ytsen@ytsen-MacBookPro:~$ du -hcs ~/git
3,2M    /home/ytsen/git
3,2M    total

現在我將它復制到帶有exFAT文件系統的USB記憶棒:

ytsen@ytsen-MacBookPro:~$ cp -r ~/git /media/ytsen/USB\ Flash/git3
cp: preserving permissions for ‘/media/ytsen/USB Flash/git3/hooks’: Function not implemented
cp: preserving permissions for ‘/media/ytsen/USB Flash/git3/objects/49’: Function not implemented
cp: preserving permissions for ‘/media/ytsen/USB Flash/git3/objects/68’: Function not implemented

<snip>

現在這個文件夾的大小就大了:

ytsen@ytsen-MacBookPro:~$ du -hcs /media/ytsen/USB\ Flash/git3
23M /media/ytsen/USB Flash/git3
23M total

問題:為什么這樣,我應該擔心嗎?

問題:我現在是否有文件權限問題(請參閱生成的cp輸出)?

PS。 我可以從USB記憶棒上的副本中查看,在檢索文件或歷史記錄時似乎沒有任何問題...

群集大小和松弛空間

文件使用的空間量不僅包括文件的字節數。 在ext2 / 3/4和基於FAT的文件系統中,每個文件占用至少一個塊/簇* ,並且每個塊/簇最多屬於一個文件。 因此,群集中不屬於文件內容的任何剩余空間基本上都被浪費了。 這個浪費空間的常用術語是“松弛空間”。

浪費了多少空間,部分取決於簇/塊的大小。 通常,您希望文件越小,您希望群集越小,因為小群集意味着更少的空間。

然而,FAT文件系統包括“文件分配表”(為其命名),其中說明哪些集群被哪些文件占用。 FAT為驅動器上的每個群集都有一個條目; 如果集群大一半,那么它們的數量是它們的兩倍,因此FAT最終會有兩倍的管理條目。 因此系統傾向於支持大型集群(16 KiB,32 KiB,甚至更高 - exFAT允許高達32 MiB /集群,盡管這可能非常罕見)。

另一方面,在ext4中,事情以不同的方式完成 - 對塊的大小/數量不太敏感。 所以它並不介意小塊,並且通常會有大小為1,2或4 KiB的塊。 (大文件系統可能有更大的塊,但在那時,空間可能不是問題。)

盡管如此,一個100左右的字節文件可能很容易在ext4文件系統上占用4 KiB,在exFAT上占用32 KiB。 因此,如果您有許多小文件,當您將這些文件從具有小塊的FS移動到具有更大塊的FS時,您會注意到空間使用量的大幅增加。

保留權限(或......)

某些文件系統(包括大多數以前的FAT文件系統)不支持* nix樣式的權限。 其他人這樣做,但驅動程序並未編寫以利用它們。 在這些情況下,通常系統將使用FS自己的內置功能盡可能接近權限,或者只是說“搞砸”並使任何有權訪問該設備的人都可以訪問這些文件。

(有了exFAT,我不是100%肯定會發生什么......但是我會把錢花在后者身上。)

無論哪種方式,Git 通常都不在乎這么多; 它只關心它可以讀取和寫入repo中的文件(特別是在.git文件夾中)。 如果您有足夠的權限來復制文件並在以后實際看到它們,那么您應該沒問題。

(但有一點需要注意。我不確定exFAT是否 - 或者有多好 - 處理符號鏈接。如果你的回購包含任何內容,我不確定會發生什么。)

至於為什么只有那三個特定的目錄給你帶來了問題:我猜想你用不同的用戶名做了幾次提交和/或提取(例如你說sudo git fetch origin等),以及作為這樣做的一部分創建的文件/目錄由該用戶擁有。 您可能要檢查在原來的目錄,看看有什么關於他們的不同-這是完全可能的,保不其權限是一件好事這里,居然作出的exFAT比原來的復制更正確。


* “塊”和“群集”基本相同。 但MS - 以及它在基於FAT的文件系統上提供的任何文檔 - 都喜歡稱它們為“集群”。

git嚴重依賴於exFAT不支持的硬鏈接。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM