本地单文件上传脚本。命名uf

这是在本机上做的測试,利用bpcs_uploader脚本实现,仅仅是进行简单的封装。自己主动完好云端文件路径。

技术要点:使用dirname获取文件所在文件夹。使用pwd获取文件完整路径,并作为云端文件路径。

#!/bin/bash
cur_dir=$(cd "$(dirname "$1")"; pwd)
name=$(basename "$1")
/home/grm/bin/bpcs_uploader/bpcs_uploader.php upload $1 AWIN$cur_dir/$name

本地文件夹上传脚本,命名ud

bpcs_uploader脚本仅仅能实现单个文件上传,用此脚本能够实现文件夹批量上传。
技术要点:通过find命令输出文件夹下全部文件,用xargs
-t -n1
实现单个输出,从而能够遍历文件夹下全部文件。并作为參数逐次赋予脚本uf。通过不断调用脚本uf实现批量上传。

#!/bin/bash
find $1 -name '*.*' |xargs -t -n1 /home/grm/bin/uf

server数据库每日备份脚本,命名backupday.sh(改自鸟哥的linux私房菜)

技术要点:基本都是常规操作,注意find命令-mtime參数的使用

#!/bin/bash
# =========================================================
# 请输入,你想让备份数据放置到那个独立的文件夹去
basedir=/backup/daily/ # =========================================================
PATH=/bin:/usr/bin:/sbin:/usr/sbin; export PATH
export LANG=C
basefile1=$basedir/mysql.$(date +%Y-%m-%d).tar.bz2
basefile2=$basedir/cgi-bin.$(date +%Y-%m-%d).tar.bz2
[ ! -d "$basedir" ] && mkdir $basedir # 1. MysQL (数据库文件夹在 /var/lib/mysql)
cd /var/lib
tar -jpc -f $basefile1 mysql # 2. 定期删除旧备份
DAYS=30
find $basedir -name "mysql*" -type f -mtime +$DAYS -exec rm {} \;

代码及其它配置每周备份脚本,命名为backupweek.sh

#!/bin/bash
# ====================================================================
# 使用者參数输入位置:
# basedir=你用来储存此脚本所估计备份的数据之文件夹(请独立文件系统)
basedir=/backup/weekly # ====================================================================
# 底下请不要改动了。用默认值就可以! PATH=/bin:/usr/bin:/sbin:/usr/sbin; export PATH
export LANG=C D=$(date +"%Y-%m-%d") # 配置要备份的服务的配置档,以及备份的文件夹
postfixd=$basedir/postfix
vsftpd=$basedir/vsftp
sshd=$basedir/ssh
wwwd=$basedir/www
others=$basedir/others
userinfod=$basedir/userinfo
# 推断文件夹是否存在。若不存在则予以创建。
for dirs in $postfixd $vsftpd $sshd $wwwd $others $userinfod
do
[ ! -d "$dirs" ] && mkdir -p $dirs
done # 1. 将系统基本的服务之配置档分别备份下来,同一时候也备份 /etc 全部。 cd /etc/
tar -jpc -f $vsftpd/vsftpd.$D.tar.bz2 vsftpd
cd /etc/
tar -jpc -f $sshd/sshd.$D.tar.bz2 sshd ssh
cd /etc/
tar -jpc -f $wwwd/httpd.$D.tar.bz2 httpd
cd /var/www
tar -jpc -f $wwwd/html.$D.tar.bz2 html
cd /
tar -jpc -f $others/etc.$D.tar.bz2 etc # 2. 关於使用者參数方面
cp -a /etc/{passwd,shadow,group} $userinfod
cd /var/spool
tar -jpc -f $userinfod/mail.$D.tar.bz2 mail
cd /
tar -jpc -f $userinfod/home.$D.tar.bz2 home
cd /var/spool
tar -jpc -f $userinfod/cron.$D.tar.bz2 cron at # 3. 定期删除旧备份
DAYS=30
find $vsftpd -name "vsftpd*" -type f -mtime +$DAYS -exec rm {} \;
find $sshd -name "sshd*" -type f -mtime +$DAYS -exec rm {} \;
find $wwwd -name "ht*" -type f -mtime +$DAYS -exec rm {} \;
find $others -name "etc*" -type f -mtime +$DAYS -exec rm {} \;
find $userinfod -name "cron*" -type f -mtime +$DAYS -exec rm {} \;
find $userinfod -name "home*" -type f -mtime +$DAYS -exec rm {} \;
find $userinfod -name "mail*" -type f -mtime +$DAYS -exec rm {} \;

