本文目录导读:

是的,可以通过脚本自动加密敏感文件夹,具体实现方式取决于你的操作系统和需求,以下是几种常见的方法:
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 }
安全建议
- 密钥管理:不要在脚本中硬编码密码,使用环境变量或密钥管理服务
- 日志记录:记录加密操作日志以便审计
- 备份恢复:确保有解密密钥的备份,避免数据永久丢失
- 权限控制:限制脚本的执行权限,只允许授权用户运行
- 加密验证:定期验证加密文件的完整性
示例:完整的 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),并妥善保管加密密钥/密码。