我目前正在做一个项目,需要使用 Ubuntu 18.04 在虚拟机上构建 Linux 网络。我目前正在尝试弄清楚如何编写一个脚本,每 6 小时备份一次打印的文档。我的问题是:我应该如何编写这个脚本?我的教授决定让我们自己寻找这些信息,但在互联网上很难找到一些指导。提前感谢任何能提供帮助的人!
编辑:
我知道如何利用 cron 实用程序让脚本每 6 小时运行一次。但我的问题是如何编写此脚本?我完全不知道该如何编写脚本。因此,如果要将文档打印到打印机,我如何编写脚本来支持从打印机打印的任何内容?
我的思路是这样的:我想创建一个脚本,这样每次打印内容时,内容都会进入一个文件夹,然后我可以将该文件夹保存下来并备份。这样听起来对吗?或者是否有日志文件可以自动执行此操作,而我所需要做的就是以某种方式从日志文件中获取它?
答案1
看一下lpq
和lpstat
:
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
备份文件将具有与原始文件相同的权限