You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

编写每日cronjob的Bash脚本:带压缩的TXT文件目录同步

用于每日Cron任务的TXT文件同步脚本

我来帮你完善这个满足需求的bash脚本,它会自动同步指定目录下所有TXT文件(包含子目录),自动创建目标目录,并且通过tar压缩传输来提升效率,同时严格保持原有的目录结构:

#!/bin/bash -l

# 定义源目录和目标目录,请根据实际路径修改
fromDir='/c/fromFolder'  # 注意:在bash环境中Windows路径要转为这种格式,或者使用WSL的/mnt/c/fromFolder
toDir='/c/toFolder'

# 确保目标目录存在,不存在则自动创建(包括父目录)
mkdir -p "$toDir"

# 使用tar压缩源目录下的所有txt文件,保持目录结构,然后解压到目标目录
# 这种方式通过管道传输压缩包,避免生成临时文件,提升传输效率
tar -cf - -C "$fromDir" . --include="*.txt" | tar -xf - -C "$toDir"

# 可选:添加日志输出,方便排查问题(如果需要的话取消注释)
# exec > /var/log/txt_sync.log 2>&1

关键部分解释:

  • #!/bin/bash -l:使用登录shell模式执行脚本,会加载用户的环境变量,这对cron任务很重要,因为cron的默认环境变量很有限。
  • mkdir -p "$toDir":-p参数会自动创建所有不存在的父目录,避免因为上级目录不存在导致报错。
  • tar -cf - -C "$fromDir" . --include="*.txt":
    • -cf -:创建压缩包并输出到标准输出(而不是生成文件)
    • -C "$fromDir":切换到源目录后再执行打包操作,这样能保持相对目录结构
    • --include="*.txt":只打包扩展名为txt的文件
  • tar -xf - -C "$toDir":从标准输入读取压缩包,解压到目标目录,完美还原原有的目录结构。

额外优化建议:

  • 添加执行权限:脚本写完后记得赋予执行权限:chmod +x sync_txt_files.sh
  • 配置Cron任务:如果要每天执行,比如凌晨2点,打开crontab编辑器:crontab -e,添加一行:
    0 2 * * * /path/to/your/sync_txt_files.sh
    
    注意替换成脚本的绝对路径。
  • 跨机器传输:如果需要同步到远程服务器,可以把tar管道改成ssh传输,示例:
    tar -czf - -C "$fromDir" . --include="*.txt" | ssh your_user@remote_server "mkdir -p '$toDir' && tar -xzf - -C '$toDir'"
    
    这样压缩后通过SSH传输,在远程服务器直接解压,效率更高。
  • 日志记录:取消脚本里的日志注释,或者在cron任务里添加日志输出:
    0 2 * * * /path/to/your/sync_txt_files.sh >> /var/log/txt_sync.log 2>&1
    

内容的提问来源于stack exchange,提问作者mcsy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 07:05:08