本篇介绍一下如何通过 WebDAV 备份服务器文件,可以用来备份服务器数据库、配置文件,日志等等

安装 cadaver

ubuntu
1
apt install cadaver
centos
1
yum install cadaver

使用 cadaver

这里我们使用坚果云的 WebDAV 服务,以此为例,其他都 WebDAV 服务操作也相同

登录

1
2
3
4
5
cadaver   https://dav.jianguoyun.com/dav/
Username: ********
Password: ********

dav:/dav/> ls

这里通过 ls 命令来检查下是不是真的登录上去了,如果和你的文件路径一样没有报错的话就代表成功登录了,

这里如果你想直接登录到某个目录,那么直接在 https://dav.jianguoyun.com/dav/ 后面追加路径就好啦。

上传,下载

成功登录后,使用 get put 两个命令即可下载、上传文件

退出

使用 bye 命令就可以退出 cadaver

配置 cadaver 非交互式命令

对于这种交互式命令其实很不方便,我们可以自己写一个 shell 来实现非交互式命令。

配置密码

在账户根目录添加文件 .netrc,如下:

.netrc
1
2
3
machine   dav.jianguoyun.com
login ********
password ********

预先写好 cadaver 的指令

例如我想上传 MyDB.sql.gz 这个文件,就可以这样写,如下:

cadaver.txt
1
2
put /home/ubuntu/Backup/MyDB.sql.gz
bye

非交互式命令

1
cadaver https://dav.jianguoyun.com/dav/backup/  < cadaver.txt

数据库备份配置

这里以 MySql 为例,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 获取当前时间
time=$(date "+%Y%m%d_%H%M%S")

# 文件名
file=/home/ubuntu/Backup/MyDB_$time.sql.gz

# 备份数据库
mysqldump -uroot -p123456 MyDB | gzip > $file

# cadaver 命令
davCMD=put' '$file'\n'bye

# cadaver 命令 写入文件
echo $davCMD > cadaver.txt

# 非交互式命令
cadaver https://dav.jianguoyun.com/dav/Backup < cadaver.txt

# 删除本地备份文件
rm $file