Mac常用sh文件

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: Mac常用sh文件

sh脚本文件

需要配置mysqldump到环境变量

Mysql备份backup_mysql.sh

单sql文件

#!/bin/bash
# MySQL数据库配置
DB_HOST="IP" # MySQL服务器的IP地址
DB_PORT="3306" # MySQL服务器的端口号
DB_USER="root"
DB_PASSWORD="123456"
DB_NAME="DBNAME"
BACKUP_DIR="/Users/yuqiu/dbbackup"
# 要排除的表的前缀
EXCLUDE_PREFIXES=("sys_log_" "bus_log_")
# 获取数据库中的所有表
TABLES=$(mysql -h$DB_HOST -P$DB_PORT -u$DB_USER -p$DB_PASSWORD $DB_NAME -e "SHOW TABLES;" | grep -v "Tables_in_$DB_NAME")
# 排除指定前缀的表
for prefix in "${EXCLUDE_PREFIXES[@]}"; do
    TABLES=$(echo "$TABLES" | grep -v "^$prefix")
done
# 当前日期
DATE=$(date +%Y%m%d_%H%M)
# 备份目录
BACKUP_PATH="$BACKUP_DIR/$DB_NAME-backup-$DATE.sql"
# 备份所有表,排除指定前缀的表
mysqldump -h$DB_HOST -P$DB_PORT -u$DB_USER -p$DB_PASSWORD $DB_NAME $TABLES > $BACKUP_PATH
# 压缩备份文件
gzip $BACKUP_PATH
echo "Backup completed: $BACKUP_PATH.gz"

结构和数据sql文件

#!/bin/bash
# MySQL数据库配置
DB_HOST="IP" # MySQL服务器的IP地址
DB_PORT="3306" # MySQL服务器的端口号
DB_USER="root"
DB_PASSWORD="123456"
DB_NAME="DBNAME"
BACKUP_DIR="/Users/yuqiu/dbbackup"
# 要排除的表的前缀
EXCLUDE_PREFIXES=("sys_log_" "bus_log_")
# 获取数据库中的所有表
TABLES=$(mysql -h$DB_HOST -P$DB_PORT -u$DB_USER -p$DB_PASSWORD $DB_NAME -e "SHOW TABLES;" | grep -v "Tables_in_$DB_NAME")
# 排除指定前缀的表
for prefix in "${EXCLUDE_PREFIXES[@]}"; do
    TABLES=$(echo "$TABLES" | grep -v "^$prefix")
done
# 当前日期
DATE=$(date +%Y%m%d_%H%M)
#备份成单个sql文件
#BACKUP_PATH="$BACKUP_DIR/$DB_NAME-backup-$DATE.sql"
# 单个sql文件备份,排除指定前缀的表
#mysqldump -h$DB_HOST -P$DB_PORT -u$DB_USER -p$DB_PASSWORD $DB_NAME $TABLES > $BACKUP_PATH
# 单个sql压缩备份文件
#gzip $BACKUP_PATH
#备份成两个sql文件structure和data
STRUCTURE_BACKUP_PATH="$BACKUP_DIR/$DB_NAME-structure-$DATE.sql"
DATA_BACKUP_PATH="$BACKUP_DIR/$DB_NAME-data-$DATE.sql"
FINAL_BACKUP_PATH="$BACKUP_DIR/$DB_NAME-backup-$DATE.tar.gz"
# 导出表结构
mysqldump -h$DB_HOST -P$DB_PORT -u$DB_USER -p$DB_PASSWORD --default-character-set=utf8mb4 --no-data $DB_NAME $TABLES > $STRUCTURE_BACKUP_PATH
# 导出数据
mysqldump -h$DB_HOST -P$DB_PORT -u$DB_USER -p$DB_PASSWORD --default-character-set=utf8mb4 --no-create-info $DB_NAME $TABLES > $DATA_BACKUP_PATH
# 合并两个SQL文件并压缩
tar -czvf $FINAL_BACKUP_PATH -C $BACKUP_DIR $(basename $STRUCTURE_BACKUP_PATH) $(basename $DATA_BACKUP_PATH)
# 删除临时SQL文件
rm $STRUCTURE_BACKUP_PATH $DATA_BACKUP_PATH
echo "Backup completed: $BACKUP_PATH.gz"

压缩多个文件夹到一个ZIP

#!/bin/bash
# 定义目标目录
target_dir="/Users/yuqiu/****/"
output_dir="$target_dir/ZIPDIR"
# 获取当前日期
current_date=$(date +"%Y-%m-%d")
# 定义压缩文件名
zip_filename="XX_${current_date}.zip"
# 检查目标目录是否存在
if [ ! -d "$target_dir" ]; then
  echo "目标目录不存在: $target_dir"
  exit 1
