iT邦幫忙

0

請問 windows 刪除為何會比同硬碟移動慢呢?

  • 分享至 

  • xImage

請問 windows 刪除為何會比同硬碟移動慢呢?

今天刪除一個大資料夾,有幾十萬個文件,總和大約20GB
Shift + Delete 永久刪除,發現需要等幾十分鐘

但是將資料夾移動到同硬碟其他地方,按住拖拉只需要短短幾秒鐘。

請問為何會有這樣的差異呢?

拿這個關鍵字去搜尋沒有看到類似文章,請問有大神了解這原理嗎?
xxx


以下是個人胡亂猜想 :

刪除系統底層其實會做備份紀錄所以比較慢?

看更多先前的討論...收起先前的討論...
基本上你舉的例子不太對,對WIN 來說,完整刪除與刪除的動作是不同的
還有 20GB 要幾十分鐘,你用的應該是 HDD吧,如果用 SSD,完整刪除與刪除的時間幾乎相等的,因為硬體機制不同,HDD 完整刪除是循序刪除資料,所以他會 BLOCK BY BLOCK 砍資料,還有就是HDD資料的存放機制也有關係,HDD的資料分散率高,刪除的速度越慢,跟SSD差很遠,因為SSD不管是哪一種刪除都是標記式刪除,刪除完畢之後還要經過 TRIM 才會把資料完全砍掉,如果沒 TRIM,下次同一個BLOCK 要放新資料的話就會先 TRIM之後再放新資料,所以太久沒TRIM的SSD,寫入的速度會越來越慢,就是因為之前被標記刪除的資料還沒TRIM的原因
感謝 窮嘶發發發 大神的留言
另外我是使用SSD
這是Windows 的FAT32/NTFS的通病吧?

Linux的EXT3/4,MAC的APFS的比較少有這個毛病,不信的話你可以在你的Windows的硬碟C槽做一個資料夾,用個批次檔在裡面產生20萬個空檔案,然後重開機......

保証你會罵我
如果樓主用的是 SSD 再刪除大量檔案會慢的話,
要去檢查兩個服務是否設定為自動 ( 非 啟動延遲 )
1. Program Compatibility Assistant Service 設為自動
2. Windows Search 設為自動
如果是 WIN 7 還要把 Application Experience 設為自動
然後重開機,之後再試看看刪除大量檔案會不會需要大量的時間才能完成
窮嘶發發發 大神 , 謝謝您
20GB刪10分鐘也太慢
我刪100多G會說檔案太大會顯示無法回收到垃圾筒
直接刪除也不用1分鐘
samshum iT邦新手 5 級 ‧ 2020-08-26 08:40:00 檢舉
這是看FS的吧?如果是一個大檔20Gb就可
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

18
Ray
iT邦大神 1 級 ‧ 2020-08-25 15:18:45
最佳解答

移動資料夾, 只需要動最上層那一個資料夾指標, 就完成了; 因為那個資料夾底下的東西, 都是跟著那個資料夾內含的 Link-list 查下來的, 所以不管最上層移動到哪邊去, 底下的通通不用動, 改一下最上層的那個指標就可以....

(請想像: 你移動一大串肉粽, 只要拿最上面的那個繩結, 整串肉粽就被你移動到新位置了, 不需要每一個肉粽都單獨去移動他)

刪除資料夾, 標準程序是:

  1. 先走到資料夾的最底層 (有幾層資料夾就要下幾層)
  2. 刪掉該層的所有檔案 (刪除=寫入新的檔案指標)
  3. 往上一層, 刪掉剛剛那層的空資料夾
  4. 再往下找第二個資料夾, 重複上面 1-4 的工作
  5. 直到這層都沒有資料夾了, 才能往上一層
  6. 重複 1-5 的工作, 直到這層沒有資料夾....

這個刪除檔案指標的動作, 有多少個檔案, 就要被觸發多少次, 沒有辦法省; 而且因為是從最底層往上做, 所以每一層的每一個檔案, 通通要被改寫新指標, 相較於移動只改一個指標而言, 他的工作量是 N 倍...

(請想像: 要把肉粽丟廚餘, 你得把每個肉粽都打開, 把裡面的餡挖出來, 丟進廚餘桶, 再把粽葉和繩子丟去不可回收桶, 每一個都要這樣做一次...沒辦法只把最上面的一顆打開挖出來丟掉, 下面所有的肉粽就會跟著也打開丟掉)

看更多先前的回應...收起先前的回應...

原來如此!
再次感謝 raytracy 大神 , 每次您的留言都讓人受益匪淺/images/emoticon/emoticon33.gif

Season iT邦研究生 3 級 ‧ 2020-08-25 16:25:12 檢舉

大神想請教一下
若是下指令 rmdir /s/q folderName
則刪除速度會變很快
它的刪除程序跟正常的刪除程序不同嗎?

glj8989332 iT邦研究生 4 級 ‧ 2020-08-25 16:35:58 檢舉

COOL! 大神用肉粽解釋LinkedList, 很有風味XD 餓了

Ray iT邦大神 1 級 ‧ 2020-08-25 16:52:27 檢舉

xSummer
先簡單回答您的問題:
因為檔案總管在刪除每個檔案之前, 會多花一點時間看一下每個檔案的內容, 但是 rmdir 指令不會去看檔案, 就蒙著眼睛硬幹.....

至於檔案總管是去看了些甚麼? 我目前手邊沒有足夠的資料說明, 有空可以去 StackOverflow 看一下, 這個問題好像也討論過一陣子....

ckp6250 iT邦好手 1 級 ‧ 2020-08-25 17:32:10 檢舉

【肉粽】比較不像資料夾結構,因為粽子都是一個繩頭底下有很多條細繩,每一條細繩底下只有一顆粽子,屬於單層式結構,一顆粽子底下不會再綁上另一顆粽子。

不過,我暫時想不出有什麼多層次又好吃的食物,可能要請教海棉大大。

Season iT邦研究生 3 級 ‧ 2020-08-25 17:58:22 檢舉

好的 我再去找找看 謝謝回答

sam0407 iT邦大師 1 級 ‧ 2020-08-26 09:56:29 檢舉

我愛吃的龍眼或葡萄應該都算是多層次又好吃的食物吧..

Ray iT邦大神 1 級 ‧ 2020-08-26 10:09:08 檢舉

龍眼或葡萄的確比較適合這個情境...

不過, 肉粽的視覺衝擊力比較震撼....
/images/emoticon/emoticon01.gif

5

移動目錄會快的原因,是因為並未移動實際磁區位置。而是將檔案指標修改。
但檔案還是存放在同一個地方。
這所謂的快速,也只適合用在同一分區上。
當移動的位置是在不同分區,還是會很慢的。

至於有人追加問的「 rmdir /s/q folderName」
也是同一種道理。

其實在windows上,所有的目錄都有一個d屬性。
而這個d屬性是可以移除掉的。
d屬性移除掉後,就會將目錄變成一個檔案了。
早期我曾經有寫過這種東西來隱藏一些東西。
就是固定將某些a級的東西放在某個目錄。再將該目錄改成檔案。
要用再加d屬性。

感謝 浩瀚星空 大神!!

samshum iT邦新手 5 級 ‧ 2020-08-26 08:43:13 檢舉

我要發表回答

立即登入回答