目录

Beyond Compare 命令行工具的用法

安装

需手动点击,Beyond Compare 菜单:安装命令行工具。

主要有两大工具:

  • /usr/local/bin/bcomp: 启动比较并等待它完成。

  • /usr/local/bin/bcompare: 启动比较并立即返回。

BC 业务脚本编写1

# Turn logging on.

log normal "/Users/yuhanliu/Documents/yuhan/config/crontab/beyondcompare.log"

# Load the default session and exclude all but certain file types.

load <default>

filter ".DS_Store"

filter cutoff:<1000days

# Load the base folders.

load "/Users/yuhanliu/Documents/projects/temp" "/Users/yuhanliu/Documents/yuhan/sites/blog-tech-hugo-md/content/p"

# Copy different files left to right, delete orphans on right.

sync mirror:left->right

一些命令的用法总结如下2

load <session>
load [create:(all|left|right)] <left path> [<right path>]
load <default>

filter <file masks>

filter cutoff:([<|>](<timestamp>|<number of days>[days])|none)
filter attrib:((+|-)<attribute set>|none)
filter size:([<|>]<number>[KB|MB|GB|TB]|none)
filter exclude-protected
filter include-protected

sync [visible] [create-empty] (update|mirror):(left->right|right->left|all)

注意一定要在偏好设置->调整->脚本->共享的脚本文件夹中设置,否则脚本执行会报无法打开文件或找不到文件的ERROR

https://cdn.jsdelivr.net/gh/dfface/img0@master/2022/04-20-MaUQUD.png

你这里面有个日志文件,看是不是要自己建一个哟:beyondcompare.log

最终我这个脚本运行成功,但是并没有把文件复制过去,裂开。

Shell 脚本编写

#! /bin/zsh
source ~/.zshrc

# 1 同步文件
/usr/local/bin/bcomp "@/Users/yuhanliu/Documents/yuhan/config/crontab/temp-p-sync.text"

# 2 Git 提交
eval `ssh-agent -s`  # 使用之前必须启动它
ssh-add ~/.ssh/id_ed25519_github_dfface
cd /Users/yuhanliu/Documents/yuhan/sites/blog-tech-hugo-md
git add .
sleep 5  # 防止并发卡壳
git config commit.gpgsign false  # 本次不使用 GPG 签名
git commit -m "Content File Changed."
git config commit.gpgsign true  # 恢复过来
sleep 5

# 3 Git 推送
git push

记得给予脚本可执行的权限:

chmod +x temp-p-sync.sh

注意 bcomp 命令,后面的脚本文件请一定用绝对路径,相对路径它也找不到,没在偏好设置里面写上共享的脚本文件夹它也找不到。建议排查命令错误的时候,不要加上-silent 选项。

Crontab 定时任务编写

30 15,22 * * * /Users/yuhanliu/Documents/yuhan/config/crontab/temp-p-sync.sh > /Users/yuhanliu/Documents/yuhan/config/crontab/temp-p-sync.log 2>&1

表示每天15:30和22:30将运行temp-p-sync.sh文件。

注意:

  • crontab 最小的时间单位: 1分钟,没有秒、年!分 时 日 月 命令 !
  • crontab file 只能在同一个文件追加任务,因为再执行一次,就会替换当前的定时任务而不是新增3
  • 注意使用 ssh-add 之前要启动 ssh-agent 4
  • 上面加的#! /bin/zshsource ~/.zshrc 环境变量在这里其实一点作用都没有!
  • 如果脚本执行失败,原因是 BC 的问题,显示无法打开它那个脚本,为什么?你没有在偏好设置中,设置“共享的脚本文件夹”!

启动定时任务

└> crontab cron-file

└> crontab -l

0 15 * * * /Users/yuhanliu/Documents/yuhan/config/crontab/rclone-onedrive-lyh.sh > /Users/yuhanliu/Documents/yuhan/config/crontab/rclone-onedrive-lyh.log 2>&1
30 15,22 * * * /Users/yuhanliu/Documents/yuhan/config/crontab/temp-p-sync.sh > /Users/yuhanliu/Documents/yuhan/config/crontab/temp-p-sync.log 2>&1