自己主动上传脚本auto_upload_daily.sh

当中upload.sh的代码与本地脚本uf同样。简言之。脚本uf是云备份的基础。

#!/bin/bash
LOCAL_DATA=/backup/daily
MYSQL_BACKUP=mysql.$(date +"%Y-%m-%d").tar.bz2 upload.sh $LOCAL_DATA/$MYSQL_BACKUP

自己主动上传脚本auto_upload_weekly.sh

#!/bin/bash
LOCAL_DATA=/backup/weekly
D=$(date +"%Y-%m-%d") HTTP=www/httpd.$D.tar.bz2
HTML=www/html.$D.tar.bz2
ETC=others/etc.$D.tar.bz2
HOM=userinfo/home.$D.tar.bz2
MAIL=userinfo/mail.$D.tar.bz2
PASSWD=userinfo/passwd.$D.tar.bz2
SHADOW=userinfo/shadow.$D.tar.bz2
SSHD=ssh/sshd.$D.tar.bz2
VSFTPD=vsftpd/vsftpd.$D.tar.bz2
CRONA=userinfo/cron.$D.tar.bz2 upload.sh $LOCAL_DATA/$HTTP
upload.sh $LOCAL_DATA/$HTML
upload.sh $LOCAL_DATA/$ETC
upload.sh $LOCAL_DATA/$HOM
upload.sh $LOCAL_DATA/$MAIL
upload.sh $LOCAL_DATA/$PASSWD
upload.sh $LOCAL_DATA/$SHADOW
upload.sh $LOCAL_DATA/$CRONA
upload.sh $LOCAL_DATA/$SSHD
upload.sh $LOCAL_DATA/$VSFTPD

最后,再启动定时任务

为防止网络出现故障导致上传失败,反复了3次上传操作

# crontab -l
01 1 * * * /bin/backupday.sh 2>>/backup/errors.log
20 1 * * 0 /bin/backupwk.sh 2>>/backup/errors.log
01 2 * * * /bin/auto_upload_daily.sh 2>>/backup/errors.log
01 4 * * * /bin/auto_upload_daily.sh 2>>/backup/errors.log
01 6 * * * /bin/auto_upload_daily.sh 2>>/backup/errors.log
20 2 * * 0 /bin/auto_upload_weekly.sh 2>>/backup/errors.log
20 4 * * 0 /bin/auto_upload_weekly.sh 2>>/backup/errors.log
20 6 * * 0 /bin/auto_upload_weekly.sh 2>>/backup/errors.log

