iT邦幫忙

0

NAS伺服器,有辦法能做到指定資料夾內檔案被開啟或下載後自動刪除嗎?

  • 分享至 

  • xImage

現在有一台nas伺服器型號為ds920+

我想詢問如果我想要讓NAS伺服器可以在指定的資料夾內的檔案被開啟或下載後自動刪除,

固定刪除的資料夾路徑為「/volume1/text」請問有辦法這樣設定嗎?

player iT邦大師 1 級 ‧ 2023-04-25 11:46:31 檢舉
請先想清楚後果
可能最壞的結果是
檔案未下載完成,檔案卻自動刪光光
就算要做權限控管
也不該用自動刪除這種方法
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

4
Ray
iT邦大神 1 級 ‧ 2023-04-25 12:19:21

(我還以為在看 IMF 電影....)

先講:
1.沒有讓你直接一鍵設定這樣做的方法
2.市面上沒有量販的NAS可以這樣做

真的要做:
請改用 Microsoft M365 E3/E5 以上等級的 Sharepoint 功能, 將檔案儲存在 Sharepoint 的 OneDrive for Business (商務用OneDrive) 裡面 (不是一般個人用的 OneDrive 喔, 這兩個不一樣); 然後開啟 Sharepoint Audit 功能, 利用 Audit 功能, 記錄檔案發生了下載的行為, 再寫一段 Power Automation 程式, 去監看 Sharepoint Audit log, 一旦程式由 Audit log 中, 看到這個檔案已經完成下載了, 就馬上執行:

刪除這個檔案

的工作.

Sharepoint 可以設定: 把刪除的檔案放在垃圾桶裡, 所以即便刪掉了, 在一定時間內還有機會可以把檔案撈回來, 重新下載.

gyeonwoo iT邦新手 5 級 ‧ 2023-04-25 13:44:17 檢舉

謝謝前輩的告知,我在想想看該怎麼做會比較符合需求。

雷神大好猛
已跪

0
PPTaiwan
iT邦好手 1 級 ‧ 2023-04-25 13:48:52

我想詢問如果我想要讓NAS伺服器可以在指定的資料夾內的檔案被開啟或下載後自動刪除,
固定刪除的資料夾路徑為「/volume1/text」請問有辦法這樣設定嗎?

寫程式喔!! 用程式去讀取(NAS 所開放出來的目錄),可以讀取此目錄所有檔案,監控檔案是否有被 "動過" ,如果被動過(傳輸也算)基本上都算被使用過,那就可以以你的需求去做!!

但你都放 NAS 為何想這麼做呢??

看更多先前的回應...收起先前的回應...
froce iT邦大師 1 級 ‧ 2023-04-25 16:21:34 檢舉

要寫程式的話建議就弄成 web base 的了,直接控管下載次數就好。

PPTaiwan iT邦好手 1 級 ‧ 2023-04-25 17:33:14 檢舉

要用 Web Base 那就去用雲端硬碟這麼多家。只是作者想要做一點 NAS 的檔案管理,我也沒有看過 NAS 的 APP 有作者想要的功能!!

gyeonwoo iT邦新手 5 級 ‧ 2023-04-26 10:24:12 檢舉

目前狀態是有三台平板,A、B、C這三台指對應NAS內的特定資料夾,甲同事拿了B平板後看到資料夾內有PDF檔,下載後就去理貨了,理完貨後將平板放回原位,乙同事來再拿起B平板發現裡面沒有PDF檔那就不會出現重覆理貨的狀況,因此才有這個需求,目前測試一個指令find /volume1/1111 -name '.txt' -type f -mmin +5 -delete -print,但還是沒辦法下載後刪除被開啟過的檔案。

PPTaiwan iT邦好手 1 級 ‧ 2023-04-26 13:54:39 檢舉

給你一個方向去處理,但往後建議你們有系統可以處理這些事情

去了解一下這個 auditd linux 命令行工具可以用於監控文件系統事件 Adultd:Linux 系統稽核工具使用教學與範例

此命令將監控指定文件的讀取操作,並將事件標記為“file-read”,當讀到之後將檔案移到另一個目錄,建議你們可以做為審核是否真的有撿貨

sudo auditctl -w /path/to/your/file -p r -k file-read

並建立 sh 腳本文件

touch file_read_monitor.sh
chmod +x file_read_monitor.sh

使用文本編輯器打開創建的腳本文件,例如nano file_read_monitor.sh,然後添加以下內容

#!/bin/bash

# 需要監控的文件路徑
file_path="/path/to/your/file"

# 檔案讀取後要移動到的目錄
destination_directory="/path/to/destination/directory"

# 設置audit規則
sudo auditctl -w "$file_path" -p r -k file-read

while true; do
    # 搜索被讀取的文件事件
    result=$(sudo ausearch -k file-read -ts recent | grep "path=$file_path")

    # 如果文件被讀取
    if [[ ! -z "$result" ]]; then
        echo "File has been read. Moving to the destination directory."

        # 移動文件到指定目錄
        mv "$file_path" "$destination_directory"

        # 刪除audit規則
        sudo auditctl -W "$file_path" -p r -k file-read
        break
    fi

    # 每次檢查之間等待5秒
    sleep 5
done

一旦檢測到文件被讀取,腳本將文件移動到指定的目錄做為確定理貨,以上測試看看吧

gyeonwoo iT邦新手 5 級 ‧ 2023-04-27 08:29:15 檢舉

謝謝前輩的指導,我再去研究一下~萬分感謝

我要發表回答

立即登入回答