fi
# 检查要压缩的目录是否存在
if [ ! -d "$target_dir/needZipFolder1" ] || [ ! -d "$target_dir/needZipFolder2" ]; then
  echo "要压缩的目录不存在"
  exit 1
fi
# 检查并创建输出目录
if [ ! -d "$output_dir" ]; then
  mkdir -p "$output_dir"
  if [ $? -ne 0 ]; then
    echo "无法创建输出目录: $output_dir"
    exit 1
  fi
fi
# 切换到需要压缩文件的目录
cd "$target_dir"
# 创建压缩文件,压缩指定的两个文件夹
zip -r "$output_dir/$zip_filename" "needZipFolder1" "needZipFolder2"
# 检查压缩是否成功
if [ $? -eq 0 ]; then
  echo "压缩成功: $output_dir/$zip_filename"
else
  echo "压缩失败"
  exit 1
fi

打开文件夹

#!/bin/bash
# 获取当前日期
current_date=$(date +"%Y-%m-%d")
# 指定文件夹路径
FOLDER_PATH="/Users/yuqiu/log/${current_date}"
# 使用 open 命令打开文件夹
open "$FOLDER_PATH"

打开微信并弹出指定联系人

#!/bin/bash
# 获取当前日期
current_date=$(date +"%Y-%m-%d")
FILE_PATH="/Users/yuqiu/XX/XX_${current_date}.zip"
# 目标微信用户
TARGET_USER="userWXidNumber"
# AppleScript
osascript <<EOF
tell application "WeChat"
    activate
    delay 2
    -- 打开微信搜索并输入目标用户名字
    tell application "System Events"
        keystroke "f" using {command down}
        delay 1
        keystroke "$TARGET_USER"
        delay 1
        keystroke return
        delay 1
        -- 打开文件发送窗口
        -- keystroke "f" using {command down, shift down}
        -- delay 1
        -- 输入文件路径并发送
        -- set the clipboard to POSIX file "$FILE_PATH" as text
        -- delay 1
        -- keystroke "v" using {command down}
        -- delay 1
        -- keystroke return
        -- delay 1
        -- keystroke return
    end tell
end tell
EOF

问题

155:189: execution error: “System Events”遇到一个错误:“osascript”不允许发送按键。 (1002)

系统偏好设置-》隐私与安全性-》隐私-》辅助功能,选择应用程序(例如“Terminal”或“Script Editor”),如果脚本是作为一个单独的应用运行的,就选择那个应用。如果直接通过命令行工具如osascript执行AppleScript,添加“终端”(Terminal)。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
mac上datagrip.vmoptions文件编辑错误导致DataGrip软件打不开
mac上datagrip.vmoptions文件编辑错误导致DataGrip软件打不开
|
iOS开发 MacOS
Mac 解决安装软件文件已损坏,打不开,您应该推出磁盘映像
Mac 解决安装软件文件已损坏,打不开,您应该推出磁盘映像
584 0
|
Web App开发 开发者
Mac Chrome crx(插件) 文件导出与导入
Mac Chrome crx(插件) 文件导出与导入
410 0
|
IDE 开发工具 计算机视觉
关于opencv在PyCharm中没有提示的解决方案mac和win通用(不是改文件和复制)
由于最近有项目需要使用到IDE的debug功能,jupyter notebook没有debug功能,所以需要使用PyCharm。平时使用jupyter的时候也没有遇到opencv没有提示的问题,所以遇到这个问题的时候上网搜索了各种方法包括但不限于:复制文件,修改init文件,降低opencv版本等一系列方法都无效。我在三天内重装了5次系统n次anaconda,终于在最后解决了这个问题,放在这里供大家参考。
|
调度 iOS开发 开发者
Mac提示文件:已损坏,无法打开。你应该把它移到废纸篓
Mac提示文件:已损坏,无法打开。你应该把它移到废纸篓
310 0
|
3月前
|
iOS开发 MacOS Windows
Mac air使用Boot Camp安装win10 ,拷贝 Windows 文件时出错
Mac air使用Boot Camp安装win10 ,拷贝 Windows 文件时出错
|
2月前
|
iOS开发 索引 MacOS
mac文件搜索工具
【10月更文挑战第11天】
|
4月前
【科研技巧】Mac 系统如何给Endnote 20添加某篇文献信息和附加PDF文件
Mac系统下使用Endnote 20添加文献信息和PDF文件的详细步骤,包括下载.enw文件和在Endnote中导入这些文件的方法。
205 6
|
4月前
|
Linux
【Linux 或Mac系统】自动生成项目结构目录并放在README.md文件中
如何在Linux或Mac系统中使用tree命令自动生成项目结构目录,并将其格式化后放入项目的README.md文件中以展示项目结构。
114 1
|
4月前
|
内存技术
Mac 修改文件默认打开方式
Mac 修改文件默认打开方式
18 0