Shell-Script
文件從刪除中恢復
我有一個腳本可以做到這一點:
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 應用程序。它在後台執行,不知何故,在同步所有文件時,它會帶回剛剛刪除的文件。我關閉它,問題解決了。