linux差量同步文件夹,shell周期差量备份文件夹的实现代码

本文介绍了一个Shell脚本,用于实现文件或文件夹的自动备份和增量备份功能。脚本接收参数,包括备份目录、备份名称、源文件或目录以及备份保留天数。如果超过设定的备份周期,脚本会执行全量备份,否则进行增量备份。此外,脚本还包含了任务调度配置,以便定期执行备份操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

shell脚本备份

创建备份脚本

backup.sh

#!/bin/sh

#$# 参数个数

#提示说明

if [ $# -lt 3 ]; then

echo "=============================================="

echo "usage: $0 ( commands ... )"

echo "commands:"

echo "example:"

echo " > $0 bakdir bakallname oridirorfile"

echo " bakdir:备份文件件"

echo " bakallname:完整备份的名称"

echo " oridirorfile:源文件或者文件夹"

echo "=============================================="

exit -1

fi

#将参数赋值给变量 = 两边不能有空格

bakdir="$1"

bakname="$2"

bakallname="$2.tar.gz"

oridirorfile="$3"

#保存天数 默认7天超过指定天数重新 全量备份

if [ -n $4 ];then

bakdays=7

else

bakdays=$4

fi

echo $bakallname

echo $bakdir

#判断全量备份文件是否存在

if [ ! -f "$bakdir$bakallname" ];then

#如果没有全量备份份文件

echo "--------all-bak---------"

bakdir=$bakdir$bakallname

zl=""

else

#已经备份了全量

#获取全量备份的时间

bakalldate="`ls --full-time $bakdir$bakallname |cut -d ' ' -f 6`"

#获取当前时间

nowdate=`date "+%y-%m-%d"`

#算出时间差单位是秒

senconds=$(($(date +%s -d $nowdate) - $(date +%s -d $bakalldate)));

#计算出天

day=$(($senconds/60/60/24))

#增量备份但是超过备份时间需要跟新全量的备份

if [ $day -gt $bakdays ];then

echo "备份时间已经超过备份周期了"

bakdir=$bakdir$bakallname

else

echo "还没超过备份周期"

echo " temp-bak"

#增量备份文件地址

tempdir="$bakdir$bakname`date '+%m-%d'`.tar.gz"

#获取全量备份文件的日期

comparedate="`ls --full-time $bakdir$bakallname |cut -d ' ' -f 6`"

echo "$comparedate"

#获取全量备份文件的时间

comparetime="`ls --full-time $bakdir$bakallname |cut -d ' ' -f 7`"

echo "$comcomparetime"

#shell 格式转换成yyyy-mm-dd hh:mm:ss

comparetime=`date -d $comparetime "+%f %t"`

echo "$comparetime"

#差量备份比较时间基准

zl="-n "$comparetime""

bakdir=$tempdir

fi

fi

echo "--------start-bak---------"

echo $zl

echo "$bakdir"

#使用tar差量打压缩包

tar "$zl" -czvf $bakdir $oridirorfile

创建任务调度

创建可执行文件

touch execbakup.sh

chmod u+xrw execbakup.sh

添加内容

sh backup.sh /opt/bak/ tomcattest /home/oridir 5

/opt/bak/:你的备份需要放置的位置

tomcattest:你的备份名称

/home/oridir:需要备份的文件夹

5:备份周期

编辑任务调度

crontab -e

秒 时 日 月 周

0 02 * * * sh /opt/execbakup.sh >> $(date "+%y-%m-%d".log)

每天凌晨 2点 执行execbakup.sh

说明

参数说明:

$#:添加的参数个数。

$1~$n:添加到shell的各参数值

$0:shell本身的文件名

$*和$@:传递给脚本或函数的所有参数。

增量备份:

tar -cvzf text.tar.gz /bak -n i_time

i_time是时间点

获取文件时间:

ls --full-time $bakdir$bakallname |cut -d ' ' -f 6

ls --full-time text.txt:显示文件完整时间

cut -d ' ' -f 6空格分隔 显示第6列

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持萬仟网。

在机器人操作系统(ROS)中,机器视觉是机器人感知和理解周围环境的关键技术。robot_vision功能包专注于这一领域,集成了多种视觉处理技术,包括摄像头标定、OpenCV库应用、人脸识别、物体跟踪、二维码识别和物体识别,极大地拓展了ROS在视觉应用方面的能力。 摄像头标定:作为机器视觉的基础,摄像头标定用于消除镜头畸变并获取相机的内参和外参。在ROS中,camera_calibration包提供了友好的用户界面和算法,帮助计算相机参数矩阵,为后续的图像校正和三维重建提供支持。 OpenCV:OpenCV是一个广泛使用的开源计算机视觉库,在ROS中扮演着重要角色。robot_vision功能包可能包含OpenCV的示例代码和节点,涵盖图像处理、特征检测、模板匹配和图像分割等功能,这些功能对机器人视觉系统至关重要。 人脸识别:ROS中的人脸识别结合了图像处理和机器学习技术。robot_vision可能集成了基于OpenCV的人脸检测算法,如Haar级联分类器或Adaboost方法,甚至可能包含深度学习模型(如FaceNet或SSD),帮助机器人实现人脸的识别和跟踪,提升人机交互能力。 物体跟踪:物体跟踪使机器人能够持续关注并追踪特定目标。在ROS中,通常通过卡尔曼滤波器、粒子滤波器或光流法实现。robot_vision功能包可能包含这些算法的实现,助力机器人完成动态目标跟踪任务。 二维码识别:二维码是一种高效的信息编码方式,常用于机器人定位和导航。ROS中的二维码包可用于读取和解析二维码,而robot_vision可能进一步封装了这一功能,使其更易于集成到机器人系统中。 物体识别:作为机器视觉的高级应用,物体识别通常涉及深度学习模型,如YOLO、SSD或Faster R-CNN。robot_vision功能包可能包含预训练的模型和对应的ROS节点,使机器人能够识别环境中的特
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值