Windows のごみ箱のように Samba 共有のネットワークファイルを削除したらごみ箱に移動します
Sambaの「vfs_recycle」モジュールを使用します
vfs_recycle
Samba 設定
設定ファイルである /etc/samba/smb.conf を編集し ごみ箱 機能を有効化します
sudo vi /etc/samba/smb.conf
[share]
path = /home/user/share
writable = yes
# --- ここからごみ箱設定 ---
vfs objects = recycle
recycle:repository = .recycle
recycle:keeptree = yes
recycle:versions = yes
recycle:maxsize = 0
recycle:touch = yes
recycle:exclude = *.tmp, ~$*, *.lnk
【主要な設定項目の解説】
- vfs objects = recycle: ごみ箱機能を有効化します
-
recycle:repository:
削除したファイルの移動先ディレクトリ名です
相対パス(例: .recycle)にすると 各共有ディレクトリの直内に自動でフォルダが作成されます
絶対パス(例: /var/samba/trash/%U)で指定すると 全共有のゴミ箱を1箇所に集約できます
(%U を入れるとユーザーごとにフォルダが分かれます) -
recycle:keeptree: yes
にすると 削除前と同じフォルダ構造(ディレクトリ階層)を維持したまま移動します -
recycle:versions: yes
にすると 同名ファイルが削除された際に上書きせず「Copy of ~」のように別名で保存します -
recycle:maxsize:
ごみ箱に移動させる対象の最大ファイルサイズ(バイト単位)です
0 は無制限を意味します -
recycle:exclude:
ごみ箱に入れたくない除外ファイルを指定します(例: 一時ファイルなど)
Sambaサービスの再起動
設定を反映させるために Sambaサービスを再起動します
sudo systemctl restart smbd
ごみ箱 不要ファイルの自動削除
ごみ箱内の不要なファイルを自動に1週間で削除したい
ごみ箱(.recycle)内の「作成・更新されてから7日(1週間)以上経ったファイル」を自動で完全削除するために find コマンドと cron(定期実行タスク)を使用します
自動削除を毎日実行するための設定手順です
設定手順
1. 自動削除コマンドの確認
まず、安全のために「ごみ箱フォルダ」がどこにあるかを確認し 以下のコマンドの一部(パス)を書き換えます
# ※ /home/user/share/.recycle の部分は、実際の環境に合わせて変更してください
find /home/user/share/.recycle -type f -mtime +7 -delete
find /home/user/share/.recycle -type d -empty -delete
1行目: 最後に変更されてから7日以上経ったファイル(-type f)を強制削除します
2行目: ファイルが消えて空になったディレクトリ(-type d -empty)を削除し ごみ箱を整理します
2. cron(定期実行)への登録
この処理を毎日自動で実行させるために root権限の crontab に登録します
端末で以下のコマンドを実行します
sudo crontab -e
ファイルの最下行に 以下の設定を追加します
# 毎日深夜 3:00 に、7日以上前のゴミ箱ファイルを自動消去する
0 3 * * * find /home/user/share/.recycle -type f -mtime +7 -delete && find /home/user/share/.recycle -type d -empty -delete
3. 設定の保存と終了
nanoエディタの場合: Ctrl + O を押した後に Enter で保存し、Ctrl + X で閉じます
画面に crontab: installing new crontab と表示されれば設定完了です
注意点
いきなり自動削除するのが不安な場合は -delete を外した以下のコマンドを実行してみてください
条件に一致する(削除対象になる)ファイルの一覧だけを画面に表示して確認できます
find /home/user/share/.recycle -type f -mtime +7