Fork me on GitHub

Mac常用sh文件

sh脚本文件

需要配置mysqldump到环境变量

Mysql备份backup_mysql.sh

注意Mysqldump同时备份多个表时如果存在多个Myisam表,Mysqldump会加表锁到最后一个表备份完才执行.
单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文件
•--single-transaction:对 InnoDB 表生效,启动一个一致性快照,避免锁表。
•--lock-tables=false:关闭表锁,不会对 MyISAM 表加锁,因此 MyISAM 表的备份内容可能会出现不一致。
因为时mysqldump整个数据库的表,所以不加--lock-tables=false的话会导致整个库表都被锁死,系统会瘫痪.要么就是挑业务量低峰期备份

#!/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=("ibe_dev_data_" "ibe_be_jd_qu_report_" "ibe_be_jd_qu_")
# 要排除的表的后缀
EXCLUDE_SUFFIXES=("_temp" "_backup")
# 要排除的特定表名
EXCLUDE_TABLES=("environment_log" "jynb_event_logs" "sheenled_log" "ibe_be_jd_data")


# 获取数据库中的所有表
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

# 排除指定后缀的表
for suffix in "${EXCLUDE_SUFFIXES[@]}"; do
    TABLES=$(echo "$TABLES" | grep -v "$suffix$")
done

# 排除指定名称的表
for table in "${EXCLUDE_TABLES[@]}"; do
    DATATABLES=$(echo "$TABLES" | grep -v "^$table$")
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 --single-transaction --lock-tables=false $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 --single-transaction --lock-tables=false $DB_NAME $DATATABLES > $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)。

posted @   秋夜雨巷  阅读(64)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
历史上的今天:
2019-06-18 利用网站上传漏洞使用一句话木马控制服务器
点击右上角即可分享
微信分享提示