Сzsh
:
dirs_to_archive=(some/dir /some/other/dir and/more/dirs)
existing_dirs=($^dirs_to_archive(/N))
if (($#existing_dirs)); then
tar -cf - -- $existing_dirs | xz > file.tar.xz
else
echo >&2 Error: none of the dirs were found
fi
Эквивалент POSIX (, хотя обратите внимание, что ни tar
, ни xz
не являются командами POSIX. )будет чем-то вроде:
# The list of dirs in "$@" (the only array in POSIX sh language)
set -- some/dir /some/other/dir and/more/dirs
for dir do
# remove from the array the elements that are not directories like with
# zsh's / glob qualifier above
[ -d "$dir" ] && [ ! -L "$dir" ] && set -- "$@" "$dir"
shift
done
if [ "$#" -gt 0 ]; then
tar -cf - -- "$@" | xz > file.tar.xz
else
echo >&2 Error: none of the dirs were found
fi
Проверьте отметку времени модификации файла /etc/printcap
. Если он старше текущего времени безотказной работы сервера, то, возможно, он был написан более старой версией CUPS, и текущая версия могла просто не обновить его при запуске -по какой-то причине.
Вы также можете попробовать удалить файл printcap и перезапустить CUPS. По крайней мере, в Debian 11,текущий CUPS, кажется, создает файл, если он не существует, но не обновляет его, если он существует, но устарел.
Очевидно, из-за этого /etc/printcap
теперь является символической ссылкой на /run/cups/printcap
в Debian 11, а поскольку /run
является файловой системой tmpfs, она, очевидно, не переживет перезагрузку.
systemctl stop cups
mv /etc/printcap /etc/printcap.old
systemctl start cups
diff -u /etc/printcap.old /etc/printcap
/etc/printcap
автоматически -генерируетсяcupsd
-и предназначен для совместимости с печатью BSD, поэтому вы не редактируете файл напрямую при использовании CUPS.
# mv /etc/printcap{,.bk}
# systemctl restart cups
# ls -l /etc/printcap{,.bk}
-rw-r--r-- 1 root root 261 Aug 31 09:51 /etc/printcap
-rw-r--r-- 1 root root 261 Jul 18 08:02 /etc/printcap.bk