使用gpg加密文件并备份

将服务器上重要文件加密并备份

安装gpg

1
2
3
4
5
6
7
# 安装gpg
sudo apt-get install gnupg
# 生成密钥
gpg --full-generate-key
# 选择RSA和4096位
# 输入您的姓名和电子邮件地址,这些信息将成为您的GPG密钥的标识符
# 输入一个安全的密码短语,它将用于保护您的私钥

导出私钥以及公钥

1
2
3
4
5
6
7
8
# 查看您的公钥
gpg --list-keys
# 查看您的私钥
gpg --list-secret-keys
# 导出公钥,--armor 选项将公钥导出为 ASCII 格式,方便地将复制到其他地方使用,key-id使用上面两个命令获取,一对公钥和私钥的key-id是一致的
gpg --export --armor <key-id> > public.key.asc
# 导出私钥
gpg --export-secret-keys --armor <key-id> > private.key.asc

导入私钥以及公钥

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 导入私钥
gpg --import [private_key_file]
# 导入公钥
gpg --import [public_key_file]

# 为防止每次使用都会询问,所以设置一下对公/私钥的信任
# 获取公钥ID
gpg --list-keys
gpg --edit-key <KEY-ID>
> trust
# 输入5
1 = I don't know or won't say
2 = I do NOT trust
3 = I trust marginally
4 = I trust fully
5 = I trust ultimately
m = back to the main menu

Your decision? > 5
> y

gpg加密以及解密

1
2
3
4
5
6
7
# 加密,生成文件名为filename.gpg
gpg -e -r recipient@example.com filename

# 加密,绝对路径
gpg --output /path/to/output/file.gpg --recipient <recipient> --encrypt /path/to/input/file
# 解密,绝对路径
gpg --output /path/to/output/file --decrypt /path/to/input/file.gpg

编写脚本

将下面文件保存成backup.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
# 打包log
tar -zcf /root/temp/log.tar.gz /log/
gpg --output /root/temp/valu.tar.gz.gpg --recipient recipient@example.com --encrypt /root/temp/log.tar.gz
mv /root/temp/log.tar.gz.gpg /root/temp/$(date +%Y-%m-%d_%H-%M-%S)_log.tar.gz.gpg

# 打包home
tar -zcf /root/temp/home.tar.gz /home/
gpg --output /root/temp/home.tar.gz.gpg --recipient recipient@example.com --encrypt /root/temp/home.tar.gz
mv /root/temp/home.tar.gz.gpg /root/temp/$(date +%Y-%m-%d_%H-%M-%S)_home.tar.gz.gpg

rm /root/temp/*.tar.gz
rclone copy /root/temp/ jap:data
rm /root/temp/*

使用crontab执行备份

crontab -e

1
33 3 * * 1 bash backup.sh

安装rclone

  1. 包管理器直接安装
1
2
sudo apt-get update
sudo apt-get install rclone
  1. 手动下载可执行文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 下载,国内使用第二个
curl -o rclone.zip https://downloads.rclone.org/rclone-current-linux-amd64.zip #速度可能很慢
# 高速
curl -o rclone.zip https://ghproxy.com/https://github.com/rclone/rclone/releases/download/v1.62.2/rclone-v1.62.2-linux-amd64.zip

unzip rclone.zip
cd rclone-*-linux-amd64

# 加入环境变量
sudo cp rclone /usr/bin/
sudo chown root:root /usr/bin/rclone
sudo chmod 755 /usr/bin/rclone

# 感觉不是很必须
sudo mkdir -p /usr/local/share/man/man1
sudo cp rclone.1 /usr/local/share/man/man1/
sudo mandb

# 清理多余文件
sudo rm rclone.zip
sudo rm -rf rclone-*-linux-amd64

参考: 安装rclone

1
2
3
rclone config
# 选择自己的方式,这里选择的是webdav。
# 参考https://rclone.org/install/

rclone常用命令

1
2
3
rclone copy /本地文件夹路径 远程webdav路径
# 例如下方,使用-P可以查看实时速度
rclone copy /home/user/photos remote:photos [-P]
1
2
3
4
5
6
7
8
9
10
11
12
13
rclone copy source:path dest:path:	# 将源路径中的文件复制到目标路径中。

rclone sync source:path dest:path: # 将源路径和目标路径中的文件进行同步。

rclone move source:path dest:path: # 将源路径中的文件移动到目标路径中。

rclone delete remote:path: # 删除远程路径中的文件。

rclone ls remote:path: # 列出远程路径中的文件。

rclone mkdir remote:path: # 在远程路径中创建一个新的目录。

rclone mount remote:path /local/mount/point:# 将远程路径挂载到本地文件系统中。

卸载rclone

1
2
3
sudo apt autoremove rclone
# 删除rclone的配置文件,用户名”替换为您的用户名
sudo rm -rf /home/用户名/.config/rclone/

参考:

rclone

crontab

infinicloud


使用gpg加密文件并备份
https://shyi.org/posts/50617/
作者
Shyi
发布于
2023年6月3日
更新于
2024年7月13日
许可协议