欢迎访问陈同学博客原文
本文主要内容拷贝于这篇文章 备份Linux系统数据到坚果云,自己做了些拓展,感谢作者。
本文分享两个博客相关小技巧,一是自动备份Linux上博客数据到坚果云和本机,二是搭建一个图片服务器来存储博客用到的图片。
云服务器甩卖时屯了几年低配机,博客数据每天备份在磁盘并定期下载到本地,可这操作是又慢又麻烦。
下面介绍利用坚果云支持 WebDAV 特性完成备份操作。
准备工作
所需材料
- 坚果云账户一个,免费版完全够用
- 服务器一台(下面命令以CentOS 7 为例)
- 坚果云 PC 客户端
坚果云配置
在 账户信息 -> 安全选项 -> 第三方应用 添加一个应用,这里创建一个 blog 应用。然后在坚果云创建一个任意名称的文件夹,我创建为 backup。
命令行手工备份
先手工操作进行演示,利用 cadaver 工具进行来操作,先安装 cadaver。
yum install cadaver
创建 hello.txt ,待会用命令行传递到坚果云。
echo hello >> hello.txt
# 连接坚果云
cadaver https://dav.jianguoyun.com/dav/
根据提示输入 坚果云账户 和刚才创建的 blog应用的密码,进入交互模式。
Authentication required for nutstore on server `dav.jianguoyun.com':
Username: [email protected]
Password:
dav:/dav/>
输入help,可看到所支持的命令。
进入坚果云 backup 目录,将 hello.txt 上传到坚果云。
dav:/dav/> cd backup
dav:/dav/backup/> put hello.txt
Uploading hello.txt to `/dav/backup/hello.txt':
Progress: [=============================>] 100.0% of 6 bytes succeeded.
PC上的坚果云客户端立马会把文件同步到本地,几秒钟本机就会收到通知。
脚本自动备份
手工备份自然不行,这里演示自动备份。
首先,在当前用户的 home 目录创建 .netrc 文件,内容如下:
machine dav.jianguoyun.com
login [email protected] # 坚果云账户
password xxxxxx # blog 应用的密码
此时,再执行 cadaver https://dav.jianguoyun.com/dav/
命令就不用输入账户密码。
创建一个脚本,随意命名为 davbak ,其中使用cadaver支持的命令即可(可先用命令行测试)。
put word.txt
bye
执行下面命令以执行 davbak 脚本,操作的目录为 backup。
[root@centos ~]# cadaver https://dav.jianguoyun.com/dav/backup/ < davbak
dav:/dav/backup/> put word.txt
Uploading word.txt to `/dav/backup/word.txt': succeeded.
dav:/dav/backup/> bye
Connection to `dav.jianguoyun.com' closed.
至此,可以跑个cron任务,每天备份数据到某个目录,然后再定期自动执行脚本将文件上传到坚果云。
服务器同步盘
更进一步,进行实时备份,坚果云PC客户端可以做同步盘,实时将数据备份到坚果云,同理,Linux服务器也可以做到。实现 Linux服务 -> 坚果云 -> 本地PC 三者实时同步,任何操作都会同步到三个地方。
先安装 davfs2。
yum install -y davfs2
将 /etc/davfs2/davfs2.conf 中的 ignore_dav_header 0 改为 ignore_dav_header 1,否则下面的挂载操作会报:mount.davfs: mounting failed; the server does not support WebDAV.
创建目录 /mnt/dav,然后将坚果云的 /backup 目录挂载到 /mnt/dav。
mount.davfs https://dav.jianguoyun.com/dav/backup /mnt/dav
输入坚果云账户和应用密码即可,如果不想输入账户密码,可在 /etc/davfs2/secrets 的最后面加一行:
https://dav.jianguoyun.com/dav/backup 坚果云账户 应用密码
此时,服务器、坚果云、本机三者的数据就都同步了。
博客数据只需每晚自动打包并移动到 /mnt/dav 目录,就会自动备份。此时,博客数据在服务器、坚果云都有备份。
如果需要umount,可执行:
umount /mnt/dav
图片服务器
写作时喜欢在本机用Typora,插入图片时不是很方便。利用坚果云的WebDAV服务,图片直接保存在本机同步盘,然后自动上传到坚果云,再自动同步到服务器。还可以随时编辑图片,自动更新。
然后在服务器上使用 nginx 代理一下,就可以在markdown中插入图片的URL了。
server {
listen 80;
server_name example.com;
location / {
expires 10d;
root /mnt/dav;
}
}
最后,安利下坚果云,做同步盘用了几年,非常好用。免费版上传流量1G/月,下载流量3G/月,完全够用。
拓展阅读
WebDAV 与 davfs2
WebDAV是什么?网盘的WebDAV有什么用?
How to mount WebDAV share
WebDAV 全称 Web-based Distributed Authoring and Versioning,是一种基于HTTP的通讯协议,翻译为:基于Web的分布式编写和版本控制协议。通过WebDAV 协议,用户可以用自己的账户操作远程服务器上的资源,这样操作资源和在PC、移动端操作资源是一样的,都是该用户进行操作。
davfs2 全称 WebDAV Linux File System,它可以完全集成在类Unix系统中作为一个工具存在。通过它可以将 WebDAV Server上的资源直接与本机目录挂载到一起,使得操作本机资源就和操作WebDAV服务上的资源一样。
.netrc
The .netrc file
.netrc 是一个位于home目录的文本文件,包含远程用户的登录和初始化信息,可以被自动登录程序使用。
下面是例子,machine 是远程机器名,login 是远程用户名,password 是密码。
machine dav.jianguoyun.com
login [email protected]
password xxxxxx
欢迎关注陈同学的公众号,一起学习,一起成长