在Linux系统中简单地实现定时备份的方法

   运行一个简单的脚本

  假设你有一个脚本叫:/usr/local/bin/myscript ,你想要每隔一小时就运行一次。

  Service 文件

  第一步,创建一个service文件,根据你Linux的发行版本放到相应的系统目录(在Arch中,这个目录是/etc/systemd/system/ 或 /usr/lib/systemd/system)

  myscript.service

  代码如下:

  [Unit]

  Description=MyScript

  [Service]

  Type=simple

  ExecStart=/usr/local/bin/myscript

  注意,务必将Type变量的值设置为"simple"而不是"oneshot"。使用"oneshot"使得脚本只在第一次运行,之后系统会认为你不想再次运行它,从而关掉我们接下去创建的定时器(Timer)。

  Timer 文件

  第二步,创建一个timer文件,把它放在第一步中service文件放置的目录。

  myscript.timer

  代码如下:

  [Unit]

  Description=Runs myscript every hour

  [Timer]

  # 首次运行要在启动后10分钟后

  OnBootSec=10min

  # 每次运行间隔时间

  OnUnitActiveSec=1h

  Unit=myscript.service

  [Install]

  WantedBy=multi-user.target

  授权 / 运行

  授权并运行的是timer文件,而不是service文件。

  代码如下:

  # 以 root 身份启动定时器

  systemctl start myscript.timer

  # 在系统引导起来后就启用该定时器

  systemctl enable myscript.timer

  在同一个Timer上运行多个脚本

  现在我们假设你在相同时间想要运行多个脚本。这种情况,你需要在上面的文件中做适当的修改。

  Service 文件

  创建你的service文件来运行你的脚本,但是在每个service 文件最后都要包含下面的内容:

  代码如下:

  [Install]

  WantedBy=mytimer.target

  如果在你的service 文件中有一些依赖顺序,确保你使用Description字段中的值具体指定After=something.service和Before=whatever.service中的参数。

  另外的一种选择是(或许更加简单),创建一个包装脚本来使用正确的顺序来运行命令,并在你的service文件中使用这个脚本。

  Timer 文件

  你只需要一个timer文件,创建mytimer.timer,像我在上面指出的。

  target 文件

  你可以创建一个以上所有的脚本依赖的target文件。

  mytimer.target

  代码如下:

  [Unit]

  Description=Mytimer

  # Lots more stuff could go here, but it's situational.

  # Look at systemd.unit man page.

  授权 / 启动

  你需要将所有的service文件和timer文件授权。

  代码如下:

  systemctl enable script1.service

  systemctl enable script2.service

  ...

  systemctl enable mytimer.timer

  systemctl start mytimer.service

  Good luck.

时间: 2024-10-29 03:30:25

在Linux系统中简单地实现定时备份的方法的相关文章

在Linux系统中存储设备的两种表示方法

摘要: 硬盘和硬盘分区在Linux都表示为设备,按我们通俗的说法来说,就是怎么来表示或描述硬盘和或硬盘分区,但这种描述应该是科学和具体的:比如IDE硬盘,在Linux 可以表示为 /dev/hda./dev/hdb ... :SCSI 接口的硬盘.SATA接口的硬盘表示为/dev/sda./dev/sdb ... ... :而IDE接口的硬盘/dev/hda,也可以表示为hd0 ,而 SCSI 接口的如果是 /dev/sda ,另一种表示方法是sd0: 理解两种表示方法有何用?至少GRUB引导管

在Linux系统中批量删除多个文件的方法总结

  当我们在linux系统中要删除数万或者数十万甚至数百万的文件时使用rm -rf *就不太好用,因为要等待很长一段时间.在这种情况之下我们可以使用linux系统命令rsync来巧妙的处理.rsync实际上用的是替换原理,处理数十万个文件也是秒删. 1. rsync安装,有些系统默认安装有该命令 ubuntu系统: 代码如下: sudo apt-get install rsync fedora 系统: 代码如下: sudo yum install rsync 其他的可以源码安装,到下面的网站下载

