热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

linuxubuntucrontab定时执行shell脚本数据备份遇到的坑

要求编写备份服务,每隔2个小时,将/home/user/loc

要求编写备份服务,每隔2个小时,将 /home/user/local/data 文件夹的数据拷贝到 /home/user/backup 下面,并且将备份时间和文件名称列表写入到 /home/user/list 文件。

以上的‘user’ 就是系统对应的用户名,本文用的是‘levant’

一、创建相对应的文件夹

先 sudo su 一下
在这里插入图片描述
在、/local/data 下新建几个文件,比如我建的是这几个
在这里插入图片描述
建立backup文件夹用来备份
在这里插入图片描述
建立list记录备份时间和文件名称

在这里插入图片描述

二、开始写shell脚本

在这里插入图片描述

注意:要使用绝对路径

# 复制文件data文件夹下所有文件到backup文件夹
cp -r /home/levant/local/data/* /home/levant/backup
# 记录备份的时间
#这里需要注意两个点:
#1、date和>>左边的符号不是单引号 是反角符号
#2、date 和右边的单引号要有空格
echo `date '+%Y-%m-%d %H:%M:%S'`>>/home/levant/list
#获取文件名称函数
function get_dir(){
for ele in `ls $1`
do
file=$1"/"$ele
# -d if $file is directory then the condition is ture
if [ -d $file ]
then
get_dir $file
else
echo $file>>$output_file
fi
done
}
input_dir="/home/levant/local/data"
output_file="/home/levant/list"
get_dir $input_dir

三、使用crontab进行定时备份操作

1、安装(我用的是ubuntu,centOS的会有不同,请百度)

安装:apt-get install cron
启动:service cron start
重启:service cron restart
停止:service cron stop
检查状态:service cron status
查询cron可用的命令:service cron
检查Cronta工具是否安装:crontab -l

2、启动crontab后开始编写

crontab -e

选择 vim 编译器

在这里插入图片描述

* * * * * /home/levant/local/backup.sh >> /home/levant/local/a.log 2>&1 &

前面五个星号是时间的设置,为了方便调试,我这里设置的是每分钟备份一次,其他时间请自己百度一下
注意,一定要使用绝对路径。
另外,>>后边的 /home/levant/local/a.log 是存日志的文件,执行后crontab会自动建立,2>&1 & 是指正确的错误的都打印在日志上。

四、查看结果

你可以使用 service cron restart去重启一下crontab,这样就可以马上运行,不然可能要等两三分钟才能运行。
回到 /levant 目录下,cat 一下list
在这里插入图片描述
这里已经显示是每分钟备份一次了
去backup文件夹下看看有没有文件
在这里插入图片描述
文件已备份成功

五、总结

问题一般出现在shell脚本的编写和编写crontab的作业上,前者请仔细阅读我在脚本里的注释,最重要的就是涉及目录的要使用绝对路径。


版权声明:本文为weixin_45728842原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_45728842/article/details/120359677
推荐阅读
  • 为了确保iOS应用能够安全地访问网站数据,本文介绍了如何在Nginx服务器上轻松配置CertBot以实现SSL证书的自动化管理。通过这一过程,可以确保应用始终使用HTTPS协议,从而提升数据传输的安全性和可靠性。文章详细阐述了配置步骤和常见问题的解决方法,帮助读者快速上手并成功部署SSL证书。 ... [详细]
  • 本文详细介绍了如何在 Linux 系统上安装 JDK 1.8、MySQL 和 Redis,并提供了相应的环境配置和验证步骤。 ... [详细]
  • 在 CentOS 6.4 上安装 QT5 并启动 Qt Creator 时,可能会遇到缺少 GLIBCXX_3.4.15 的问题。这是由于系统中的 libstdc++.so.6 版本过低。本文将详细介绍如何通过更新 GCC 版本来解决这一问题。 ... [详细]
  • 本文介绍了 Linux 系统中用于定期执行任务的 cron 服务及其配置方法。通过 crond 和 crontab 命令,用户可以轻松地安排系统和用户级别的周期性任务。 ... [详细]
  • 在 Ubuntu 中遇到 Samba 服务器故障时,尝试卸载并重新安装 Samba 发现配置文件未重新生成。本文介绍了解决该问题的方法。 ... [详细]
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • 在CentOS 7环境中安装配置Redis及使用Redis Desktop Manager连接时的注意事项与技巧
    在 CentOS 7 环境中安装和配置 Redis 时,需要注意一些关键步骤和最佳实践。本文详细介绍了从安装 Redis 到配置其基本参数的全过程,并提供了使用 Redis Desktop Manager 连接 Redis 服务器的技巧和注意事项。此外,还探讨了如何优化性能和确保数据安全,帮助用户在生产环境中高效地管理和使用 Redis。 ... [详细]
  • SecureCRT是一款功能强大的终端仿真软件,支持SSH1和SSH2协议,适用于在Windows环境下高效连接和管理Linux服务器。该工具不仅提供了稳定的连接性能,还具备丰富的配置选项,能够满足不同用户的需求。通过SecureCRT,用户可以轻松实现对远程Linux系统的安全访问和操作。 ... [详细]
  • PHP预处理常量详解:如何定义与使用常量 ... [详细]
  • 在Ubuntu系统中安装Android SDK的详细步骤及解决“Failed to fetch URL https://dlssl.google.com/”错误的方法
    在Ubuntu 11.10 x64系统中安装Android SDK的详细步骤,包括配置环境变量和解决“Failed to fetch URL https://dlssl.google.com/”错误的方法。本文详细介绍了如何在该系统上顺利安装并配置Android SDK,确保开发环境的稳定性和高效性。此外,还提供了解决网络连接问题的实用技巧,帮助用户克服常见的安装障碍。 ... [详细]
  • `chkconfig` 命令主要用于管理和查询系统服务在不同运行级别中的启动状态。该命令不仅能够更新服务的启动配置,还能检查特定服务的当前状态。通过 `chkconfig`,管理员可以轻松地控制服务在系统启动时的行为,确保关键服务正常运行,同时禁用不必要的服务以提高系统性能和安全性。本文将详细介绍 `chkconfig` 的各项参数及其使用方法,帮助读者更好地理解和应用这一强大的系统管理工具。 ... [详细]
  • 在 CentOS 7 中,为了扩展可用软件包的数量,通常需要配置多个第三方软件源。这些第三方源包括 EPEL、Nux Dextop 和 ELRepo 等,它们提供了大量官方源中未包含的软件包,从而增强了系统的功能性和灵活性。通过正确配置这些源,用户可以轻松安装和管理更多种类的软件,满足不同的需求。 ... [详细]
  • 技术日志:Ansible的安装及模块管理详解 ... [详细]
  • 用阿里云的免费 SSL 证书让网站从 HTTP 换成 HTTPS
    HTTP协议是不加密传输数据的,也就是用户跟你的网站之间传递数据有可能在途中被截获,破解传递的真实内容,所以使用不加密的HTTP的网站是不 ... [详细]
  • 浏览器作为我们日常不可或缺的软件工具,其背后的运作机制却鲜为人知。本文将深入探讨浏览器内核及其版本的演变历程,帮助读者更好地理解这一关键技术组件,揭示其内部运作的奥秘。 ... [详细]
author-avatar
逝水无痕--
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有