借助davfs挂载Yandex Disk 网盘用于数据备份

借助davfs挂载Yandex Disk 网盘用于数据备份

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

过程中会提示输入用户名密码
mount_yandex_disk.png
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%的空间。
mount_successful.png
二、数据备份
直接拿出以前给出过的备份脚本,小改一下就行了

#!/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

如图所示已经备份成功了
backup_successful.png
三、总结
各家网盘都想通过接口来控制用户,现在都不想搞Webdav了,也只好退而求其次,使用官方客户端了。

分享到:

发表评论

昵称

沙发空缺中,还不快抢~