V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
cheneydog
V2EX  ›  问与答

系统维护,需要监控目录大小,超过大小按照日期删除子文件和子文件夹。

  •  
  •   cheneydog · 2020-10-27 15:34:03 +08:00 · 1411 次点击
    这是一个创建于 1489 天前的主题,其中的信息可能已经有所发展或是发生改变。
    这么个需求,用脚本写起来感觉都好困难。
    如果让你做这个需求,你是愿意写成 shell 、 还是 python 、还是 golang 写好编译成 bin ?
    22 条回复    2020-10-28 00:02:57 +08:00
    cheneydog
        1
    cheneydog  
    OP
       2020-10-27 15:39:22 +08:00
    或者写成 nodejs 的?
    CallMeReznov
        2
    CallMeReznov  
       2020-10-27 15:42:33 +08:00
    python
    os.listdir
    os.path.getsize


    mv 到单独的文件夹里,为了稳妥,单独操作删除步骤,想定时带确认那都随便你了。
    cmdOptionKana
        3
    cmdOptionKana  
       2020-10-27 15:46:04 +08:00
    用什么都一样,这个级别的任务体现不了多少语言优势,用最熟练的语言来做就行。
    v2orz
        4
    v2orz  
       2020-10-27 16:50:29 +08:00
    shell 应该最容易
    Tumblr
        5
    Tumblr  
       2020-10-27 16:51:44 +08:00
    PowerShell,非常简单的一个实现了。。。
    w274189159
        6
    w274189159  
       2020-10-27 17:01:08 +08:00
    shell 不是很简单嘛。ll -Sh 文件大小排序后超过大小的用 find 查找日期时间段的筛出来删除
    cheneydog
        7
    cheneydog  
    OP
       2020-10-27 17:50:23 +08:00
    @w274189159
    @v2orz
    我咋觉得 shell 写起来好麻烦,一个 if 就要好多行。
    cheneydog
        8
    cheneydog  
    OP
       2020-10-27 17:50:54 +08:00
    @Tumblr linux 的服务器
    swulling
        9
    swulling  
       2020-10-27 18:04:34 +08:00 via iPhone
    shell 一行
    Tumblr
        10
    Tumblr  
       2020-10-27 19:10:57 +08:00
    @cheneydog #7 平台不太重要,PowerShell 是跨平台的。
    hanxiV2EX
        11
    hanxiV2EX  
       2020-10-27 19:22:21 +08:00 via Android
    find 命令加 rm 命令就行
    hanxiV2EX
        12
    hanxiV2EX  
       2020-10-27 19:23:15 +08:00 via Android
    MeteorCat
        13
    MeteorCat  
       2020-10-27 19:25:07 +08:00 via Android
    shell 无脑做就行了,用系统自带不需要什么依赖,干干净净
    cheneydog
        14
    cheneydog  
    OP
       2020-10-27 19:25:54 +08:00
    @hanxiV2EX 这个是按照天删的,需求是按照最大大小删的,还是有点区别的。
    cheneydog
        15
    cheneydog  
    OP
       2020-10-27 19:26:42 +08:00
    @MeteorCat 我觉得 shell 的 if else 特别难看,读个配置文件都很麻烦。
    hanxiV2EX
        16
    hanxiV2EX  
       2020-10-27 19:33:43 +08:00 via Android
    @cheneydog 你标题不是写的按照日期删么
    alixali
        17
    alixali  
       2020-10-27 19:48:11 +08:00 via iPad
    shell 更清晰,执行不会出问题。python 的话就几行就完事了,加上定时任务;两个风格不一样。
    MeteorCat
        18
    MeteorCat  
       2020-10-27 19:48:39 +08:00 via Android
    @cheneydog ......我都是看注释说明,注释到位啥都行,难不难看不寒碜又不是找老婆,当然你要好看也可以 python 一把梭,这种没什么大问题,我一般服务器要求都是用最少的东西干最多的活
    cheneydog
        19
    cheneydog  
    OP
       2020-10-27 20:40:51 +08:00
    @MeteorCat
    @alixali
    @hanxiV2EX
    看了几位的观点,现在已经倾向于 shell 直接写了,如果后续还要加一些:eg. 配置文件指定多个目录 /MGK 表示限定大小 /忽略指定子文件 等一些啰嗦的需求,shell 会不会不好维护?
    MeteorCat
        20
    MeteorCat  
       2020-10-27 21:27:14 +08:00 via Android
    @cheneydog 参数提取,写成像脚本一样丢个参数执行,和脚本文件一样传参数就行了
    alixali
        21
    alixali  
       2020-10-27 21:52:18 +08:00 via iPad
    @cheneydog 看你这个是单台机器还是多台,对于多台集群,来说每台的环境都一样那就可以直接读取一台机子上的 shell 文件。单台的话就区分就不是特别的大了。维护的话我还是觉得 shell 方便一点。
    hanxiV2EX
        22
    hanxiV2EX  
       2020-10-28 00:02:57 +08:00 via Android
    @cheneydog 说到维护,你可以参考 acme.sh
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2888 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 08:57 · PVG 16:57 · LAX 00:57 · JFK 03:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.