- https://github.com/filebrowser/filebrowser/issues/1854
- Add the command below under "Before Delete"
 /bin/sh -c 'if [[ "$FILE" != "/srv/Trash/"* ]]; then mv $FILE /srv/Trash; fi'- Works great in my docker container on linux
 
 
装一个 trash-cli 工具
- 创建 dockerfile
 
FROM filebrowser/filebrowser:latest
RUN apk add trash-cli
- 修改 docker-compose.yml
 
# vi docker-compose.yml
version: '3'
services:
  filebrowser:
    # image: filebrowser/filebrowser:latest
    container_name: filebrowser
    restart: always
    build:
      context: .
    ports:
      - "8089:80/tcp"
    networks:
      - net
    volumes:
      - ./filebrowser.db:/database.db
      - ./.filebrowser.json:/.filebrowser.json
      - /etc/localtime:/etc/localtime:ro
      # data
      - ./srv:/srv
      - /mnt/data:/srv/data
networks:
  net:
    driver: bridge
- 设置 - 全局设置 - 修改 Before Delete 删除命令
 
trash-put $FILE
- 查找删除的文件在哪里
trash-list --trash-dirs
 
用 sh 脚本
修改
- 并在 
/srv/Trash/delete.log中 增加删除记录 
/bin/sh -c 'if [[ "$FILE" != "/srv/Trash/"* ]]; then mv $FILE /srv/Trash; fi'
/bin/sh -c 'if [[ "$FILE" != "/srv/Trash/"* ]]; then mv $FILE /srv/Trash/ && echo "[$USERNAME] Deleted: $FILE" >> /srv/Trash/delete.log; fi'
/bin/sh -c 'if [[ "$FILE" != "/srv/Trash/"* ]]; then mv $FILE /srv/Trash/ && echo "[$USERNAME $(date +"%Y-%m-%d_%H-%M-%S")] Deleted: $FILE" >> /srv/Trash/delete.log; fi'
- 如果 /srv/Trash 有同名的 $FILE 文件 ,则拒绝移动并报错。
 
/bin/sh -c 'if [[ "$FILE" != "/srv/Trash/"* ]]; then mv $FILE /srv/Trash/ --suffix $(date +/"%Y-%m-%d_%H-%M-%S/") && echo "[$USERNAME $(date +/"%Y-%m-%d_%H-%M-%S/")] Deleted: $FILE" >> /srv/Trash/delete.log; fi'
报错
filebrowser  | 2024/03/13 11:20:56 [INFO] Blocking Command: "/bin/sh /root/before_delete.sh"
filebrowser  | sh: /srv/Trash/delete.log: unknown operand
- 改为 sh 脚本后 一行一行注释去找哪一行报错
 "$FILE" != "/srv/Trash/"*这一句有问题 会导致/srv/Trash/delete.log: unknown operand- 改成字符串比较
 
改用 sh 脚本
#!/bin/sh
if [[ "${1:0:11}" != "/srv/Trash/"  ]]; then
    NOW=$(date +"%Y-%m-%d_%H-%M-%S")
    T_FILE=$1
    if [ -e "/srv/Trash/$(basename "$1")" ]; then
        mv "$1" "${1}_${NOW}"
        T_FILE="${1}_${NOW}"
    fi
    mv "${T_FILE}" /srv/Trash/
    echo "$2 ${NOW} Deleted: $1 - /srv/Trash/$(basename ${T_FILE})"
    echo "$2 ${NOW} Deleted: $1 -> /srv/Trash/$(basename ${T_FILE})" >> /srv/Trash/DELETE.log;
fi
- 配置处改为 
/bin/sh /root/before_delete.sh $FILE $USERNAME