zoukankan      html  css  js  c++  java
  • linuxserver本地和百度云备份脚本小试

    本地单文件上传脚本。命名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
  • 相关阅读:
    CDN是什么?
    CSS实现隐藏滚动条同时又可以滚动
    顶部固定 页面内容部分可以滚动
    H5对话框水平垂直居中
    移动端调试神器(eruda)
    JAVA_OA管理系统(三)番外篇:Myeclipse导入Spring源码包
    Spring Framework Reference Documentation手册官网下载地址
    Spring Framework Reference Documentation手册官网下载地址
    JAVA_OA(六):SpringMVC登陆实例
    JAVA_OA(五)(番外篇):SpringMVC乱码解决(post,get)
  • 原文地址:https://www.cnblogs.com/mqxnongmin/p/10510662.html
Copyright © 2011-2022 走看看