标签: macOS

  • macOS 卸载Multipass虚拟机

    Multipass 虽然非常轻量,启动虚拟机的速度也很快,但由于不支持导入和导出虚拟机,对于有这类需求的用户来说并不适用。因此我决定卸载它。

    找了很久才找到卸载方法,最后在 GitHub 的 issues 区才找到正确方式,顺利卸载成功!以下是操作步骤:

    卸载步骤

    1. 打开 Terminal
    2. 执行以下命令开始卸载:
    sudo sh "/Library/Application Support/com.canonical.multipass/uninstall.sh"

    输入密码后等待卸载完成即可。

  • Intel Mac上安装windows11的方案

    由于 Windows 10 将在半年后终止支持,为了增加系统的可靠性,我们需要安装 Windows 11。

    Windows 10 终止支持信息:

    • Windows 10 将在 2025 年 10 月 14 日终止支持。
    • 当前版本 22H2 将是 Windows 10 的最终版本,所有版本在该日期前仍受支持,以获取每月安全更新。
    • 超过该日期后,现有 LTSC 版本将继续接收更新,具体取决于其特定的生命周期。

    准备工作:

    • Windows 镜像下载:
    • 根据您需要的语言,从以下链接下载 Windows 镜像:
    Windows 10:
    https://www.microsoft.com/en-us/software-download/windows10
    Windows 11:
    https://www.microsoft.com/en-us/software-download/windows11
    • 驱动下载:
    • 使用 macOS 的“启动转换助理”下载驱动。
    • U 盘准备:
    • 将下载好的文件复制到 U 盘中备用。
    • U 盘格式:NTFS、FAT32、exFAT 均可。

    安装步骤:

    由于“启动转换助理”目前仅支持 Windows 10 镜像,不支持 Windows 11 镜像,我们采用升级的方式进行安装。

    1. 在 Mac 上通过“启动转换助理”安装 Windows 10:
      • 设置分区大小,载入 Windows 10 镜像进行安装。
    2. 安装 Windows 11:
      • 在 Windows 10 系统中升级 Windows 11。
      • 由于 Mac 不支持 Windows 11,我们需要跳过 CPU 检测,强制安装。
      • 解压下载好的 Windows 11 镜像,执行以下命令跳过 CPU 检测:
    ./sources/setupprep.exe /product server
    • 保留文件,进行升级安装。
    • 等待安装完成。

    提示:

    • 全新安装会丢失驱动,需要通过扩展坞连接键盘鼠标进行安装。
    • 驱动需要从 macOS 的“启动转换助理”下载,复制到 Windows 中运行。
    • 请耐心等待安装完成。
  • macOS 禁止在 SMB 共享上创建 .DS_Store 文件

    macOS 禁止在 SMB 共享上创建 .DS_Store 文件

    命令:

    defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool TRUE

    执行命令后,重启电脑生效

    作用:

    • 防止在网络共享文件夹中生成 .DS_Store 文件,保持文件夹整洁。
    • 避免将 macOS 特有的文件传播到其他操作系统,例如 Windows 或 Linux。
    • 减少网络共享上的不必要数据,从而节省存储空间和带宽。

    还原操作:

    要恢复默认设置,允许 macOS 在网络共享上创建 .DS_Store 文件,请在终端中执行以下命令:

    命令:

    defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool FALSE

    执行命令后,重启电脑生效

  • 使用 OpenSSL 在 macOS 上进行文件加密与解密

    在数字化时代,保护个人和企业的数据安全至关重要。特别是对于包含敏感信息的文件,确保其在存储或传输过程中的安全性是非常必要的。加密是一种有效的保护手段,它确保了未经授权的人员无法访问加密文件的内容。使用 OpenSSL 工具,并通过一个简单的 shell 脚本,在 macOS 上实现文件的加密与解密操作。

    1. OpenSSL 简介

    OpenSSL 是一个开源的工具库,它提供了强大的加密算法,广泛应用于数据加密、SSL/TLS 加密协议等领域。它支持对文件进行加密、解密,并且提供了生成密钥、证书等功能。在 macOS 上,OpenSSL 通常是预装的,因此我们可以直接在终端使用它来加密和解密文件。

    2. 脚本功能概述

    通过使用 OpenSSL 工具和一个简单的 shell 脚本,我们可以在 macOS 系统上实现文件的加密与解密。该脚本具有以下功能:

    • 加密文件:用户通过输入密码将指定的文件加密,生成 .enc 后缀的加密文件。
    • 解密文件:用户输入密码,解密 .enc 后缀的加密文件,恢复成原始文件。

    3. 脚本实现原理

    该 shell 脚本使用 OpenSSL 的 enc 命令,通过 AES-256-CBC 加密算法对文件进行加密。为了增强安全性,脚本还使用了盐值(-salt)和 PBKDF2 密码派生函数(-pbkdf2)。脚本通过文件的扩展名来判断文件是需要加密还是解密,用户只需输入密码即可完成加密或解密操作。

    4. 脚本代码

    以下是实现文件加密与解密的 macOS 版本 shell 脚本。它支持加密和解密操作,用户只需输入密码即可完成文件的加密或解密。

    保存为encrypt_decrypt.sh

    #!/bin/bash
    
    # 配置加密方式
    CIPHER="-aes-256-cbc -salt -pbkdf2"
    
    # 检查是否传入文件名参数
    if [ -z "$1" ]; then
        echo "错误: 请传入需要加密或解密的文件名。"
        echo "示例: ./encrypt_decrypt.sh file.txt"
        exit 1
    fi
    
    input_file="$1"
    file_ext="${input_file##*.}"
    output_file=""
    
    # 判断是加密还是解密
    if [ "$file_ext" == "enc" ]; then
        output_file="${input_file%.enc}"
        echo "正在解密文件: $input_file"
        echo "请输入密码进行解密:"
        read -s password
        openssl enc $CIPHER -d -in "$input_file" -out "$output_file" -pass pass:"$password"
        if [ $? -eq 0 ]; then
            echo "解密完成,输出文件: $output_file"
        else
            echo "解密失败,请检查密码。"
        fi
    else
        output_file="${input_file}.enc"
        echo "正在加密文件: $input_file"
        echo "请输入密码进行加密:"
        read -s password
        openssl enc $CIPHER -in "$input_file" -out "$output_file" -pass pass:"$password"
        if [ $? -eq 0 ]; then
            echo "加密完成,输出文件: $output_file"
        else
            echo "加密失败,请检查密码。"
        fi
    fi
    
    echo "操作完成。"

    5. 如何使用此脚本

    5.1 环境准备

    首先,确保你已经安装了 OpenSSL。macOS 通常自带了 OpenSSL,您可以通过以下命令验证是否已安装:

    openssl version

    5.2 使用方法

    设置文件权限:

    chmod +x encrypt_decrypt.sh

    加密文件
    将需要加密的文件传入脚本。例如,如果要加密 file.txt 文件,可以在终端运行以下命令:

    ./encrypt_decrypt.sh file.txt

    脚本会提示你输入密码,输入密码后,文件将被加密,输出 .enc 后缀的加密文件。

    解密文件
    如果你有一个加密过的 .enc 文件,使用以下命令进行解密:

    ./encrypt_decrypt.sh file.txt.enc

    脚本会提示你输入密码,输入正确的密码后,文件将被解密为原始文件。

    5.3 注意事项

    • 密码的安全性:密码是加密和解密的关键,请确保密码足够强大并妥善保管。避免使用简单的密码,以减少文件被破解的风险。
    • 文件备份:在进行加密或解密操作之前,建议先备份原始文件,以防止由于操作失误导致文件丢失。

    通过使用 OpenSSL 工具和本教程提供的 shell 脚本,您可以轻松地在 macOS 上实现文件的加密与解密。无论是保护个人文件,还是传输敏感数据,密码加密都是一种简单而有效的保护方式。

  • macOS 使用CONSOLE线连接 FortiGate Console

    macOS 使用 USB 连接默认 Terminal 连接 FortiGate Console

    使用 macOS 操作系统自带的终端(Terminal)应用程序,通过 USB Console 线缆 连接到 FortiGate 防火墙设备的控制台接口。这种连接方式允许您在没有网络连接的情况下直接访问 FortiGate 的命令行界面(CLI),进行配置、故障排除等操作。

    前提条件

    • 一台运行 macOS 的计算机。
    • 一条 USB Console 线缆(线缆一端为 RJ45 接口,连接 FortiGate 的 Console 端口,另一端为 USB 接口,连接您的 macOS 电脑)。
    • 通常情况下,macOS 会自动识别并加载 USB Console 设备的驱动程序,您可能无需手动安装。

    操作步骤

    1. 打开终端(Terminal)应用

    在 macOS 中,打开“应用程序”文件夹,然后进入“实用工具”文件夹,找到并双击“终端”应用程序,或者使用 Spotlight 搜索“终端”并打开。

    2. 列出 USB 设备

    使用以下命令列出系统中所有与 USB 相关联的设备文件:

    ls /dev/*usb*

    解释

    • /dev/ 是一个特殊的目录,包含了系统中所有设备文件的入口。
    • *usb* 是一个通配符,用于匹配文件名中包含 “usb” 字符串的所有文件。通过执行此命令,您可以找到与 USB 连接相关的设备文件,包括您的 USB Console 设备。

    输出示例

    /dev/cu.usbserial-A9XBSOU6
    /dev/tty.usbserial-A9XBSOU6

    在输出结果中,您需要找到一个包含 tty.usbserialcu.usbserial 字符串的设备文件。通常,tty. 开头的设备文件用于拨出连接,而 cu. 开头的设备文件用于呼入连接。在 screen 命令中,通常使用 tty. 开头的设备。

    3. 选择 USB 串口设备

    仔细查看 ls /dev/*usb* 命令的输出,找到与您的 FortiGate 设备连接的 USB Console 线缆对应的设备路径。例如,在上述示例中,/dev/tty.usbserial-A9XBSOU6 就是您可能需要使用的设备。如果您不确定是哪个,可以尝试在插入和拔出 USB Console 线缆时多次运行该命令,观察新增或消失的设备文件。

    4. 连接到 FortiGate 控制台

    使用 screen 命令连接到 FortiGate 控制台。您需要将 /dev/tty.usbserial-A9XBSOU6 替换为您在第 3 步中找到的实际设备路径。大多数 FortiGate 设备的默认波特率为 9600,数据位为 8,停止位为 1,无奇偶校验(8N1)。因此,您可以运行以下命令:

    screen /dev/tty.usbserial-A9XBSOU6 9600

    解释

    • screen 是一个强大的命令行全屏窗口管理器,在这里我们用它来建立与串口设备的连接。
    • /dev/tty.usbserial-A9XBSOU6 是您选择的 USB 串口设备文件路径。
    • 9600 是波特率,必须与 FortiGate 设备的控制台配置匹配。

    5. 登录提示

    执行 screen 命令后,如果您的连接配置正确,您可能会看到一个空白的终端窗口。此时,请尝试按下 Enter 键。这通常会触发 FortiGate 设备的登录提示符显示出来。

    如果按下 Enter 键后仍然没有任何反应,请检查以下几点:

    • FortiGate 是否已开机? 确保 FortiGate 设备已通电并正在启动。
    • USB 连接是否牢固? 检查 USB Console 线缆的两端是否都已正确连接到您的 macOS 电脑和 FortiGate 设备的 Console 端口。
    • 是否选择了正确的 USB 串口设备? 再次运行 ls /dev/*usb* 命令,确认您使用的设备路径是正确的。
    • 波特率是否正确? 虽然 9600 是默认值,但如果之前被更改过,您可能需要尝试其他常见的波特率(例如 115200)。

    如果 FortiGate 正在启动,您可能会在终端窗口中看到设备的启动日志和系统信息,最终会显示登录提示符。

    注意事项

    • 确认连接:在执行 screen 命令之前,请务必检查 USB Console 线缆连接是否牢固,并确保 FortiGate 设备已正常开机。
    • 检查 USB 串口设备:仔细核对 ls /dev/*usb* 命令的输出,确保您选择了与连接 FortiGate 控制台的 USB 串口设备对应的正确 /dev/tty.usbserial/dev/cu.usbserial 设备路径。
    • 驱动程序:对于大多数现代 macOS 版本和常见的 USB Console 线缆,通常不需要手动安装驱动程序。macOS 会自动识别并配置。但如果遇到问题,请查阅您的 USB Console 线缆的说明文档。
  • 使用 Immich CLI 上传照片和视频

    要求

    在使用 Immich CLI 之前,请确保您的环境满足以下条件:

    • Node.js 20 或更高版本
    • npm(Node.js 包管理器)

    安装 Immich CLI

    全局安装

    使用 npm 进行全局安装 Immich CLI:

    npm i -g @immich/cli

    卸载旧版本

    如果您之前安装过旧版 CLI,建议先卸载以避免冲突:

    npm uninstall -g immich

    快速入门

    在使用 Immich CLI 之前,您需要先进行身份验证,并连接到您的 Immich 服务器。

    1. 认证登录

    您需要使用 API 密钥向 Immich 服务器进行身份验证。
    执行以下命令,将 [服务器地址][API 密钥] 替换为实际值:

    immich login [服务器地址] [API 密钥]

    示例:

    immich login http://192.168.1.216:2283/api HFEJ38DNSDUEG

    认证成功后:

    • CLI 会自动将您的凭据存储在 auth.yml 配置文件中。
    • 默认情况下,该文件位于 ~/.config/ 目录下。
    • 如果需要自定义存储目录,可以使用 -d 选项或 IMMICH_CONFIG_DIR 环境变量。

    安全提示:

    • 为确保账户安全,在使用完 CLI 后,建议执行 immich logout 注销,或手动删除 auth.yml 文件。

    2. 上传文件到 Immich 服务器

    上传单个或多个文件

    如果要上传单个文件或多个文件,可以直接指定文件路径:

    immich upload file1.jpg file2.jpg

    上传整个目录(默认不包含子文件夹)

    如果要上传目录中的所有文件(不包括子目录),可执行:

    immich upload directory/

    上传包含子文件夹的目录

    如果目录中包含多个子文件夹,并希望上传所有内容,请使用 --recursive 选项:

    immich upload --recursive directory/

    3. 预览上传内容

    如果不确定哪些文件会被上传,或者希望在执行前进行确认,可以使用 --dry-run 选项进行模拟运行:

    immich upload --dry-run --recursive directory/

    此命令不会实际上传文件,只会显示哪些文件将被上传。

    4. 提高上传性能

    跳过哈希计算

    默认情况下,Immich 在上传文件前会计算哈希值,以避免重复上传。
    如果您确定文件是唯一的,并希望加快上传速度,可以使用 --skip-hash 选项跳过哈希计算:

    immich upload --skip-hash --recursive directory/

    注意

    • Immich 服务器仍会进行哈希处理以执行重复数据删除,因此这个选项仅影响客户端性能。
    • 如果您的带宽充足,跳过哈希计算可以加快上传速度。

    5. 自动管理相册

    Immich CLI 支持自动创建相册,并根据文件夹名称或自定义名称进行管理。

    根据文件夹名称自动创建相册

    使用 --album 选项,Immich 会根据文件夹名称自动创建相册,并将对应文件上传到相册中:

    immich upload --album --recursive directory/

    上传文件到指定相册

    如果希望将所有文件上传到一个特定相册,可以使用 --album-name 选项:

    immich upload --album-name "My Summer Holiday" --recursive directory/

    6. 过滤上传文件

    有时,您可能需要跳过某些文件或目录,Immich 提供了 --ignore 选项来实现文件过滤。

    跳过特定文件或文件夹

    例如,如果您想跳过 Raw 文件夹下的所有内容,可以执行:

    immich upload --ignore **/Raw/** --recursive directory/

    排除多个文件类型

    可以使用多个 --ignore 规则,匹配不同的文件类型,例如排除 .tif 文件:

    immich upload --ignore **/Raw/** **/*.tif --recursive directory/

    7. 包含隐藏文件

    默认情况下,Immich 不会上传隐藏文件(文件名以 . 开头)。
    如果希望上传隐藏文件,可以使用 --include-hidden 选项:

    immich upload --include-hidden --recursive directory/

    获取 API 密钥

    使用 Immich CLI 之前,您需要一个 API 密钥,该密钥可以在 Web 界面的 用户设置面板 中获取。

    获取 API 密钥的步骤:

    1. 进入 Immich Web 管理界面
    2. 用户设置 页面中找到 API Key 选项
    3. 生成新的 API 密钥并复制,用于 CLI 登录