改配置、跑脚本之前先备份一份,是程序员的基本素养。这段 aardio 脚本可以把任意目录下的文件按日期复制到独立备份目录,例如 D:/backup/data_20260905,既保留原始文件,也方便按日期回滚。

实现思路

用 tostring(time(), "%Y%m%d") 生成当天日期串拼出备份目录,fsys.createDir 确保目录存在;fsys.each 遍历源目录文件,逐条 fsys.copy 到备份目录并统计成功数。

完整代码

import console;
import fsys;
import time;

console.open();

var srcDir = "D:/work/data";                       // 源目录
var bakRoot = "D:/backup/";                        // 备份根目录

main = function() {
    var dateStr = tostring(time(), "%Y%m%d");
    var bakDir = bakRoot + "data_" + dateStr;      // 如 D:/backup/data_20260905
    fsys.createDir(bakDir);

    var count = 0;
    for (i, filename, fullpath in fsys.each(srcDir, , "*.*", "file")) {
        var target = fsys.joinpath(bakDir, filename);
        if (fsys.copy(fullpath, target)) {
            count++;
        } else {
            console.log("备份失败:" + filename);
        }
    }

    console.log("备份完成:" + count + " 个文件 -> " + bakDir);
};

main();
console.pause(true);

运行建议

  • 结合 Windows 计划任务每天自动运行一次,就是最简单的每日快照;
  • 本脚本默认静默复制,遇到失败可用 fsys.lasterr() 查询错误信息;
  • 需要保留多天历史时,可顺手把 7 天前的日期目录 fsys.delete 清理,控制磁盘占用。

小结

日期目录加 copy 是最直观的备份模型,在此基础上加上 fsys.enum 递归遍历就能备份整个目录树,适合站点文件、数据库导出文件等场景。