陈同学
微服务
Accelerator
About
# 自动备份Linux上的博客数据到坚果云 > 本文主要内容拷贝于这篇文章 [备份Linux系统数据到坚果云](https://www.jianshu.com/p/c577ab52e252),自己做了些拓展,感谢作者。 本文分享两个博客相关小技巧,一是自动备份Linux上博客数据到坚果云和本机,二是搭建一个图片服务器来存储博客用到的图片。 云服务器甩卖时屯了几年低配机,博客数据每天备份在磁盘并定期下载到本地,可这操作是又慢又麻烦。 下面介绍利用坚果云支持 WebDAV 特性完成备份操作。 ##准备工作 **所需材料** * 坚果云账户一个,免费版完全够用 * 服务器一台(下面命令以CentOS 7 为例) * 坚果云 PC 客户端 **坚果云配置** 在 **账户信息 -> 安全选项 -> 第三方应用** 添加一个应用,这里创建一个 blog 应用。然后在坚果云创建一个任意名称的文件夹,我创建为 **backup**。 ![](https://blog-1256695615.cos.ap-shanghai.myqcloud.com/2019/01/30/51125b41e1c448749a448d535e70af01.png) ## 命令行手工备份 先手工操作进行演示,利用 **cadaver** 工具进行来操作,先安装 **cadaver**。 ```bash yum install cadaver ``` 创建 **hello.txt** ,待会用命令行传递到坚果云。 ```bash echo hello >> hello.txt # 连接坚果云 cadaver https://dav.jianguoyun.com/dav/ ``` 根据提示输入 **坚果云账户** 和刚才创建的 **blog应用的密码**,进入交互模式。 ``` Authentication required for nutstore on server `dav.jianguoyun.com': Username: xxx@gmail.com Password: dav:/dav/> ``` 输入help,可看到所支持的命令。 ![](https://blog-1256695615.cos.ap-shanghai.myqcloud.com/2019/01/30/c359686c73334e2bb95901033016f31b.png) 进入坚果云 **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上的坚果云客户端立马会把文件同步到本地,几秒钟本机就会收到通知。 ![](https://blog-1256695615.cos.ap-shanghai.myqcloud.com/2019/01/30/b6533f12e8874dbeafd6aba07920dd53.png) ## 脚本自动备份 手工备份自然不行,这里演示自动备份。 首先,在当前用户的 home 目录创建 [.netrc](https://wiki.christophchamp.com/index.php?title=.netrc) 文件,内容如下: ```bash machine dav.jianguoyun.com login xxx@gmail.com # 坚果云账户 password xxxxxx # blog 应用的密码 ``` 此时,再执行 `cadaver https://dav.jianguoyun.com/dav/` 命令就不用输入账户密码。 创建一个脚本,随意命名为 **davbak** ,其中使用cadaver支持的命令即可(可先用命令行测试)。 ```bash put word.txt bye ``` 执行下面命令以执行 **davbak** 脚本,操作的目录为 **backup**。 ```bash [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。 ```bash 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。 ```bash mount.davfs https://dav.jianguoyun.com/dav/backup /mnt/dav ``` 输入坚果云账户和应用密码即可,如果不想输入账户密码,可在 **/etc/davfs2/secrets** 的最后面加一行: ``` https://dav.jianguoyun.com/dav/backup 坚果云账户 应用密码 ``` 此时,服务器、坚果云、本机三者的数据就都同步了。 ![](https://blog-1256695615.cos.ap-shanghai.myqcloud.com/2019/01/31/467f280084ee47a484f21140ca3e26c0.png) 博客数据只需每晚自动打包并移动到 **/mnt/dav** 目录,就会自动备份。此时,博客数据在服务器、坚果云都有备份。 如果需要umount,可执行: ```bash umount /mnt/dav ``` ## 图片服务器 写作时喜欢在本机用Typora,插入图片时不是很方便。利用坚果云的WebDAV服务,图片直接保存在本机同步盘,然后自动上传到坚果云,再自动同步到服务器。还可以随时编辑图片,自动更新。 然后在服务器上使用 nginx 代理一下,就可以在markdown中插入图片的URL了。 ```nginx server { listen 80; server_name example.com; location / { expires 10d; root /mnt/dav; } } ``` 最后,安利下坚果云,做同步盘用了几年,非常好用。免费版上传流量1G/月,下载流量3G/月,完全够用。 ## 拓展阅读 ### WebDAV 与 davfs2 > [WebDAV是什么?网盘的WebDAV有什么用?](http://www.jianguoyun.com/s/content/webdav%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%9F%E7%BD%91%E7%9B%98%E7%9A%84webdav%E6%9C%89%E4%BB%80%E4%B9%88%E7%94%A8%EF%BC%9F/) > [How to mount WebDAV share](https://blog.sleeplessbeastie.eu/2017/09/04/how-to-mount-webdav-share/) [WebDAV](https://en.wikipedia.org/wiki/WebDAV) 全称 Web-based Distributed Authoring and Versioning,是一种基于HTTP的通讯协议,翻译为:**基于Web的分布式编写和版本控制协议**。通过WebDAV 协议,用户可以用自己的账户操作远程服务器上的资源,这样操作资源和在PC、移动端操作资源是一样的,都是该用户进行操作。 [davfs2](http://savannah.nongnu.org/projects/davfs2) 全称 WebDAV Linux File System,它可以完全集成在类Unix系统中作为一个工具存在。通过它可以将 WebDAV Server上的资源直接与本机目录挂载到一起,使得操作本机资源就和操作WebDAV服务上的资源一样。 ### .netrc > [The .netrc file](https://www.gnu.org/software/inetutils/manual/html_node/The-_002enetrc-file.html) **.netrc** 是一个位于home目录的文本文件,包含远程用户的登录和初始化信息,可以被自动登录程序使用。 下面是例子,**machine** 是远程机器名,**login** 是远程用户名,**password** 是密码。 ``` machine dav.jianguoyun.com login xxx@gmail.com password xxxxxx ```
本文由
cyj
创作,可自由转载、引用,但需署名作者且注明文章出处。
文章标题:
自动备份Linux上的博客数据到坚果云
文章链接:
https://chenyongjun.vip/articles/100
扫码或搜索 cyjrun 关注微信公众号, 结伴学习, 一起努力