restic 有关变量

4次阅读
没有评论

很好,这两个问题其实是 Linux 环境变量 + Bash 脚本变量 的基础知识。我给你结合你刚才的 restic 例子解释清楚。


一、RESTIC_PASSWORD 环境变量

RESTIC_PASSWORDShell 环境变量

例如你之前执行:

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

会列出:

新增文件
修改文件
删除文件

这在排查 服务器被误删文件 时非常有用。

正文完
 0