Shell-Script

文件從刪除中恢復

  • December 7, 2020

我有一個腳本可以做到這一點:

rm -rf "$test_dir" && sync && mkdir -p "$test_dir"
unzip -qq "$zip" -d "$test_dir"
# compile and run some stuff, diff some files...
evince "$pdf" 2>/dev/null  # $pdf is a path inside the mentioned folder $test_dir
echo "[Next]..."
read
# then it goes to the next zip, and do the same again.
  • 讓我們呼叫一個 zip 文件A.zip,然後呼叫下一個(在 zip 文件列表中)B.zip
  • 每個 zip 文件都帶有兩個文本文件和一個 pdf。

問題:

當提取文件夾已經被刪除,重新創建,輪到B.zip時,我cat一個文本文件,並在evince中打開pdf。Evince 顯示正確的 pdf 文件B.zip一到兩秒鐘。

之後,evince 重新載入文件,並顯示來自A.zip.

如果我再次手動打開pdf,它實際上是進來的那個A.zip而不是進來的那個B.zip(所以evince只是打開新文件)。

如果我再次手動 cat 文本文件,內容不是在終端中註冊的最後一個 cat (中的那個B.zip),而是文本文件的內容A.zip

懷疑:

我懷疑文件夾本身(或其內容)以某種方式從刪除中恢復。

修復嘗試:

以前,我刪除了“$test_dir”的內容,但沒有刪除目錄本身。這個問題經常出現。然後我決定刪除文件夾並重新設置mkdir。這似乎解決了它。但現在我又看到了這個問題。

我嘗試sync在之後添加一個命令,rm -rf以便進入磁碟。問題仍然存在。

sleep刪除後我試了一秒鐘。問題仍然存在。

我檢查過的內容:

我在網上看到過幾個類似的問題,但是都涉及到一些其他的程序,docker,或者別的什麼。我使用的文件夾只是我家中的一個目錄。除了我的腳本(

$$ update $$實際上有一個,請看答案) 我已經檢查過了,我沒有解壓縮腳本中的任何其他地方。

我找到了責任人!它是 MegaSync 應用程序。它在後台執行,不知何故,在同步所有文件時,它會帶回剛剛刪除的文件。我關閉它,問題解決了。

引用自:https://unix.stackexchange.com/questions/620542