很好,这两个问题其实是 Linux 环境变量 + Bash 脚本变量 的基础知识。我给你结合你刚才的 restic 例子解释清楚。
一、RESTIC_PASSWORD 环境变量
RESTIC_PASSWORD 是 Shell 环境变量。
例如你之前执行:
export RESTIC_PASSWORD=123456
这个变量只在 当前 shell 会话 有效。
1 查看变量
查看某个变量:
echo $RESTIC_PASSWORD
或者:
printenv RESTIC_PASSWORD
例如:
echo $RESTIC_PASSWORD
输出:
123456
2 查看所有环境变量
env
或者:
printenv
会看到很多变量,例如:
HOME=/home/ding
PATH=/usr/bin
RESTIC_PASSWORD=123456
3 修改变量
重新 export 即可:
export RESTIC_PASSWORD=abc123
再查看:
echo $RESTIC_PASSWORD
输出:
abc123
4 删除变量
使用:
unset RESTIC_PASSWORD
验证:
echo $RESTIC_PASSWORD
输出为空:
(blank)
5 永久变量
如果写在:
~/.bashrc
例如:
export RESTIC_PASSWORD=123456
重新登录 shell 后也会存在。
但 不建议这样存密码。
二、RESTIC_PASSWORD_FILE(推荐)
你现在应该使用:
export RESTIC_PASSWORD_FILE="/root/.restic_pass"
文件内容:
StrongPassword123
权限:
chmod 600 /root/.restic_pass
这样更安全。
三、RESTIC_PASSWORD 和 RESTIC_PASSWORD_FILE 优先级
优先级:
RESTIC_PASSWORD
> RESTIC_PASSWORD_FILE
> 手动输入
例如:
如果两个都存在:
RESTIC_PASSWORD=abc
RESTIC_PASSWORD_FILE=/root/.restic_pass
Restic 只会用 RESTIC_PASSWORD。
四、脚本中的 $DIR 变量
你问得很对。
在这个脚本:
CONFIG="/opt/backup/apps.conf"
while read DIR
do
restic backup "$DIR"
done < "$CONFIG"
这里:
$DIR
就是:
apps.conf 每一行的路径
五、CONFIG 文件示例
/opt/backup/apps.conf
内容:
/opt/1panel/apps/trilium/trilium/data
/opt/1panel/apps/vaultwarden/data
/etc/nginx
/home
六、脚本执行过程
脚本会这样运行:
第一次:
DIR=/opt/1panel/apps/trilium/trilium/data
restic backup /opt/1panel/apps/trilium/trilium/data
第二次:
DIR=/opt/1panel/apps/vaultwarden/data
restic backup /opt/1panel/apps/vaultwarden/data
第三次:
DIR=/etc/nginx
第四次:
DIR=/home
七、完整执行流程
apps.conf
│
│ 读取每一行
↓
DIR变量
│
↓
restic backup DIR
八、为什么用这种方式
好处:
只需要修改:
apps.conf
就可以增加备份目录。
例如新增:
/opt/docker
不用改脚本。
九、脚本更安全写法(推荐)
可以加一个检查:
while read DIR
do
if [ -d "$DIR" ]; then
restic backup "$DIR"
fi
done < "$CONFIG"
避免目录不存在导致错误。
十、你未来服务器备份结构
你的服务器最终可以变成:
/opt/backup
├── apps.conf
├── backup.sh
└── logs
apps.conf:
/opt/1panel/apps/trilium/trilium/data
/opt/1panel/apps/vaultwarden/data
/etc/nginx
执行:
restic backup
就会自动备份全部。
💡最后给你一个 非常实用的小技巧(很多人不知道):
Restic 可以显示 哪些文件变化了:
restic diff snapshotID1 snapshotID2
例如:
restic diff latest latest~1
会列出:
新增文件
修改文件
删除文件
这在排查 服务器被误删文件 时非常有用。
正文完