我已经成功地让 Samba 和 CUPS 协同工作,为 Windows 客户端(自 95 以来的任何变体的 IA32 和 x64)提供良好、一致的打印界面,仅使用 Postscript 驱动程序。 smb.conf 的打印相关部分是:
[global]
load printers = yes
printing = cups
printcap name = cups
Run Code Online (Sandbox Code Playgroud)
后来这些分享:
[printers]
comment = All Printers
browseable = no
path = /var/spool/samba
printable = yes
guest ok = no
read only = yes
create mask = 0700
[print$]
comment = Printer Drivers
path = /var/lib/samba/printers
browseable = yes
read only = yes
guest ok = no
Run Code Online (Sandbox Code Playgroud)
这成功地枚举了所有 CUPS 打印机,并且客户端可以正常打印。
我遇到的问题是,Windows 客户端除了自己的作业之外几乎看不到队列中的任何作业,而且只在很短的时间内看到,大概是在作业假脱机到服务器时。这会产生连锁反应,如果有人想取消其中一项工作,他们要么关闭打印机电源(!),要么要求我这样做。
我的印象是, …
不幸的是,我别无选择,只能将服务器上的 ext3 分区中的一些文件备份到不允许我设置和编辑正常文件属性的文件系统(NFS,将 all_squash 设置为 chgrp/chown 等,即使 root 是被禁止的) )。我计划使用 rsnapshot 进行实际备份,因为我已经熟悉这一点并且它在其他场景中运行良好。
显然,我希望以某种方式保留这些备份的权限、所有权和其他属性,即使它不直接与文件本身有关。在我看来,剩下三个选项:
这些都不理想:
find+stat会有点浪费,但更重要的是从该信息中恢复会很繁琐。我可以编写一个小工具(在 C 中)来调用stat,将结构转储到文件并从该结构中恢复适当的信息,但这对于一些应该是微不足道的事情来说似乎是很多工作。建议?我倾向于解决方案 #3,除非它已经存在或者 #2 比我认为的更琐碎。我想要一些不需要重新发明任何轮子的简单而强大的东西,但是如果它们真的有用,我愿意编写新的轮子。
backup filesystems permissions backup-restoration file-permissions