Mac系统软件备份脚本

前段时间更换了新电脑,想到如果不用Time mechine的话,还有什么其他的方式安装常用的软件,写了一个备份脚本,用来备份常用的软件(包含brew下载的和App Store下载的软件)
脚本实现的主要功能:

  1. 获取brew下载列表和app store下载列表
  2. 写成对应工具的下载格式
  3. 提供一键安装的能力(也就是brew和mas的安装过程也要放在脚本内)
  4. 异地备份,这个脚本最好不保存在电脑本地,我指定的位置是iCloud云盘
    经过查阅后,搜索到了MAS这个工具,可以获取App Store下载的软件并根据指定代码安装,且也可以通过homebrew下载安装。
    脚本如下:
#!/bin/bash

# 定义输出路径
current_path="$(pwd)"
ICLOUD_DEST="${current_path}/Library/Mobile Documents/com~apple~CloudDocs"
OUTPUT_SCRIPT="${ICLOUD_DEST}/reinstall_software.sh"

# 确保目标目录存在
mkdir -p "${ICLOUD_DEST}"

# 生成 reinstall_brew.sh 文件
echo '#!/bin/bash' > "${OUTPUT_SCRIPT}"
echo 'echo "Starting Homebrew reinstallation..."' >> "${OUTPUT_SCRIPT}"
echo '/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"' >> "${OUTPUT_SCRIPT}"
echo "collecting app list from brew..."
echo 'echo "Installing Homebrew packages..."' >> "${OUTPUT_SCRIPT}"
brew list --formula | awk '{print "brew install " $0}' >> "${OUTPUT_SCRIPT}"
echo 'echo "Installing Homebrew cask applications..."' >> "${OUTPUT_SCRIPT}"
brew list --cask | awk '{print "brew install --cask " $0}' >> "${OUTPUT_SCRIPT}"

#处理mas
echo 'echo "Installing Mac App Store apps..."' >> "${OUTPUT_SCRIPT}"
echo "collecting app list from mas..."
# 添加重新登录到 App Store 的提示
echo 'echo "Please ensure you are logged in to the Mac App Store"' >> "${OUTPUT_SCRIPT}"

# 获取已安装的应用并添加安装命令
mas list | awk '{print "mas install " $1}' >> "${OUTPUT_SCRIPT}"


# 给脚本赋予执行权限
chmod +x "${OUTPUT_SCRIPT}"

echo "Backup script has been generated at ${OUTPUT_SCRIPT}"
# 日志记录
echo "Backup script updated at $(date)" >> ~/backup_log.log

这个脚本最后会在云盘生成一个reinstall_software.sh文件,在使用时将其复制到本地并chmod +x添加执行权限即可。同时这个脚本会在本地跟文件夹生成backup_log.log文件,方便查询备份情况。
我将这个脚本整合进了.zprofile的常用命令中,这样每次进行更新brew过程中都会执行一次备份工作,方便及时备份。
ps. 因为这个脚本只是简单的将所有的软件列表写进脚本,里面会涉及到一些不常用的软件,建议大家在使用reinstall_software.sh文件前先人工筛选一遍,删除一些不必要的下载列表。

留下评论

您的邮箱地址不会被公开。 必填项已用 * 标注

京ICP2024042812