linuxserver本地和百度云备份脚本小试的更多相关文章

  1. 利用百度云免费备份SQL数据库

    我们开发了一个会员管理系统,随着使用的人越来越多,异地备份数据库就显得十分重要,万一硬盘出问题了怎么办呢.所以就着手做这个工作. 首先呢,找到了几个专门用来提供备份数据库的网站,一年好几百,好贵.放弃 ...

  2. 黄聪:VPS实现自动定时备份网站数据以及Mysql数据库到百度云同步盘

    建站多了,备份成了头疼的问题,因为你不知道你的VPS什么时候会宕机或者服务商跑路,一旦网站数据丢失,那么相当于前功尽弃了,所以自己研究出了一套自动备份的方法. 需要的东西: 1.一个VPS(虚拟空间没 ...

  3. 终于可以从百度云上BOS读取数据到本地了

    终于可以从百度云上BOS读取数据到本地了

  4. 06_Linux基础-NGINX和浏览器、网页的关系-云服务器ssh登陆-安装NGINX-上传网页-压缩命令-xz-gzip-bzip2-zip-tar-配置NGINX服务器支持下载功能-备份脚本

    06_Linux基础-NGINX和浏览器.网页的关系-云服务器ssh登陆-安装NGINX-上传网页-压缩命令-xz-gzip-bzip2-zip-tar-配置NGINX服务器支持下载功能-备份脚本 一 ...

  5. liunx文件定期本地备份、异地备份、删除备份脚本

    导航 一.背景二.依赖功能介绍三.本地备份脚本四.异地备份脚本五.定期删除备份六.github脚本地址 - - - - - - - - - - 分割线 - - - - - - - - - - 一.背景 ...

  6. 群福利:百度云管家-本地SVIP

    效果 如果不想登录破解版的百度云(防止泄密)==>复制AppSettingApp.dat和users文件夹,这样你就可以免登录了 最稳定版本:https://yunpan.cn/cBTQc9Iu ...

  7. 百度云管家-V4.6.1-单文件版绿色版

    转载说明 本篇文章可能已经更新,最新文章请转:http://www.sollyu.com/baidu-is-clouds-butler-v4-6-1-single-file-green-edition ...

  8. 我想要个pc和手机共有的客户端,就像百度云(iBarn网盘好用)

    https://github.com/zhimengzhe/iBarn iBarn网盘是一个基于PHP开发的先进的云存储系统,提供文件的网络备份,同步和分享服务:支持断点续传,秒传等功能:可选择文件下 ...

  9. Aria2 - OS X 下载百度云资源神器

    官网介绍: (Aria2 is a light weight multi-protocol & multi-source command-line download utility. It s ...

随机推荐

  1. tensorflow入门指南

    TensorFlow是Google公司2015年11月开源的第二代深度学习框架,是第一代框架DistBelief的改进版本. TensorFlow支持python和c/c++语言, 可以在cpu或gp ...

  2. 我对alias的重新认识:通过alias让rm更安全

    bash&shell系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html rm的悲剧总是发生在不经意之间,所以无论是在shell脚本中还 ...

  3. /proc文件系统(二):/proc/<pid>/stat

    0. 前言 /proc 文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间. 它以文件系统的方式为内核与进程提供通信的接口.用户和应用程序可以通过/proc得到系统的信息,并可以改变内核的某 ...

  4. Redis实现分布式锁的正确使用方式(java版本)

    Redis实现分布式锁的正确使用方式(java版本) 本文使用第三方开源组件Jedis实现Redis客户端,且只考虑Redis服务端单机部署的场景. 分布式锁一般有三种实现方式: 1. 数据库乐观锁: ...

  5. Java 雇员管理小练习(理解面向对象编程)

    在学习集合框架的时候,初学者很容易练习到学生管理系统.雇员管理体统等练习题.在学习集合框架之前,基本上Java基本语法都学完了,集合框架也从侧面的检验对前面学习的理解.下面用一个曾经做过的练习题,回顾 ...

  6. GBK与UTF-8的区别

    GBK的文字编码是双字节来表示的,即不论中.英文字符均使用双字节来表示,只不过为区分中文,将其最高位都定成1. 至于UTF-8编码则是用以解决国际上字符的一种多字节编码,它对英文使用8位(即一个字节) ...

  7. c++: Does the new operator for dynamic allocation check for memory safety?

    Quesion: My question arises from one of my c++ exercises (from Programming Abstraction in C++, 2012 ...

  8. Hybris IMPEX.

    1.Impex是基于java Model的一种面向对象的数据操作手段,因此写impex代码前需要理清java Model之间的依赖关系.   2.基本语法:mode type[modifier=val ...

  9. CSS之HTML meta viewport属性详解

    什么是Viewport 手机浏览器是把页面放在一个虚拟的“窗口”(viewport)中,通常这个虚拟的“窗口”(viewport)比屏幕宽,这样就不用把每个网页挤到很小的窗口中(这样会破坏没有针对手机 ...

  10. 【工具相关】web-HTML/CSS/JS Prettify的使用

    一,打开Sublime Text,代码如下面所示. 二,鼠标右键--->HTML/CSS/JS Prettify--->Prettify Code.代码如图所示,明显的代码变得整齐了.