如何编写每 6 小时备份一次打印文档的脚本?

如何编写每 6 小时备份一次打印文档的脚本?

我目前正在做一个项目,需要使用 Ubuntu 18.04 在虚拟机上构建 Linux 网络。我目前正在尝试弄清楚如何编写一个脚本,每 6 小时备份一次打印的文档。我的问题是:我应该如何编写这个脚本?我的教授决定让我们自己寻找这些信息,但在互联网上很难找到一些指导。提前感谢任何能提供帮助的人!

编辑:

我知道如何利用 cron 实用程序让脚本每 6 小时运行一次。但我的问题是如何编写此脚本?我完全不知道该如何编写脚本。因此,如果要将文档打印到打印机,我如何编写脚本来支持从打印机打印的任何内容?

我的思路是这样的:我想创建一个脚本,这样每次打印内容时,内容都会进入一个文件夹,然后我可以将该文件夹保存下来并备份。这样听起来对吗?或者是否有日志文件可以自动执行此操作,而我所需要做的就是以某种方式从日志文件中获取它?

答案1

看一下lpqlpstat

  • lpq显示默认打印机上的排队作业,并lpq -l更详细地显示,请参阅man lpq
  • lpstat -o打印排队的作业,用于lpstat -Wcompleted -o已完成的作业,请参阅man lpstat

答案2

总结@qwr、@GeorgeUdosen 和@perlduck 的有用评论,您需要执行以下操作:

  • 编写一个脚本,使用各种备份命令行实用程序之一来备份文件
  • 测试该脚本直到其完美运行
  • 研究cron如何在特定时间执行命令。

答案3

/var/spool/ 传统上用于将机器本地数据假脱机到 UNIX 子系统或从 UNIX 子系统假脱机。

我给出的示例是针对 Ubuntu 18.04,我现在使用的是这个系统

所有打印作业都存储在/var/spool/cups目录(CUPS 是 Apple Inc. 开发的基于标准的开源打印系统),您需要 sudo 权限才能访问该目录。

在其他 Linux 系统上,打印作业将位于 /var/spool/lpd (打印机假脱机目录)

下面是一个非常简单的脚本,用于显示目录中的所有文件

#!/bin/bash

print_file_location="/var/spool/cups/*"

    for file in $print_file_location
    do 
        #this will print all the files in directory
        echo "$file"
    done

希望这对您的调查有帮助。

编辑:要将文件复制到新位置,您可以:

#!/bin/bash

print_file_location="/var/spool/cups/*"

for file in $print_file_location
do 
    #this will copy the files to a different directohory
    cp $file  "/home/print_backup/ $(basename $file).bak"
done

备份文件将具有与原始文件相同的权限

相关内容