备份是个好习惯。然而如何上传备份一直让人烦恼。一般来说都是把备份放到网盘客户端的同步目录后让网盘客户端同步到网盘服务器,这样的话就浪费不少本地空间了。所以一般我都是用第三方脚本上传(参考《全自动定时备份VPS数据到Dropbox》),上传完就把本地备份删除。

如果网盘都能像NFS那样挂载,那多好啊?答案是可以的Webdav + Fuse + davfs。
国内外支持webdav的网盘有坚果云、Yandex Disk、Box.net、4shared、Dropbox(通过dropdav、收费)、Google Drive(通过 DAV-Pocket),这里以Yandex Disk为例。

一、Linux下挂载挂载 Yandex Disk。

1、安装 fues 和 davfs

  • yum install fuse davfs2 #CentOS/RHEL
  • apt-get install fuse davfs2 #Debian/Ubuntu
复制

2、挂载Yandex Disk

  • mkdir -m 755 /mnt/yandex
  • mount -t davfs https://webdav.yandex.com /mnt/yandex
复制

过程中会提示输入用户名密码
挂载 Yandex Disk挂载 Yandex Disk
3、检测挂载是否成功

  • [root@s8 ~]# df -h /mnt/yandex
  • Filesystem Size Used Avail Use% Mounted on
  • https://webdav.yandex.com 10G 9.4G 627M 94% /mnt/yandex
复制

我的已经用了94%的空间。
成功挂载 Yandex Disk成功挂载 Yandex Disk

二、数据备份

直接拿出以前给出过的备份脚本,小改一下就行了

  • #!/bin/bash
  • # Settings
  • YANDEX_DISK="/mnt/yandex" #网盘挂载路径
  • BACKUP_SRC="/home/wwwroot/website" #需要备份的文件夹,可以多个,请用空格分隔
  • BACKUP_DST="/backups" #备份到网盘里的什么路径下
  • MYSQL_SERVER="127.0.0.1" #连接本地MySQL
  • MYSQL_USER="root" #本地MySQL的用户
  • MYSQL_PASS="123456" #本地MySQL的密码
  • # 往下不要随意编辑
  • BACKUP_DST=$(echo "$YANDEX_DISK/$BACKUP_DST" | sed 's#//#/#')
  • NOW=$(date +"%Y.%m.%d")
  • DESTFILE="$BACKUP_DST/$NOW.tgz"
  • LAST=$(date -d "2 months ago" +"%Y.%m.%d") #这里的时间可以根据需要进行修改,如"3 months ago"
  • df -h | grep "$YANDEX_DISK"
  • if [ $? -ne 0 ]; then
  • echo "ERROR. Now exiting..."
  • exit 1
  • fi
  • # Create Directory
  • ls "$BACKUP_DST"
  • if [ $? -ne 0 ]; then
  • mkdir -p "$BACKUP_DST"
  • fi
  • # Backup files
  • ps -e | grep -c mysql
  • if [ $? -eq 0 ]; then
  • echo "Dumping databases..."
  • mysqldump -u $MYSQL_USER -h $MYSQL_SERVER -p $MYSQL_PASS --all-databases > "$BACKUP_DST/$NOW-Databases.sql" #这里的命令路径可以根据需要进行修改
  • else
  • echo "ERROR. Now exiting..."
  • exit 1
  • fi
  • ls > /dev/null
  • if [ $? -eq 0 ]; then
  • echo "Packing files..."
  • tar -czf "$DESTFILE" "$BACKUP_SRC" "$BACKUP_DST/$NOW-Databases.sql"
  • else
  • echo "ERROR. Now exiting..."
  • exit 1
  • fi
  • if [ $? -eq 0 ]; then
  • echo "Cleaning the backups..."
  • rm -f "$BACKUP_DST/$NOW-Databases.sql"
  • rm -f "$BACKUP_DST/$LAST.tgz"
  • else
  • echo "ERROR. Now exiting..."
  • exit 1
  • fi
复制

如图所示已经备份成功了
数据备份成功数据备份成功

三、总结

各家网盘都想通过接口来控制用户,现在都不想搞 Webdav 了,也只好退而求其次,使用官方客户端了。