在Linux系统中修改文本的字符编码的方法

  正如我们所知道的那样,电脑只能够处理低级的二进制值,并不能直接处理字符.当一个文本文件被存储时,文件中的每一个字符都被映射成二进制值,实际存储在硬盘中的正是这些"二进制值".之后当程序打开文本文件时,所有二进制值都被读入并映射回原始的可读字符.只有当所有需要访问这个文件的程序都能够"理解"它的编码,即二进制值到字符的映射时,这个"保存和打开"的过程才能很好地完成,这也确保了可理解数据的往返过程. 如果不同的程序使用不同的编码来处理同一个文件,

linux系统中VNC远程桌面安装和配置方法详解

具体方法 1.检查linux系统是否安装VNC命令rpm -q vnc-server 如果没有安装则使用yum install vnc vnc-server 2.启动vnc服务  代码如下 复制代码 vncserver You will require a password to access your desktops. Password: Verify: 输入两次密码,这个就是你远程登陆时所需要的密码. 3.修改配置文件,root账户下  代码如下 复制代码 vi /etc/sysconfi

Linux系统中修改与查看文件属性的基本方法

chattr chattr 修改文件在Linux第二扩展文件系统(E2fs)上的特有属性 符号模式有+-=[ASacdisu]几种格式. 操作符`+'用来在文件已有属性的基础上增加选定的属性; `-'用来去掉文件上的选定的属性;而`='用来指定该文件的唯一属性. 字符`ASacdisu'用作文件新属性的选项: 不更新atime(A),同步更新(S),只能添加(a), 压缩(c),不可变(i),不可转移(d),删除保护(s)以及不可删除(u). -R 递归地修改目录以及其下内容的属性. 如果在递归

设置自动清理Linux系统中n天前的文件的方法

  服务器每周会产生一次全局备份文件,大小约100G左右,需要定期清理. 工作时间网站访问大,服务器I/O高的时候删除大数据会对服务器状态产生不好的影响.于是想利用计划任务自动执行. 在我的备份目录/bakcup下,每次备份文件均以日期形式命名目录名: 代码如下: # ls 2013-12-23 2014-01-06 2014-01-20 2014-02-03 2013-12-30 2014-01-13 2014-01-27 2014-02-10 删除部分备份同时保留部分,可以使用find命令,

Linux系统中查看硬件信息与运行状态的方法总结

1,查看磁盘 代码如下: df -h 2,查看内存大小 代码如下: free free [-m|g] 按MB,GB显示内存 代码如下: vmstat 3,查看cpu 代码如下: cat /proc/cpuinfo 只看cpu数量grep "model name" /proc/cpuinfo | wc -l 4,查看系统内存 代码如下: cat /proc/meminfo 5,查看每个进程的情况 代码如下: cat /proc/5346/status 5347是pid 6,查看负载 w

查找Linux系统中的大文件和大目录方法

  查找大文件 eg:查找当前目录下大于10MB的文件 代码如下: $ find . -type f -size +10000k -exec ls -lh {} ; | awk '{ print $8 ": " $5 }' Sample output: ./.kde/share/apps/akregator/Archive/http___blogs.msdn.com_MainFeed.aspx?Type=AllBlogs.mk4: 91M ./out/out.tar.gz: 828M

linux系统中SecureCRT上传下载文件使用方法

1.在securecrt设置下载上传路径,位于: 英文版 options - session options - X/Y/Zmodem. 中文版 选项- 会话选项- X/Y/Zmodem 2.securct命令 sz用法(send相对于服务器): 下载一个文件 sz filename  下载多个文件 sz filename1 filename2 下载test目录下的所有文件,不包含test的文件夹 sz test/* rz用法(received相对于服务器): 进入要上传到的文件夹,然后输入rz