脚本能自动加密敏感文件夹吗?

wen 实用脚本 2

本文目录导读:

脚本能自动加密敏感文件夹吗?

  1. Windows 环境
  2. macOS/Linux 环境
  3. 使用 VeraCrypt(跨平台)
  4. 自动化监控脚本(Windows)
  5. 安全建议
  6. 示例:完整的 Linux 自动化脚本

是的,可以通过脚本自动加密敏感文件夹,具体实现方式取决于你的操作系统和需求,以下是几种常见的方法:

Windows 环境

使用 PowerShell + EFS(加密文件系统)

# 加密指定文件夹
$folder = "C:\SensitiveData"
cipher /e /s:$folder
# 或使用 PowerShell 脚本
$path = "C:\SensitiveData"
$encrypted = Get-ChildItem -Path $path -Recurse | ForEach-Object {
    $_ | Add-Item -Encrypt
}

使用 7-Zip + AES-256

# 需要安装 7-Zip
$password = "YourStrongPassword123!"
$folder = "C:\SensitiveData"
$output = "C:\EncryptedArchive.7z"
& "C:\Program Files\7-Zip\7z.exe" a -t7z -p$password -mhe=on $output $folder

macOS/Linux 环境

使用 OpenSSL 加密文件夹(打包为 tar 后加密)

#!/bin/bash
# 加密文件夹
folder="/path/to/sensitive"
password="your_password"
# 打包并加密
tar czf - "$folder" | openssl enc -aes-256-cbc -salt -pass pass:"$password" -out encrypted.tar.gz.enc
# 解密
openssl enc -aes-256-cbc -d -pass pass:"$password" -in encrypted.tar.gz.enc | tar xzf -

使用 GPG 加密

# 加密
gpg --symmetric --cipher-algo AES256 --output encrypted.tar.gz.gpg -z 9 -c $(tar czf - /path/to/folder)
# 解密
gpg --decrypt encrypted.tar.gz.gpg | tar xzf -

使用 VeraCrypt(跨平台)

创建加密容器并自动挂载

# Python 脚本示例
import subprocess
import os
def encrypt_folder():
    # 创建加密容器(需提前创建好容器文件)
    veracrypt_path = "/usr/bin/veracrypt"
    container = "/path/to/container.tc"
    mount_point = "/mnt/encrypted"
    password = "your_password"
    # 挂载加密容器
    subprocess.run([
        veracrypt_path, 
        "-t", "--non-interactive",
        "-p", password,
        "--mount", container,
        "--fs-options", "uid=1000,gid=1000,umask=077"
    ])
    # 复制敏感文件到加密容器
    subprocess.run(["cp", "-r", "/path/to/sensitive", mount_point])
    # 卸载容器
    subprocess.run([veracrypt_path, "-d", mount_point])
encrypt_folder()

自动化监控脚本(Windows)

# 监控文件夹变化并自动加密
$watcher = New-Object System.IO.FileSystemWatcher
$watcher.Path = "C:\SensitiveData"
$watcher.NotifyFilter = [System.IO.NotifyFilters]::FileName -bor [System.IO.NotifyFilters]::LastWrite
$watcher.IncludeSubdirectories = $true
$watcher.EnableRaisingEvents = $true
$action = {
    $path = $Event.SourceEventArgs.FullPath
    $changeType = $Event.SourceEventArgs.ChangeType
    Write-Host "File $changeType: $path"
    # 自动加密新文件
    if ($changeType -eq 'Created' -or $changeType -eq 'Changed') {
        cipher /e "$path"
    }
}
Register-ObjectEvent $watcher "Created" -Action $action
Register-ObjectEvent $watcher "Changed" -Action $action
# 保持脚本运行
while ($true) { Start-Sleep -Seconds 1 }

安全建议

  1. 密钥管理:不要在脚本中硬编码密码,使用环境变量或密钥管理服务
  2. 日志记录:记录加密操作日志以便审计
  3. 备份恢复:确保有解密密钥的备份,避免数据永久丢失
  4. 权限控制:限制脚本的执行权限,只允许授权用户运行
  5. 加密验证:定期验证加密文件的完整性

示例:完整的 Linux 自动化脚本

#!/bin/bash
# auto_encrypt.sh - 自动化加密敏感文件夹
SENSITIVE_DIR="/home/user/sensitive"
BACKUP_DIR="/backup"
ENCRYPTED_FILE="sensitive_$(date +%Y%m%d).tar.gz.gpg"
# 从环境变量获取密码(更安全)
PASSWORD=${ENCRYPT_PASSWORD}
if [ -z "$PASSWORD" ]; then
    echo "Error: ENCRYPT_PASSWORD not set"
    exit 1
fi
# 打包并加密
cd /tmp
tar czf - "$SENSITIVE_DIR" 2>/dev/null | \
    gpg --batch --yes --symmetric --passphrase "$PASSWORD" \
    --cipher-algo AES256 -o "$BACKUP_DIR/$ENCRYPTED_FILE" 2>/dev/null
if [ $? -eq 0 ]; then
    echo "Folder encrypted successfully"
    # 可选:删除原文件夹
    # rm -rf "$SENSITIVE_DIR"
else
    echo "Encryption failed"
    exit 1
fi

选择哪种方法取决于你的具体需求:

  • Windows:推荐 EFS 或 7-Zip
  • macOS:推荐使用 Disk Utility 创建加密镜像
  • Linux:推荐 LUKS 或 GPG
  • 跨平台:推荐 VeraCrypt

记得根据安全要求选择合适的加密算法(建议使用 AES-256),并妥善保管加密密钥/密码。

抱歉,评论功能暂时关闭!