精华内容
下载资源
问答
  • Shell脚本备份文件

    2019-09-26 10:40:24
    使用crontab 定时备份文件 1. 编辑crontab规则 2. 编写shell脚本 cp -R "/data/www/code" "/home/backup/code-`date +%Y-%m-%d`.bak" cd /home/backup/# 删除5天以前的备份 rm -rf `find . -name '*.bak' -...

    使用crontab 定时备份文件

    1. 编辑crontab规则

    2. 编写shell脚本

    cp -R "/data/www/code" "/home/backup/code-`date +%Y-%m-%d`.bak"
    cd  /home/backup/
    # 删除5天以前的备份 rm -rf `find . -name '*.bak' -mtime +5`

     find -mtime +N/-N/N 的时间算法 参见:https://blog.csdn.net/yakoo5/article/details/17709561

    转载于:https://www.cnblogs.com/BluePegasus/p/10335393.html

    展开全文
  • 以下是shell自动备份用的: 主要功能: 1)将pathSrc目录中的文件拷贝到pathDst目录中去。  具体步骤:先查询源目录和目标目录中的文件,分别存在fileSrc和fileDst中。 -> 来两个循环,比较。不在fileDst的就...

    以下是shell自动备份用的:

    主要功能:

    1)将pathSrc目录中的文件拷贝到pathDst目录中去。

      具体步骤:先查询源目录和目标目录中的文件,分别存在fileSrc和fileDst中。 -> 来两个循环,比较。不在fileDst的就拷贝过去。再判断一下是否拷贝成功。

    2)将pathSrc中的文件保留180天。

      具体步骤:先查出源目录中大于180天的文件(就是那句find),然后删除。  

     

    #!/bin/bash
    
    v_time=`date "+%Y-%m-%d %H:%M:%S"`
    bakstr="[Start auto backup gitlab data:]"${v_time}
    logfile="/home/localgitlab/test/auto_back.txt"
    echo >> $logfile
    echo $bakstr >> $logfile
    
    pathSrc="/home/localgitlab/disk_new/backup"
    filesSrc=$(ls $pathSrc)
    
    pathDst="/media/localgitlab/a1df1b08-ae43-45ea-8067-994497738cb2/backups"
    filesDst=$(ls $pathDst)
    
    nSrcFileCount=0
    
    ### Backup file: The file that determines the original path is not in the target path, 
    ### and is not copied.
    for filename in $filesSrc
    do
        nSrcFileCount=$(( $nSrcFileCount + 1 ))
        need_copy="yes"
        for dstfile in $filesDst
        do
            if [ $filename == $dstfile ];then
                need_copy="no"
            fi
        done
    
        if [ $need_copy == 'yes' ];then    
            echo $filename " need backup" >> $logfile
            strCompletePath=${pathSrc}'/'${filename}
            cp $strCompletePath $pathDst
            if [ $? -eq 0 ]; then
                echo "copy file success" >> $logfile
            else
                echo "copy file fail" >> $logfile
            fi
        else
            echo $filename " not need backup" >> $logfile
        fi
    done
    
    echo "Src dir have file count:" $nSrcFileCount >> $logfile
    
    ### Keep only data within 180 days
    delSrc=$(find $pathSrc -type f -mtime +180)
    for delfilename in $delSrc
    do
        echo "Need delete file: " $delfilename >> $logfile
        rm -f $delfilename
        if [ $? -eq 0 ]; then
            echo "delete file success" >> $logfile
        else
            echo "delete file fail" >> $logfile
        fi
    done

     

    补充:

    1、有需要的话可以用crontab假如到自动运行中去。如果涉及到源目录和目标目录访问权限的问题,可能需要用root加入crontab。

    1)crontab -l:列出所有自动运行的脚本

    2)crontab -e:将要执行的脚本假如到自动运行中去

     

    2、关于find命令:

    find pathname -options [-print -exec -ok] 
    pathname    find命令所查找的目录路径。 
    -print      find命令将匹配的文件输出到标准输出。 
    -exec       find命令对匹配的文件执行该参数所给出的shell命令。 
    -ok 和- exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行. 
    1. -name   按照文件名查找文件 
    2. -perm   按照文件权限来查找文件 
    3. -mtime -n +n   按照文件的更改时间来查找文件,-n表示文件更改时间距现在n天以内,+n表示文件更改时间距现在n天以前。 
    4. -newer file1  查找更改时间比文件file1新的文件。 
    5. -type   查找某一类型的文件 
      b - 块设备文件。 
      d - 目录。 
      c - 字符设备文件。 
      p - 管道文件。 
      l - 符号链接文件。 
      f - 普通文件。 
    6. 使用-size选项 ,按文件的大小查找文件的

     

    转载于:https://www.cnblogs.com/xcywt/p/10574059.html

    展开全文
  • 这是备份文件脚本的代码,要备份文件夹lab03,将其备份到projectbackups/2019-03-12文件夹中。[img=https://img-bbs.csdn.net/upload/201903/13/1552465886_191277.png][/img][img=...
  • 整套需求,需要备份代码机代码并同步到异地备份服务器,最后备份服务器需要判断备份文件是否正常,代码机的数据是否和备份机的数据正常。 实现思路:1.首先实现备份数据。2.将数据同步到异地备份服务器。3.文件校验...

    整套需求,需要备份代码机代码并同步到异地备份服务器,最后备份服务器需要判断备份文件是否正常,代码机的数据是否和备份机的数据正常。

    实现思路:
    1.首先实现备份数据。
    2.将数据同步到异地备份服务器。
    3.文件校验,可以使用md5来实现(将原数据的md5值同步到异地然后进行校验)。

    文件备份脚本如下:
    执行脚本之前需要注意几个事项,
    1.异地备份服务器和本地代码机需要安装rsync服务
    2.异地备份服务器需要配置rsync服务,一个备份数据存放目录,一个是日志文件存放目录(日志内有md5值,需要做校验用。)
    3.rsync的密码文件权限必须为600,要不会同步失败

    #!/bin/bash
    #author: wys
    #date: 20190410
    #common: 备份服务器代码文件
    ########################################
    ##备份命令: sh 脚本名称+文件路径+文件名称###
    ########################################
    set -e
    source /etc/bashrc
    #获取本机ip地址(云服务器需要手动配置IP地址,需要根据实际环境确认IP是否正确)
    #IP=$(/sbin/ip addr |grep inet |grep -v inet6 |grep em1|awk '{print $2}' |awk -F "/" '{print $1}')
    IP=x.x.x.x
    work_dir=$1
    file_name=$2
    backup_dir=备份路径
    date=$(date "+%Y%m%d")  ##获取系统时间
    
    #判断work_dir和file_name是否为空:
    if [[ ! -n "$work_dir" || ! -n "$file_name" ]] ;then
      echo "ERROR:work_dir或file_name参数为空"
      echo "commd:sh file_backup.sh work_dir file_name;两个参数都为必填参数)"
      exit
    else
    
    #Log存放路径
    LogFile=$backup_dir/log/${IP}_${file_name}_${date}.log
    
    if [ ! -d '$backup_dir/log' ]; then
        mkdir -p $backup_dir/log
    fi
    #新建日志文件
    touch $LogFile
    
    #追加日志到日志文件
    echo "start backup, start at  $(date +"%Y-%m-%d %H:%M:%S")" > $LogFile
    echo "-------------------Start!---------------------------------" >> $LogFile
    
    if [ ! -d '$backup_dir/$file_name' ]; then
        mkdir -p $backup_dir/$file_name
    fi
    
    #备份文件
    echo "备份相关文件 $file_name" >> $LogFile
    echo "tar czf ${backup_dir}/${file_name}/${file_name}_${date}.tar.gz --exclude=不需要备份的文件可以使用此参数过滤掉 -C $work_dir $file_name" >> $LogFile
    tar czf ${backup_dir}/${file_name}/${file_name}_${date}.tar.gz -C $work_dir $file_name
    if [ $? -eq 0 ];then  ##判断命令是否执行即数据是否备份成功
      echo "Backup_Status="SUCCESS"" >> $LogFile
    else
      echo "Backup_Status="FAILED"" >> $LogFile
    fi
    ##查看备份文件大小
    Bar_Size=`du -sh $backup_dir/$file_name/${file_name}_${date}.tar.gz |awk '{print $1}'`
    ##获取备份文件的md5值
    MD5=`/usr/bin/md5sum $backup_dir/$file_name/${file_name}_${date}.tar.gz | awk '{print $1}'`
    echo "备份文件路径:$backup_dir/$file_name/${file_name}_${date}.tar.gz" >> $LogFile
    echo "文件大小:${Bar_Size}">> $LogFile
    echo "MD5: $MD5" >> $LogFile
    echo "-----------------------------------------------------" >> $LogFile
    
    ###备份文件需要定时清理,要不会导致磁盘爆满。
    ###备份数据保留5天(保留时间可根据需求自行修改)
    find $backup_dir/$file_name/ -mtime +5 -name "*.tar.gz" -exec rm -rf {} \;
    ###日志文件保存3天(保留时间可根据需求自行修改)
    find $backup_dir/log -mtime +3 -name "*.log" -exec rm -rf {} \;
    
    #备份完成追加日志到日志文件
        echo "-----------------------------------Complete!----------------------------------------" >> $LogFile
        echo "backup end, end at  $(date +"%Y-%m-%d %H:%M:%S")" >>  $LogFile
    
    ##同步备份文件到备份服务器
    echo "start rsync,$(date +"%Y-%m-%d %H:%M:%S")" >> $LogFile
    rsync -rauvt --progress --password-file=/data/scripts/backup.pass --bwlimit=500 $backup_dir/$file_name/${file_name}_${date}.tar.gz backup@异地备份服务器的ip::backup/$IP/$file_name/
    if [ $? -eq 0 ];then
      echo "Rsync_Status="SUCCESS"" >> $LogFile
      echo "rsync end,$(date +"%Y-%m-%d %H:%M:%S")" >>  $LogFile
    else
      echo "Rsync_Status="FAILED"" >> $LogFile
      echo "rsync end,$(date +"%Y-%m-%d %H:%M:%S")" >>  $LogFile
    fi
    ##拷贝日志文件到远程服务器
    rsync -rauvt --progress --password-file=/data/scripts/backup.pass $LogFile backup@异地备份服务器的ip::logs
    fi

    执行命令如需要备份/data/www下的code目录:
    sh back_files.sh /data/www code
    切记脚本运行前需要测试是否正常运行,要不导致数据备份失败。

    展开全文
  • 脚本可配合定时任务实现定期备份文件、并删除久远备份文件脚本中使用“年月日时分”作为备份文件名,并以此作为判断来配合设置的diff值删除久远的备份文件脚本中删除备份时间大于一天的备份文件
  • shell脚本备份文件夹及子文件

    千次阅读 2019-06-09 16:35:25
    shell脚本备份文件夹及子文件代码如下: 1、配置文件: backupFilePath=/wocloud/soft/tomcat/yearAppraiseTomcat/tomcat/webapps/yearAppraiseSys/upload saveBackupFilePath=/wocloud/db/jxFileBackups ...

    shell脚本备份文件夹及子文件代码如下:

    1、配置文件:

    backupFilePath=/wocloud/soft/tomcat/yearAppraiseTomcat/tomcat/webapps/yearAppraiseSys/upload
    saveBackupFilePath=/wocloud/db/jxFileBackups
    fileName=upload
    backupsFileDay=3
    

    2、代码:

    注意:不同linux设备的sh路径可能不同,需通过which sh查看sh的绝对路径修改即可。

    #!/bin/sh
    
    #db_backups_conf.txt文件路径
    db_backups_conf="/wocloud/shell/file_backups_conf.txt"
    
    #判断文件是否存在
    if [ -f "${db_backups_conf}" ];then
    	
    	echo $(date +'%Y-%m-%d %H:%M:%S')" 要备份的文件存在,开始进行文件备份"
    
    	#获取等号前内容,作为map中的Key值
    	dbArrOne=($(awk -F'[=]' '{print $1}' ${db_backups_conf} ))
    	
    	#获取等号后内容,作为map中的value值
    	dbArrTwo=($(awk -F'[=]' '{print $2}' ${db_backups_conf}))
    
    	#创建一个空map
    	declare -A map=()
    	
    	#通过循环,将db_backups_conf配置文件中的信息存储在map中
    	for((i=0;i<${#dbArrOne[@]};i++))
    	do
    		map[${dbArrOne[i]}]=${dbArrTwo[i]}
    	done	
    
    
    	#获取当前年月日
    	saveday=$(date +%Y%m%d)
    
    	#获取超出备份天数的年月日
    	delday=$(date -d ${map["backupsFileDay"]}' days ago' +%Y%m%d)
    
    	#备份文件
    	echo $(date +'%Y-%m-%d %H:%M:%S')" 备份文件:"${map["backupFilePath"]}
    	
    	#判断保存备份文件路径是否存在
    	if [ -f "|${map['saveBackupFilePath']}/${saveday}/${map['fileName']}_$(date +'%Y%m%d%H%M%S')" ];then
    		cp -f -r ${map["backupFilePath"]} ${map["saveBackupFilePath"]}/${saveday}/${map["fileName"]}_$(date +'%Y%m%d%H%M%S')/
       	else
    		mkdir -p ${map["saveBackupFilePath"]}/${saveday}/${map["fileName"]}_$(date +'%Y%m%d%H%M%S')
    		cp -f -r ${map["backupFilePath"]} ${map["saveBackupFilePath"]}/${saveday}/${map["fileName"]}_$(date +'%Y%m%d%H%M%S')/
    	fi
    	
    	#删除保存文件路径中n天前备份的数据文件
    	echo $(date +'%Y-%m-%d %H:%M:%S')" 删除备份文件:"${map["saveBackupFilePath"]}/${delday}
    	rm -f -r ${map["saveBackupFilePath"]}/${delday}
    	
    	echo $(date +'%Y-%m-%d %H:%M:%S')" 文件备份完毕,脚本执行完毕"
    
    else
    	echo "配置文件不存在"
    fi
    

    3、配置参数说明:

    参数意义如下:
    backupFilePath:备份文件夹的绝对路径
    saveBackupFilePath:保留备份文件的绝对路径
    fileName:备份文件夹名称,只能是一个目前
    backupsFileDay:保留备份文件的天数

    4、使用注意事项:

    使用注意事项:
    1、默认的是.sh、.txt文件都要放在/woclod/shell脚本下,如果放置的路径变了,需要修改.sh中读取.txt配置文件的路径

     

    展开全文
  • 假设有两台服务器: 192.168.0.1 原服务器 192.168.0.2 备份服务器 实现功能: 把192.168.0.1上的/opt...shell脚本如下: #!/bin/sh time1=$(date &quot;+%Y%m%d%H%M%S&quot;) cd /data/sys_bak mkd...
  • 主要介绍了shell备份文件、重命名文件、删除指定文件的3个脚本分享,是学习shell时的练习脚本,shell新手朋友可以参考下哦
  • 1,/var/stu下有sh与py脚本,使用shell脚本备份到个人目录下,被省略备份文件列表日志,以月份分开备份文件。 $ cat backupfile.sh #!/bin/bash # #定义备份源,目标,时间命名备份文件 # sourcePath="/var/stu" ...
  • shell脚本备份数据库

    千次阅读 2018-09-25 16:22:42
    程序文件(用户在shell脚本输入一系列的命令命令语句,(变量,流程控制语句,注释))linux命令shell脚本区别: Linux在linux命令模式下执行 Shell脚本通常是一个文件文件中包括各种命令命令语句 Shell规范...
  • #!/bin/bash cd /ftp_data date=date +%Y%m%d%H mkdir $date chown -R ftp_test:ftp /ftp_data for ip in cat /ftp_data/ip_list do address=echo $ip expect <...spawn telnet KaTeX parse error: Can't use ...
  • 备份和删除前两个月的备份文件 #!/bin/ sh source /etc/ profile #获取当前日期 ymd =` date +%Y%m% d`; #获取上2个月 historyTime =$( date " +%Y%m " -d ' 2 month ago ' ) #打印日期 echo ${history...
  • 备份文件shell脚本

    2014-12-21 14:21:35
    备份文件到指定FTP主机目录中,用户AIX服务器或UNIX服务器
  • Shell脚本-文件备份

    千次阅读 2020-01-27 16:09:07
    适用场景:需对脚本里的一些参数做配置,备份指定目录,tar压缩存放,通过scp将备份文件存放在另一台服务器。可自动执行,无执行周期设定。 #!/bin/bash source_dir= '/data/docj/' tar_file= 'attachment' ...
  • 主要介绍了Shell脚本自动删除指定大小以上的备份文件,使用本文脚本加入cron后,即可自动腾出空间,需要的朋友可以参考下
  • shell脚本备份oracle数据库

    千次阅读 2019-06-10 08:26:50
    shell脚本备份oracle数据库代码如下: 1、配置文件: username=SYSDBA password=123456 ipStr=192.168.99.164 portNumber=5327 serviceName=orcl directoryName=data_backup_dir backupsFileDay=3 expdpStr=/...
  • shell脚本备份国产达梦数据库代码如下: 1、配置文件: username=SYSDBA password=SSSTTTSSS ipStr=localhost portNumber=5327 backupsFileStr=/wocloud/db/backups logsFileStr=/wocloud/db/backups/dmDexpLogs ...
  • 目录 环境还原 环境创建 编写shell脚本 准备文件 创建shell脚本 执行shell脚本 进阶版 感谢 诚邀访问我的个人博客:我在马路边 更好的阅读体验点击查看原文:S...
  • Shell脚本备份数据库

    2019-09-26 10:40:26
    使用crontab 定时备份数据库 1. 编辑crontab 规则,定时执行脚本 2.在my.cnf 文件中加 ...3.编写shell脚本 mysqldump 数据库名 > /home/dbbackup/数据库名_`date +%Y-%m-%d_%H%M%S`.sql cd /home/d...
  • 编写shell脚本,每天凌晨1点备份td_oa库,到mysql-back目录,并将备份文件压缩,压缩名称为备份的日期,只保留连续七天的备份文件  #!/bin/bash /usr/local/mysql/bin/mysqldump -uroot -p123456 td_oa > td_oa....
  • Shell脚本的每行命令一定要在测试环境进行测试,否则会有意想不到的惊吓????,以下是showDocBackUp.sh的内容。 这里是纯净版本,修改地址就可以使用: #!/bin/bash cp /showdoc_data/...
  • shell命令备份数据库

    2018-12-18 18:45:35
    #!/bin/bash #数据库的备份 #2018-12-18 #备份的数据库名 MYSQLDB=blog ...MYSQLUSER=root ...MYSQLPWD=root #备份的文件名 BACKDIR=/usr/local/$...#mysql备份命令的地址 COMMAND=/usr/bin/mysqldump #判断是不是ro...
  • 如果我们需要提交或者备份代码,可以使用 git,但是如果是一些大的文件,需要定期的备份以及删除呢,我这里用到的是写一个shell 脚本,然后用 crontab 来每天定期执行。 下面以备份数据库文件为例,写一个shell 脚本...
  • linux环境中通过shell脚本备份mysql数据库shell脚本执行脚本注意点 shell脚本 #!/bin/bash ...DB_USER="root" ...DB_PASS="123456" ...#数据库所在服务器ip地址 ...#备份文件的存储位置 BCK_DIR="/home/sh

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 113,249
精华内容 45,299
关键字:

shell脚本备份文件